Signatur
Beschreibung
Die Eigenschaft organization des Interfaces PaymentAddress ist schreibgeschützt. Sie enthält den Namen der Organisation, Firma, des Unternehmens oder der Institution, die zur Adresse gehört, z. B. "Muster GmbH". Hat der Nutzer keine Organisation angegeben, ist der Wert ein leerer String.
Sie begegnet Ihnen vor allem im Checkout über die Payment Request API. Wenn Sie beim Erzeugen eines PaymentRequest die Option requestShipping: true setzen, liefert der Browser nach der Bestätigung durch den Nutzer in PaymentResponse.shippingAddress ein PaymentAddress-Objekt. Dasselbe Objekt finden Sie beim Ereignis shippingaddresschange in PaymentRequest.shippingAddress.
Typische Anwendungsfälle sind B2B-Shops, in denen der Firmenname auf Rechnung oder Lieferschein stehen muss, und die Frage, ob eine Lieferung an eine Geschäftsadresse geht (z. B. wegen der Zustellzeiten).
Beachten Sie: Im Ereignis shippingaddresschange können Browser aus Datenschutzgründen eine gekürzte Adresse übergeben. Dann ist organization oft leer. Den vollständigen Wert gibt es verlässlich erst nach show() in der PaymentResponse.
Rückgabewert
"", wenn keine angegeben wurde oder der Browser den Wert zurückhält.Beispiele
Firmennamen aus der Lieferadresse lesen
const methods = [{ supportedMethods: 'https://example.com/pay' }];
const details = {
total: { label: 'Summe', amount: { currency: 'EUR', value: '49.90' } },
shippingOptions: [{
id: 'standard', label: 'Standardversand', selected: true,
amount: { currency: 'EUR', value: '0.00' }
}]
};
const checkout = async () => {
const request = new PaymentRequest(methods, details, { requestShipping: true });
const response = await request.show();
const { organization, recipient } = response.shippingAddress;
console.log(organization ? `Lieferung an: ${organization} (z. Hd. ${recipient})` : `Lieferung an: ${recipient}`);
await response.complete('success');
};
document.querySelector('#buy').addEventListener('click', checkout);
Geschäftsadresse beim Adresswechsel erkennen
const request = new PaymentRequest(
[{ supportedMethods: 'https://example.com/pay' }],
{ total: { label: 'Summe', amount: { currency: 'EUR', value: '120.00' } } },
{ requestShipping: true }
);
request.addEventListener('shippingaddresschange', (event) => {
// Wert kann hier leer sein, weil der Browser die Adresse kürzt
const isBusiness = request.shippingAddress?.organization?.trim() !== '';
console.log('Geschäftsadresse:', isBusiness);
event.updateWith({
total: { label: 'Summe', amount: { currency: 'EUR', value: '120.00' } },
shippingOptions: [{
id: isBusiness ? 'b2b' : 'privat',
label: isBusiness ? 'Geschäftskunden-Versand' : 'Standardversand',
selected: true,
amount: { currency: 'EUR', value: isBusiness ? '0.00' : '4.90' }
}]
});
});
request.show().then((res) => res.complete('success'));
Sicherer Zugriff mit Feature-Prüfung
const getOrganization = (address) => {
if (!address || !('organization' in address)) return null;
return address.organization || null;
};
// Beispiel mit einem serialisierten Adressobjekt
const address = { organization: 'Stadtwerke Beispielstadt', city: 'Beispielstadt' };
console.log(getOrganization(address));
console.log(getOrganization({ city: 'Berlin', organization: '' }));
// Wichtig · Fallstricke
- Veraltet:
PaymentAddressist aus der aktuellen Payment-Request-Spezifikation entfernt worden. Nachfolger ist das InterfaceContactAddressmit derselben Eigenschaftorganization. Browser unterstützen es nur uneinheitlich: Chromium-Browser und Safari ja, Firefox nie standardmäßig. Prüfen Sie immer vorher mit'PaymentRequest' in window, ob die API da ist. - Leerer String statt
null: Fehlt die Angabe, ist der Wert"". Prüfen Sie deshalb auf einen leeren Wert und nicht aufundefined. - Datenschutz: Bei
shippingaddresschangekönnen Browser Felder wieorganization,recipientoderaddressLinezurückhalten. Nutzen Sie diese Werte dort nur für eine grobe Einschätzung, etwa der Versandkosten. - Schreibgeschützt: Eine Zuweisung hat keine Wirkung. Wenn Sie den Wert ändern müssen, kopieren Sie ihn vorher, z. B. mit
address.toJSON(). - Nur sicherer Kontext: Die Payment Request API funktioniert nur über HTTPS. In iframes ist zusätzlich
allow="payment"nötig. - Sicherheit: Behandeln Sie den Wert als nicht vertrauenswürdige Nutzereingabe. Geben Sie ihn nicht ungeprüft über
innerHTMLaus, weil das eine XSS-Lücke öffnet. Verwenden Sie stattdessentextContent.