PaymentRequestEvent: respondWith() method

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 PaymentResponse object yourself.

Syntax

js
respondWith(promise)

Parameters

promise

A Promise that resolves with a PaymentHandlerResponse object.

Return value

A PaymentHandlerResponse object. This contains 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 7.1.2 details attribute for more details.

Examples

js
…
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 '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

Specification
Payment Handler API
# dom-paymentrequestevent-respondwith

Browser compatibility

BCD tables only load in the browser

See also