PaymentMethodChangeEvent:methodDetails 属性

可用性有限

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

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

PaymentMethodChangeEvent 接口中只读的 methodDetails 属性是一个对象,其中包含支付处理程序可能提供的任何数据,用于描述用户对支付方式所做的更改。如果没有可用详细信息,则值为 null

一个包含描述支付方式所做更改所需任何数据的对象。其内容取决于所选的实际支付方式,因此您需要先参考 methodName 属性,然后再解释 methodDetails

默认值为 null,表示没有其他可用详细信息。

示例

此示例使用 paymentmethodchange 事件来监听 Apple Pay 所选支付方式的更改,以便在用户选择使用 Visa 卡作为其支付方式时计算折扣。

js
request.onpaymentmethodchange = (ev) => {
  const { type: cardType } = ev.methodDetails;
  const newStuff = {};
  if (ev.methodName === "https://apple.com/apple-pay") {
    switch (cardType) {
      case "visa": {
        // do Apple Pay specific handling for Visa card…
        // methodDetails contains the card information
        const discount = calculateDiscount(ev.methodDetails);
        Object.assign(newStuff, discount);
        break;
      }
    }
  }
  // finally…
  ev.updateWith(newStuff);
};
const response = await request.show();

请注意,methodDetails 属性正在被 calculateDiscount() 函数使用以计算任何支付折扣,然后调用 updateWith() 以使用计算出的更新来更新事件。

规范

规范
Payment Request API
# dom-paymentmethodchangeevent-methoddetails

浏览器兼容性