Payment Handler API 的 CanMakePayment 事件行为更新

借助 Payment Handler API,付款服务机构可为商家提供自定义付款体验以及 Payment Request API。通过 new PaymentRequest() 构造函数初始化 Payment Request API 时,它会以静默方式向为 Payment Handler API 注册的 Service Worker 触发包含商家源站和任意数据的 canmakepayment 事件。这种跨源通信不需要用户手势,也不会显示任何界面。

Chrome 将移除 canmakepayment 事件中的标识字段,并从 Chrome 108 开始试用源试用。

本页面中的信息仅适用于使用 Payment Handler API 的付款应用提供方。如果您不使用该功能,则可以跳过这些说明。

具体变化

当商家调用 new PaymentRequest() 时,已注册的 Service Worker 会收到包含以下信息的 canmakepayment 事件 (CanMakePaymentEvent):

  • topOrigin
  • paymentRequestOrigin
  • methodData
  • modifiers

这些事件将被移除,Service Worker 将仅接收 canmakepayment 事件,而不包含任何其他信息。

功能检测

如需检测 Service Worker 代码中的 canmakepayment 事件是否发生更改,请按如下方式检查各个属性:

self.addEventListener(e => {
  if (e.paymentRequestOrigin) {...}
  if (e.topOrigin) {...}
  if (e.methodData && e.methodData.length > 0) {...}
  if (e.modifiers && e.modifiers.length > 0) {...}
  ...
});

在本地尝试更改

如需出于开发目的在本地启用更改,请执行以下操作:

  1. 请使用 Chrome 108、109 或 110。
  2. 在网址栏中输入 chrome://flags/#clear-identity-in-can-make-payment
  3. 启用此标志。
  4. 重新启动 Chrome。

启用该标志后,canmakepayment 事件中的身份字段将被清空(以及 Android IS_READY_TO_PAY intent)。

在生产环境中启用此变更

您还可以在生产环境中启用此变更以进行测试,然后再将其实际发布到 Chrome。这种机制称为源试用。

借助源试用,您可以试用新功能,并针对其易用性、实用性和有效性向 Web 标准社区提供反馈。如需了解详情,请参阅面向 Web 开发者的源试用指南。如需注册本次或其他源试用,请访问注册页面

如需注册源试用,请执行以下操作:

  1. 为您的源请求令牌
  2. 使用 Origin-Trial HTTP 标头将令牌添加到您的 Service Worker JavaScript 文件中。设置 HTTP 标头需要配置您的服务器。生成的响应标头应如下所示:
Origin-Trial: Auw/tjTQ2eJQ911wiMHi1Bb7i71...

如需在 Service Worker 文件中查看源试用令牌,请使用开发者工具curl 命令,如下所示:

$ curl --head <Service Worker JS file URL> | grep -i origin-trial
origin-trial: Auw/tjTQ2eJQ911wiMHi1Bb7i71...

在 Chrome 111 之后,在本地重新启用身份字段

如果您使用的是 Chrome 111 或更高版本,则 canmakepayment 事件中的身份字段留空。要在本地重新启用这些字段,您可以执行以下操作:

  1. 请使用 Chrome 111 或更高版本。
  2. 在网址栏中输入 chrome://flags/#add-identity-in-can-make-payment
  3. 启用此标志。
  4. 重新启动 Chrome。

后续步骤

我们计划从 Chrome 111 开始默认启用这项变更。您可以立即开始测试,为发布带来的变化做好准备。