Start · Sprachen · JavaScript · Referenz · PaymentResponse.payerEmail

PaymentResponse.payerEmail

Eigenschaft

Die schreibgeschützte Eigenschaft <code>payerEmail</code> liefert die E-Mail-Adresse, die der Nutzer im Zahlungsdialog angegeben hat, oder <code>null</code>.

seit JavaScript Payment Request API – Chromium-Browser (Chrome, Ed Kategorie: webapi

Signatur

PaymentResponse.payerEmail

Beschreibung

Die Eigenschaft payerEmail eines PaymentResponse-Objekts enthält die E-Mail-Adresse, die der Käufer im nativen Zahlungsdialog des Browsers gewählt oder eingegeben hat. Du brauchst sie zum Beispiel für Bestellbestätigungen, Rechnungen oder um den Käufer einem Kundenkonto zuzuordnen.

Ein Wert kommt nur dann an, wenn du ihn beim Erzeugen des PaymentRequest ausdrücklich anforderst. Dazu setzt du in den Optionen (drittes Argument des Konstruktors) requestPayerEmail: true. Ohne diese Option ist payerEmail immer null.

Die Eigenschaft kann nur gelesen werden. Korrigiert der Nutzer seine Angaben nach einem Aufruf von PaymentResponse.retry(), wird der Wert aktualisiert und das Ereignis payerdetailchange ausgelöst. Dann solltest du die Adresse noch einmal prüfen.

Rückgabewert

Typ
string | null
Beschreibung
Die E-Mail-Adresse des Käufers als Zeichenkette oder null, wenn sie nicht mit requestPayerEmail angefordert wurde.

Beispiele

E-Mail-Adresse beim Bezahlen anfordern und auslesen

const methods = [{ supportedMethods: 'https://example.com/pay' }];
const details = {
  total: { label: 'Gesamt', amount: { currency: 'EUR', value: '19.99' } }
};
const options = { requestPayerEmail: true, requestPayerName: true };

const checkout = async () => {
  const request = new PaymentRequest(methods, details, options);
  const response = await request.show();
  console.log('E-Mail des Käufers:', response.payerEmail);
  await response.complete('success');
};

document.querySelector('#buy').addEventListener('click', checkout);
E-Mail des Käufers: max.mustermann@example.com

Ohne requestPayerEmail ist der Wert null

const request = new PaymentRequest(
  [{ supportedMethods: 'https://example.com/pay' }],
  { total: { label: 'Spende', amount: { currency: 'EUR', value: '5.00' } } }
);

const response = await request.show();
console.log(response.payerEmail);
await response.complete('success');
null

Adresse auf dem Server prüfen und bei Fehler retry() aufrufen

const validateAndComplete = async (response) => {
  const res = await fetch('/api/check-email', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ email: response.payerEmail })
  });
  const { valid } = await res.json();

  if (!valid) {
    // Nutzer bitten, die E-Mail-Adresse zu korrigieren
    await response.retry({ payer: { email: 'Diese E-Mail-Adresse ist ungültig.' } });
    return validateAndComplete(response);
  }
  await response.complete('success');
};

const request = new PaymentRequest(
  [{ supportedMethods: 'https://example.com/pay' }],
  { total: { label: 'Abo', amount: { currency: 'EUR', value: '9.00' } } },
  { requestPayerEmail: true }
);
const response = await request.show();
response.addEventListener('payerdetailchange', () => {
  console.log('Neue E-Mail:', response.payerEmail);
});
await validateAndComplete(response);
Neue E-Mail: korrigiert@example.com

// Wichtig · Fallstricke

  • Nur mit Option: Ohne requestPayerEmail: true in den PaymentRequest-Optionen ist der Wert immer null.
  • Nicht blind vertrauen: Der Browser liefert die Adresse so, wie der Nutzer sie eingegeben hat. Prüfe sie deshalb immer auf dem Server. Wenn du die Adresse in HTML ausgibst, musst du sie maskieren (XSS). Setze sie nie ungeprüft per innerHTML ein.
  • Datenschutz: Die E-Mail-Adresse ist ein personenbezogenes Datum. Fordere sie nur an, wenn du sie wirklich brauchst (DSGVO).
  • Sicherer Kontext: Die Payment Request API gibt es nur über HTTPS. show() muss durch eine Nutzeraktion ausgelöst werden, etwa durch einen Klick.
  • Browser-Kompatibilität: Wird von Chromium-Browsern und Safari unterstützt. In Firefox ist die API standardmäßig nicht aktiviert. Prüfe vorher mit 'PaymentRequest' in window, ob sie verfügbar ist, und biete sonst ein normales Formular an.