| title | PaymentRequestEvent: respondWith() method | |
|---|---|---|
| short-title | respondWith() | |
| slug | Web/API/PaymentRequestEvent/respondWith | |
| page-type | web-api-instance-method | |
| status |
|
|
| browser-compat | api.PaymentRequestEvent.respondWith |
{{APIRef("Web-Based Payment Handler API")}}{{SeeCompatTable}}{{AvailableInWorkers("service")}}
The respondWith() method of the {{domxref("PaymentRequestEvent")}} interface prevents the default event handling and allows you to provide a {{jsxref("Promise")}} for a payment handler response object yourself.
respondWith(promise)
promise- : A payment handler response object or a {{jsxref('Promise')}} that resolves to one. This object should contain the following properties:
methodName- : The payment method identifier for the payment method that the user selected to fulfill the transaction.
details- : A JSON-serializable object that provides a payment method-specific message used by the merchant to process the transaction and determine a successful fund transfer. See 8.1.2
detailsattribute for more details.
- : A JSON-serializable object that provides a payment method-specific message used by the merchant to process the transaction and determine a successful fund transfer. See 8.1.2
- : A payment handler response object or a {{jsxref('Promise')}} that resolves to one. This object should contain the following properties:
None ({{jsxref("undefined")}}).
The example below is taken from Open the payment handler window to display the web-based payment app frontend. Read the article to understand the context of the code.
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);
}
});{{Specifications}}
{{Compat}}