| title | PaymentRequestEvent: openWindow() method | |
|---|---|---|
| short-title | openWindow() | |
| slug | Web/API/PaymentRequestEvent/openWindow | |
| page-type | web-api-instance-method | |
| status |
|
|
| browser-compat | api.PaymentRequestEvent.openWindow |
{{APIRef("Web-Based Payment Handler API")}}{{SeeCompatTable}}{{AvailableInWorkers("service")}}
The openWindow() method of the {{domxref("PaymentRequestEvent")}} interface opens the specified URL in a new window, only if the given URL is on the same origin as the calling page. It returns a {{jsxref("Promise")}} that resolves with a reference to a {{domxref("WindowClient")}}.
openWindow(url)
url- : The URL to open in the new window. It must be on the same origin as the calling page.
A {{jsxref("Promise")}} that resolves with a reference to a {{domxref("WindowClient")}}.
self.addEventListener("paymentrequest", async (e) => {
// …
// Retain a promise for future resolution
// Polyfill for PromiseResolver at link below.
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);
}
});See Open the payment handler window to display the web-based payment app frontend for more details about how this would be used.
{{Specifications}}
{{Compat}}