借助付款处理程序 API,付款服务提供商可以为商家提供自定义付款体验,同时还可提供付款请求 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
事件是否在 service worker 代码中发生更改,请按如下方式检查相应属性:
self.addEventListener(e => {
if (e.paymentRequestOrigin) {...}
if (e.topOrigin) {...}
if (e.methodData && e.methodData.length > 0) {...}
if (e.modifiers && e.modifiers.length > 0) {...}
...
});
在本地试用更改
如需在本地启用更改以进行开发,请执行以下操作:
- 使用 Chrome 108、109 或 110。
- 在网址栏中输入
chrome://flags/#clear-identity-in-can-make-payment
。 - 启用该标志。
- 重新启动 Chrome。
启用该标志后,canmakepayment
事件中的身份字段将被清空(以及 Android IS_READY_TO_PAY
Intent)。
在生产环境中启用更改
您还可以出于测试目的,在更改实际进入 Chrome 之前在生产环境中启用该更改。这种机制称为源试用。
通过源试用,您可以试用新功能,并向 Web 标准社区反馈这些功能的实用性、可行性和有效性。如需了解详情,请参阅面向 Web 开发者的 Origin 试用指南。如需注册此源试用或其他源试用,请访问注册页面。
如需注册源试用,请执行以下操作:
- 为您的来源请求令牌。
- 使用
Origin-Trial
HTTP 标头将令牌添加到您的服务工作线程 JavaScript 文件中。设置 HTTP 标头需要有权配置服务器。 生成的响应标头应如下所示:
Origin-Trial: Auw/tjTQ2eJQ911wiMHi1Bb7i71...
如需查看服务工作线程文件中的源试用令牌,请使用开发者工具或 curl
命令,如下所示:
$ curl --head <Service Worker JS file URL> | grep -i origin-trial
origin-trial: Auw/tjTQ2eJQ911wiMHi1Bb7i71...
在 Chrome 111 之后重新启用本地身份字段
如果您使用的是 Chrome 111 或更高版本,canmakepayment
事件中的身份字段将留空。如需在本地重新启用这些字段,您可以执行以下操作:
- 使用 Chrome 111 或更高版本。
- 在网址栏中输入
chrome://flags/#add-identity-in-can-make-payment
。 - 启用该标志。
- 重新启动 Chrome。
后续步骤
此变更计划从 Chrome 111 开始默认启用。您可以立即开始测试,以便在发布前及时做好应对此项变更的准备。