Skip to content

Latest commit

 

History

History
74 lines (56 loc) · 2.6 KB

File metadata and controls

74 lines (56 loc) · 2.6 KB
title PaymentRequestEvent: respondWith() method
short-title respondWith()
slug Web/API/PaymentRequestEvent/respondWith
page-type web-api-instance-method
status
experimental
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.

Syntax

respondWith(promise)

Parameters

  • 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 details attribute for more details.

Return value

None ({{jsxref("undefined")}}).

Examples

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

{{Specifications}}

Browser compatibility

{{Compat}}

See also