PaymentRequestEvent: respondWith() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

注意:此功能仅在 Service Workers 中可用。

respondWith() 方法属于 PaymentRequestEvent 接口,它会阻止默认的事件处理,并允许您自己提供一个用于支付处理响应对象的 Promise

语法

js
respondWith(promise)

参数

promise

支付处理响应对象或解析为支付处理响应对象的 Promise。此对象应包含以下属性:

methodName

用户为完成交易选择的支付方式的支付方式标识符。

details

一个 JSON 可序列化的对象,提供特定于支付方式的消息,供商家用于处理交易和确定成功的资金转移。有关更多详细信息,请参阅 7.1.2 details 属性

返回值

无(undefined)。

示例

下面的示例摘自 打开支付处理程序窗口以显示基于 Web 的支付应用程序前端。请阅读该文章以了解代码的背景。

js
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);
  }
});

规范

规范
Payment Handler API
# dom-paymentrequestevent-respondwith

浏览器兼容性

另见