Signatur
Beschreibung
Die Eigenschaft methodName eines MerchantValidationEvent gibt den Zahlungsmethoden-Bezeichner (Payment Method Identifier) zurück. Er gehört zu dem Zahlungsabwickler, der verlangt, dass sich der Händler ausweist, bevor die Zahlung weiterlaufen darf. Meist ist das eine URL wie "https://apple.com/apple-pay". Es kann aber auch ein standardisierter Kurzname wie "basic-card" sein.
Das Ereignis merchantvalidation wird im Rahmen der Payment Request API auf einem PaymentRequest-Objekt ausgelöst. Wenn Sie mehrere Zahlungsmethoden anbieten, können Sie mit methodName herausfinden, welcher Abwickler die Validierung will. So wählen Sie den passenden Händlerserver-Endpunkt bzw. das richtige Händlerzertifikat aus.
Die Eigenschaft ist schreibgeschützt. Ihren Wert legt der Browser fest, oder beim manuellen Erzeugen des Ereignisses das Feld methodName im Initialisierungsobjekt des Konstruktors. Wird dort nichts angegeben, ist der Wert ein leerer String.
Rückgabewert
"".Beispiele
Validierung je nach Zahlungsabwickler verzweigen
const request = new PaymentRequest(
[
{ supportedMethods: 'https://apple.com/apple-pay', data: { merchantIdentifier: 'merchant.net.programmierung' } },
{ supportedMethods: 'https://example-pay.com/pay' }
],
{ total: { label: 'Summe', amount: { currency: 'EUR', value: '19.99' } } }
);
request.addEventListener('merchantvalidation', (event) => {
console.log('Validierung angefordert von:', event.methodName);
// Passenden Endpunkt auf dem eigenen Server wählen
const endpoint = event.methodName === 'https://apple.com/apple-pay'
? '/api/validate/applepay'
: '/api/validate/generic';
event.complete(
fetch(endpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ validationURL: event.validationURL })
}).then((res) => res.json())
);
});
request.show().catch((err) => console.error('Zahlung abgebrochen:', err));
Ereignis manuell erzeugen (z. B. für Tests)
const evt = new MerchantValidationEvent('merchantvalidation', {
methodName: 'https://example-pay.com/pay',
validationURL: 'https://example-pay.com/validate'
});
console.log(evt.methodName);
console.log(evt.validationURL);
Funktionsprüfung und Standardwert
if ('MerchantValidationEvent' in window) {
const evt = new MerchantValidationEvent('merchantvalidation');
console.log(JSON.stringify(evt.methodName)); // leerer String
evt.methodName = 'test'; // wird ignoriert, schreibgeschützt
console.log(JSON.stringify(evt.methodName));
} else {
console.log('MerchantValidationEvent wird nicht unterstützt');
}
// Wichtig · Fallstricke
- Veraltet:
MerchantValidationEventwurde aus der Payment-Request-Spezifikation entfernt und wird in den meisten Browsern nicht (mehr) unterstützt. Für Apple Pay nutzen Sie in Safari besserApplePaySessionund dessenonvalidatemerchant. Prüfen Sie immer zuerst mit'MerchantValidationEvent' in window, ob die Schnittstelle vorhanden ist. - Schreibgeschützt: Eine Zuweisung an
methodNamewird still ignoriert. Im Strict Mode löst sie einenTypeErroraus. - Sicherheit: Die Händlervalidierung gehört immer auf den eigenen Server. Legen Sie Händlerzertifikate oder private Schlüssel nie im Client-Code ab.
methodNamedient nur zur Auswahl des Endpunkts. Ihr Server sollte trotzdem prüfen, ob dievalidationURLzu einer erlaubten Domain des Abwicklers gehört. - Die Payment Request API funktioniert nur in sicheren Kontexten (HTTPS).