Start · Sprachen · JavaScript · Referenz · MerchantValidationEvent.methodName

MerchantValidationEvent.methodName

Eigenschaft

Schreibgeschützter String mit dem Zahlungsmethoden-Bezeichner des Zahlungsabwicklers, der eine Händlervalidierung anfordert, z. B. <code>"https://apple.com/apple-pay"</code>.

seit JavaScript Veraltet (deprecated) – nur eingeschränkte, experi deprecated seit ja Kategorie: webapi

Signatur

MerchantValidationEvent.methodName

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

Typ
string
Beschreibung
Der Zahlungsmethoden-Bezeichner des Zahlungsabwicklers, der die Händlervalidierung verlangt. Standardwert: leerer String "".

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));
Validierung angefordert von: https://apple.com/apple-pay

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);
https://example-pay.com/pay https://example-pay.com/validate

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');
}
"" "" (oder: MerchantValidationEvent wird nicht unterstützt)

// Wichtig · Fallstricke

  • Veraltet: MerchantValidationEvent wurde aus der Payment-Request-Spezifikation entfernt und wird in den meisten Browsern nicht (mehr) unterstützt. Für Apple Pay nutzen Sie in Safari besser ApplePaySession und dessen onvalidatemerchant. Prüfen Sie immer zuerst mit 'MerchantValidationEvent' in window, ob die Schnittstelle vorhanden ist.
  • Schreibgeschützt: Eine Zuweisung an methodName wird still ignoriert. Im Strict Mode löst sie einen TypeError aus.
  • Sicherheit: Die Händlervalidierung gehört immer auf den eigenen Server. Legen Sie Händlerzertifikate oder private Schlüssel nie im Client-Code ab. methodName dient nur zur Auswahl des Endpunkts. Ihr Server sollte trotzdem prüfen, ob die validationURL zu einer erlaubten Domain des Abwicklers gehört.
  • Die Payment Request API funktioniert nur in sicheren Kontexten (HTTPS).