PaymentRequestEvent: Methode respondWith()
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.
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 Methode respondWith() der Schnittstelle PaymentRequestEvent verhindert die standardmäßige Behandlung des Ereignisses und ermöglicht es Ihnen, selbst eine Promise für ein Antwortobjekt des Payment Handlers bereitzustellen.
Syntax
respondWith(promise)
Parameter
promise-
Ein Antwortobjekt des Payment Handlers oder eine
Promise, die zu einem solchen Objekt aufgelöst wird. Das Objekt sollte die folgenden Eigenschaften enthalten:methodName-
Die Kennung der Zahlungsmethode, die der Benutzer zum Abschluss der Transaktion ausgewählt hat.
details-
Ein JSON-serialisierbares Objekt mit einer zahlungsmethodenspezifischen Nachricht, anhand derer der Händler die Transaktion verarbeitet und feststellt, ob die Geldübertragung erfolgreich war. Weitere Informationen finden Sie unter 8.1.2 Attribut
details.
Die
promisekann mit den folgenden Werten zurückgewiesen werden, um einen Fehler der Zahlungs-App anzuzeigen:AbortErrorDOMException-
Zeigt an, dass der Benutzer die Zahlungsanfrage abgebrochen hat.
OperationErrorDOMException-
Zeigt einen internen Fehler in der App an, die die Zahlung verarbeitet.
Wird die
promisemit einem anderen Wert zurückgewiesen, wird dieserAbortErrorzugeordnet.
Rückgabewert
Keiner (undefined).
Beispiele
Das folgende Beispiel stammt aus Öffnen des Payment-Handler-Fensters zur Anzeige der Benutzeroberfläche der webbasierten Zahlungs-App. 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 new Error("Failed to open window");
}
} catch (err) {
// Reject the promise on failure
resolver.reject(err);
}
});
Spezifikationen
| Spezifikation |
|---|
| Web-based Payment Handler API> # dom-paymentrequestevent-respondwith> |