PaymentRequestEvent: respondWith() Methode

Limited availability

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

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Hinweis: Diese Funktion ist nur in Service Workers verfügbar.

Die respondWith() Methode der Schnittstelle PaymentRequestEvent verhindert die Standard-Ereignisbehandlung und ermöglicht es Ihnen, selbst ein Promise für ein Zahlungshandler-Antwortobjekt bereitzustellen.

Syntax

js
respondWith(promise)

Parameter

promise

Ein Zahlungshandler-Antwortobjekt oder ein Promise das zu einem solchen aufgelöst wird. Dieses Objekt sollte die folgenden Eigenschaften enthalten:

methodName

Der Bezahlmethode-Identifikator für die vom Benutzer ausgewählte Zahlungsmethode zur Durchführung der Transaktion.

details

Ein JSON-serialisierbares Objekt, das eine bezahlmethode-spezifische Nachricht bereitstellt, die vom Händler verwendet wird, um die Transaktion zu verarbeiten und einen erfolgreichen Geldtransfer zu bestimmen. Siehe 7.1.2 details attribute für weitere Details.

Rückgabewert

Keiner (undefined).

Beispiele

Das folgende Beispiel stammt aus Öffnen Sie das Zahlungsabwicklerfenster, um die webbasierte Zahlungs-App-Frontend anzuzeigen. Lesen Sie den Artikel, um den Kontext des Codes zu verstehen.

js
self.addEventListener("paymentrequest", async (e) => {
  // Retain a promise for future resolution
  resolver = new PromiseResolver();

  // Pass a promise that resolves when payment is done.
  e.respondWith(resolver.promise);
  // Open the checkout page.
  try {
    // Open the window and preserve the client
    client = await e.openWindow(checkoutURL);
    if (!client) {
      // Reject if the window fails to open
      throw "Failed to open window";
    }
  } catch (err) {
    // Reject the promise on failure
    resolver.reject(err);
  }
});

Spezifikationen

Specification
Payment Handler API
# dom-paymentrequestevent-respondwith

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
respondWith()
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.

Siehe auch