Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

PaymentRequest: paymentmethodchange-Ereignis

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Das Ereignis paymentmethodchange wird von der Payment Request API an ein PaymentRequest-Objekt gesendet, wenn der Benutzer die Zahlungsmethode innerhalb eines bestimmten Zahlungsdienstes ändert.

Wenn der Benutzer beispielsweise in seinem Apple Pay-Konto von einer Kreditkarte zu einer anderen wechselt, wird ein paymentmethodchange-Ereignis ausgelöst, um Sie über die Änderung zu informieren.

Dieses Ereignis kann nicht abgebrochen werden und steigt nicht auf.

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

js
addEventListener("paymentmethodchange", (event) => { })

Alternativ können Sie ihn der Event-Handler-Eigenschaft der Schnittstelle zuweisen:

js
onpaymentmethodchange = (event) => { }

Ereignistyp

Ein PaymentMethodChangeEvent. Erbt von Event.

Event PaymentRequestUpdateEvent PaymentMethodChangeEvent

Beispiele

Betrachten wir ein Beispiel. Dieser Code erstellt ein neues PaymentRequest, fügt durch Aufruf von addEventListener() auf dem Request einen Handler für das Ereignis paymentmethodchange hinzu und ruft anschließend show() auf, um dem Benutzer die Zahlungsschnittstelle anzuzeigen.

Der Code setzt voraus, dass eine Methode detailsForTransaction() vorhanden ist. Sie gibt ein Objekt zurück, das als Argument details an den PaymentRequest-Konstruktor übergeben werden kann.

js
const paymentRequest = new PaymentRequest(
  paymentMethods,
  detailsForTransaction(),
);

paymentRequest.addEventListener("paymentmethodchange", handlePaymentChange);

paymentRequest
  .show()
  .then((response) => response.complete("success"))
  .catch((err) => console.error(`Error handling payment request: ${err}`));

Die Event-Handler-Funktion handlePaymentChange() selbst sieht so aus:

js
handlePaymentChange = (event) => {
  const detailsUpdate = {};

  if (event.methodName === "https://apple.com/apple-pay") {
    const serviceFeeInfo = calculateServiceFee(event.methodDetails);
    Object.assign(detailsUpdate, serviceFeeInfo);
  }

  event.updateWith(detailsUpdate);
};

Zunächst wird die Eigenschaft methodName des Ereignisses geprüft. Wenn sie anzeigt, dass der Benutzer Apple Pay verwenden möchte, übergeben wir methodDetails an eine Funktion namens calculateServiceFee(). Diese Funktion könnten wir so implementieren, dass sie anhand von Informationen zur Transaktion – etwa der Kreditkarte, mit der die Apple-Pay-Zahlung abgewickelt wird – ein Objekt berechnet und zurückgibt. Dieses Objekt legt die Änderungen fest, die am PaymentRequest vorgenommen werden müssen, um etwaige Gebühren der Zahlungsmethode hinzuzufügen.

Bevor der Event-Handler zurückkehrt, ruft er die Methode updateWith() des Ereignisses auf, um die Änderungen in den Request zu übernehmen.

Spezifikationen

Spezifikation
Payment Request API
# dfn-paymentmethodchange
Payment Request API
# onpaymentmethodchange-attribute

Browser-Kompatibilität

Siehe auch