Start · Sprachen · JavaScript · Referenz · PaymentAddress.phone

PaymentAddress.phone

Eigenschaft

Schreibgeschützte Eigenschaft, die die Telefonnummer des Empfängers oder der Kontaktperson einer <code>PaymentAddress</code> als String liefert.

seit JavaScript Veraltet; nur Chromium-basierte Browser (dort inzw deprecated seit ja Kategorie: webapi

Signatur

PaymentAddress.phone

Beschreibung

Die Eigenschaft phone gehört zum PaymentAddress-Interface der Payment Request API. Sie enthält die Telefonnummer, die der Nutzer zusammen mit der Liefer- oder Rechnungsadresse im Bezahldialog des Browsers angegeben hat. Das ist nützlich, wenn der Paketdienst den Empfänger bei der Zustellung erreichen muss.

Ein PaymentAddress-Objekt bekommst du vor allem über PaymentResponse.shippingAddress, nachdem der Nutzer die Zahlung bestätigt hat. Während des Dialogs bekommst du es außerdem über PaymentRequest.shippingAddress im Ereignis shippingaddresschange. Damit eine Lieferadresse abgefragt wird, musst du im Optionsobjekt von new PaymentRequest() den Wert requestShipping: true setzen.

Der Wert ist ein einfacher String. Die Spezifikation empfiehlt das internationale Format nach E.164, zum Beispiel "+4930123456". Verlassen kannst du dich darauf aber nicht. Hat der Nutzer keine Nummer angegeben, ist der Wert ein leerer String.

Brauchst du die Telefonnummer der zahlenden Person und nicht die des Empfängers, verwende besser die Option requestPayerPhone: true und lies den Wert aus PaymentResponse.payerPhone.

Rückgabewert

Typ
string
Beschreibung
Die Telefonnummer des Empfängers, möglichst im Format E.164 (z. B. "+491701234567"). Ein leerer String, wenn keine Nummer vorhanden ist oder der Browser sie aus Datenschutzgründen entfernt hat.

Beispiele

Telefonnummer des Empfängers nach der Zahlung auslesen

const methods = [{ supportedMethods: 'https://google.com/pay', data: { /* Konfiguration */ } }];
const details = {
  total: { label: 'Gesamt', amount: { currency: 'EUR', value: '49.90' } },
  shippingOptions: [{ id: 'std', label: 'Standard', amount: { currency: 'EUR', value: '0.00' }, selected: true }]
};

const checkout = async () => {
  const request = new PaymentRequest(methods, details, { requestShipping: true });
  const response = await request.show();
  const phone = response.shippingAddress?.phone ?? '';
  console.log(phone ? `Empfänger-Telefon: ${phone}` : 'Keine Telefonnummer angegeben');
  await response.complete('success');
};

document.querySelector('#buy').addEventListener('click', checkout);
Empfänger-Telefon: +491701234567

Telefonnummer vor dem Senden an den Server prüfen

const isE164 = (value) => /^\+[1-9]\d{6,14}$/.test(value);

const buildOrder = (response) => {
  const { shippingAddress } = response;
  const phone = shippingAddress.phone.replace(/[\s()-]/g, '');
  return {
    recipient: shippingAddress.recipient,
    city: shippingAddress.city,
    phone: isE164(phone) ? phone : null // ungültige Nummer nicht übernehmen
  };
};

// Test mit einem nachgebauten Antwortobjekt
console.log(buildOrder({ shippingAddress: { recipient: 'Erika Muster', city: 'Berlin', phone: '+49 30 123456' } }));
{ recipient: 'Erika Muster', city: 'Berlin', phone: '+4930123456' }

Verhalten im Ereignis shippingaddresschange

const request = new PaymentRequest(methods, details, { requestShipping: true });

request.addEventListener('shippingaddresschange', (event) => {
  // Aus Datenschutzgründen ist phone hier meist leer
  console.log('phone während der Auswahl:', JSON.stringify(request.shippingAddress.phone));
  event.updateWith({ ...details });
});
phone während der Auswahl: ""

// Wichtig · Fallstricke

  • Veraltet: PaymentAddress wurde aus der Payment-Request-Spezifikation entfernt. Chromium führt das Interface als ContactAddress weiter. Firefox und Safari unterstützen es nicht (Safari bietet nur Apple Pay mit eigener Datenstruktur). Prüfe die Verfügbarkeit mit 'PaymentRequest' in window und plane immer ein normales Formular als Ausweichlösung ein.
  • Datenschutz: Im Ereignis shippingaddresschange entfernen Browser sensible Felder wie phone, recipient und addressLine, meist bleibt ein leerer String übrig. Die vollständige Nummer ist erst in PaymentResponse.shippingAddress verfügbar.
  • Das Format ist nicht garantiert. Normalisiere und prüfe die Nummer immer auf dem Server und vertraue dem Wert aus dem Browser nicht blind.
  • Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert bzw. löst im Strict Mode einen TypeError aus.
  • Die Payment Request API funktioniert nur in sicheren Kontexten (HTTPS).