Payment Handler API 的 CanMakePayment 事件行为更新

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

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

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

有何变化?

当商家调用 new PaymentRequest() 时,已注册的服务工件会收到一个 canmakepayment 事件 (CanMakePaymentEvent),其中包含以下信息:

  • topOrigin
  • paymentRequestOrigin
  • methodData
  • modifiers

这些信息将被移除,服务工件只会收到 canmakepayment 事件,而不会收到任何其他信息。

功能检测

如需检测 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 标头将令牌添加到您的服务工作线程 JavaScript 文件中。设置 HTTP 标头需要有权配置服务器。生成的响应标头应如下所示:
Origin-Trial: Auw/tjTQ2eJQ911wiMHi1Bb7i71...

如需查看服务工作器文件中的来源试用令牌,请使用 DevToolscurl 命令,如下所示:

$ 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 开始默认启用。您可以立即开始测试,为发布时间的变更做好准备。