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
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.
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
BCD tables only load in the browser