PaymentRequestEvent: changePaymentMethod() 方法

实验性: 这是一个 实验性技术
在生产环境中使用之前,请仔细查看 浏览器兼容性表

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

changePaymentMethod() 方法是 PaymentRequestEvent 接口的一部分,用于让支付处理器获取更新后的总计,并使用诸如账单地址之类的支付方式详细信息。

调用此方法时,会触发 PaymentMethodChangeEvent 事件。

语法

js
changePaymentMethod(methodName)
changePaymentMethod(methodName, methodDetails)

参数

methodName

要使用的支付方式的名称。

methodDetails 可选

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

返回值

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

error

解释为什么用户选择的支付方式不可用的字符串。

total

基于更改的支付方式的更新后的总计。例如,总计可能会发生变化,因为用户选择的支付方式的账单地址会改变适用的销售税。

modifiers

一个 Array,包含 PaymentDetailsModifier 对象,其属性在 PaymentRequestEvent.modifiers 中描述。

paymentMethodErrors

一个对象,包含支付方式的验证错误(如果有)。

示例

以下显示了一个简单的代码片段,可以在 service worker 中使用它来将支付方式更改通知发送到主支付处理器窗口。有关完整的测试示例,请参见 用于测试支付方式更改事件的支付处理器

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

规范

规范
Payment Handler API
# changepaymentmethod-method

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅