PaymentRequestEvent: changePaymentMethod() 方法

可用性有限

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

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

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

PaymentRequestEvent 接口的 changePaymentMethod() 方法由支付处理程序使用,以便在给定账单地址等付款方式详细信息的情况下,获取更新后的总金额。

调用此方法时,会触发一个 PaymentMethodChangeEvent

语法

js
changePaymentMethod(methodName)
changePaymentMethod(methodName, methodDetails)

参数

methodName

将要使用的付款方法的名称。

methodDetails 可选

一个包含正在更新的特定于方法的详细信息的对象。

返回值

一个 Promise,它会解析为一个 PaymentRequestDetailsUpdate 对象。此对象包含以下属性:

error

一个字符串,解释为什么无法使用用户选择的付款方法。

total

根据更改的付款方法更新的总金额。例如,由于用户选择的付款方式的账单地址会更改适用的销售税,因此总金额可能会发生变化。

modifiers

一个 PaymentDetailsModifier 对象的 Array,其属性在 PaymentRequestEvent.modifiers 中进行了描述。

paymentMethodErrors

一个包含付款方法验证错误的对象(如果存在)。

示例

以下是一个简单的代码片段,可在服务工作线程中使用,以将付款方式更改通知发送到主支付处理程序窗口。有关完整的测试示例,请参阅 用于测试付款方式更改事件的支付处理程序

js
function notifyPaymentMethodChanged(e) {
  e.changePaymentMethod("someMethod")
    .then((paymentMethodChangeResponse) => {
      paymentHandlerWindow.postMessage(paymentMethodChangeResponse);
    })
    .catch((error) => {
      sendMessage({ error: error.message });
    });
}

规范

规范
Payment Handler API
# changepaymentmethod-method

浏览器兼容性

另见