PaymentRequestEvent
注意:此功能仅在服务工作者中可用。
PaymentRequestEvent
是支付处理程序 API的接口,当PaymentRequest
被调用时,它将被传递给支付处理程序。
构造函数
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
事件。 此事件在支付应用程序的服务工作者内被监听,以启动支付流程的下一阶段。
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 的浏览器中加载。