PaymentRequestEvent

实验性:这是一个实验性技术
在生产环境中使用之前,请仔细查看浏览器兼容性表

注意:此功能仅在服务工作者中可用。

PaymentRequestEvent支付处理程序 API的接口,当PaymentRequest被调用时,它将被传递给支付处理程序。

Event ExtendableEvent PaymentRequestEvent

构造函数

PaymentRequestEvent() 实验性

创建一个新的PaymentRequestEvent对象实例。

实例属性

instrumentKey 只读 已弃用 非标准 实验性

返回一个对象,该对象反映用户选择的支付工具,如果用户未注册或选择支付工具,则返回一个空字符串。

methodData 只读 实验性

返回一个对象数组,其中包含网站接受的支付方式标识符以及任何关联的支付方式特定数据。

modifiers 只读 实验性

返回一个包含支付详细信息更改的对象数组。

paymentRequestId 只读 实验性

返回PaymentRequest对象的 ID。

paymentRequestOrigin 只读 实验性

返回初始化PaymentRequest对象的来源。

topOrigin 只读 实验性

返回初始化PaymentRequest对象的顶层来源。

total 只读 实验性

返回请求支付的总金额。

实例方法

changePaymentMethod() 实验性

获取更新的总金额,并提供支付方式详细信息。

openWindow() 实验性

在新的窗口中打开指定的 URL,当且仅当给定 URL 与调用页面在同一来源时。 它返回一个Promise,该 promise 解析为WindowClient的引用。

respondWith() 实验性

阻止默认事件处理,并允许您自己提供Promise,用于PaymentResponse对象。

示例

PaymentRequest.show()方法被调用时,将在支付应用程序的服务工作者上触发paymentrequest事件。 此事件在支付应用程序的服务工作者内被监听,以启动支付流程的下一阶段。

js
let payment_request_event;
let resolver;
let client;

// `self` is the global object in service worker
self.addEventListener("paymentrequest", async (e) => {
  if (payment_request_event) {
    // If there's an ongoing payment transaction, reject it.
    resolver.reject();
  }
  // Preserve the event for future use
  payment_request_event = e;

  // ...
});

当收到paymentrequest事件时,支付应用程序可以通过调用PaymentRequestEvent.openWindow()打开支付处理程序窗口。 支付处理程序窗口将向客户展示支付应用程序界面,客户可以在该界面上进行身份验证、选择送货地址和选项以及授权付款。

当付款已处理后,使用PaymentRequestEvent.respondWith()将支付结果传递回商家网站。

请参阅接收来自商家的支付请求事件以获取此阶段的更多详细信息。

规范

规范
支付处理程序 API
# the-paymentrequestevent

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参见