This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Note: This feature is only available in Service Workers.
The respondWith() method of the PaymentRequestEvent interface prevents the default event handling and allows you to provide a Promise for a payment handler response object yourself.
respondWith(promise)
promiseA payment handler response object or a Promise that resolves to one. This object should contain the following properties:
methodNameThe payment method identifier for the payment method that the user selected to fulfill the transaction.
detailsA 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 7.1.2 details attribute for more details.
None (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);
}
});
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
respondWith |
70 | 79 | No | 57 | No | 70 | No | 49 | No | 10.0 | No | No |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PaymentRequestEvent/respondWith