ServiceWorkerGlobalScope:canmakepayment 事件

可用性有限

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

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

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

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

ServiceWorkerGlobalScope 接口的 canmakepayment 事件在支付应用的 service worker 上触发,用于检查它是否已准备好处理支付。具体来说,当商家网站调用 PaymentRequest() 构造函数时,会触发此事件。

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

js
addEventListener("canmakepayment", (event) => { })

oncanmakepayment = (event) => { }

事件类型

一个 CanMakePaymentEvent。继承自 ExtendableEvent

Event ExtendableEvent CanMakePaymentEvent

示例

canmakepayment 事件在支付应用的 service worker 上触发,用于检查它是否已准备好处理支付。具体来说,当商家网站调用 PaymentRequest() 构造函数时,会触发此事件。然后,service worker 可以使用 CanMakePaymentEvent.respondWith() 方法进行适当的响应。

js
self.addEventListener("canmakepayment", (e) => {
  e.respondWith(
    new Promise((resolve, reject) => {
      someAppSpecificLogic()
        .then((result) => {
          resolve(result);
        })
        .catch((error) => {
          reject(error);
        });
    }),
  );
});

respondWith() 返回一个 Promise,该 Promise 解析为一个布尔值,以指示 service worker 是否准备好处理支付请求(true),或者不准备(false)。

规范

规范
Payment Handler API
# the-canmakepaymentevent

浏览器兼容性

另见