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

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

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

Das paymentmethodchange-Ereignis wird vom Payment Request API an ein PaymentRequest-Objekt übermittelt, wenn der Benutzer die Zahlungsmethode innerhalb eines bestimmten Zahlungshandlers ändert.

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

Dieses Ereignis ist nicht abbrechbar und blubbert nicht.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignishandler-Eigenschaft.

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

onpaymentmethodchange = (event) => { }

Ereignistyp

Ein PaymentMethodChangeEvent. Erbt von Event.

Event PaymentRequestUpdateEvent PaymentMethodChangeEvent

Ereigniseigenschaften

Zusätzlich zu den unten stehenden Eigenschaften umfasst diese Schnittstelle Eigenschaften, die von PaymentRequestUpdateEvent geerbt werden.

methodDetails Schreibgeschützt

Ein Objekt, das zahlungsmethodenspezifische Daten enthält, die beim Umgang mit einer Änderung der Zahlungsmethode nützlich sind. Wenn keine solchen Informationen verfügbar sind, hat dieser Wert null.

methodName Schreibgeschützt

Ein String, der den Zahlungsmethoden-Identifikator enthält, ein String, der eine bestimmte Zahlungsmethode eindeutig identifiziert. Dieser Identifikator ist normalerweise eine URL, die während des Bezahlvorgangs verwendet wird, kann aber auch eine standardisierte Nicht-URL-Zeichenkette sein, wie basic-card. Der Standardwert ist der leere String, "".

Beispiele

Schauen wir uns ein Beispiel an. Dieser Code erstellt eine neue PaymentRequest, fügt einen Handler für das paymentmethodchange-Ereignis hinzu, indem er die Methode addEventListener() des Requests aufruft, und ruft dann show() auf, um dem Benutzer die Zahlungsschnittstelle zu präsentieren.

Der Code setzt die Existenz einer Methode detailsForTransaction() voraus, die ein Objekt zurückgibt, das als details-Argument 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 Ereignishandlungsfunktion selbst, handlePaymentChange(), 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);
};

Dies beginnt mit der Überprüfung der methodName-Eigenschaft des Ereignisses; wenn das anzeigt, dass der Benutzer versucht, Apple Pay zu verwenden, übergeben wir die methodDetails an eine Funktion namens calculateServiceFee(), die wir erstellen könnten, um die Informationen über die Transaktion zu verarbeiten, wie z.B. die zugrunde liegende Kreditkarte, die für die Apple Pay-Anfrage verwendet wird, und ein Objekt zu berechnen und zurückzugeben, das Änderungen spezifiziert, die an dem PaymentRequest angewendet werden sollen, um etwaige Servicegebühren hinzuzufügen, die die Zahlungsmethode erfordern könnte.

Bevor der Ereignishandler zurückkehrt, ruft er die updateWith()-Methode des Ereignisses auf, um die Änderungen in die Anfrage zu integrieren.

Spezifikationen

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

Browser-Kompatibilität

Siehe auch