PaymentRequest:canMakePayment() 方法

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中。

PaymentRequest方法canMakePayment()确定请求是否以与用户代理支持的至少一种支付方式兼容的方式配置。

您可以在调用show()之前调用此方法,以便在用户的浏览器无法处理您接受的任何支付方式时提供简化的用户体验。

例如,您可以调用canMakePayment()来确定浏览器是否允许用户使用支付请求 API 付款,如果不能,您可以回退到其他支付方式,或者提供不受支付请求 API 处理的方法列表(甚至提供邮寄或电话付款的说明)。

语法

js
canMakePayment()

参数

无。

返回值

一个Promise,其布尔值解析为true,如果用户代理支持在使用PaymentRequest构造函数实例化请求时提供的任何支付方式。如果无法处理付款,则 promise 将接收值为false

注意:如果您过于频繁地调用此方法,浏览器可能会拒绝返回的 promise 并抛出DOMException

示例

在以下示例中,摘录自一个演示,该演示异步构建用于 Apple Pay 和 Example Pay 的PaymentRequest对象。它将对canMakePayment()的调用包装在特性检测中,并根据Promise的解析调用相应的回调。

js
async function initPaymentRequest() {
  const details = {
    total: {
      label: "Total",
      amount: {
        currency: "USD",
        value: "0.00",
      },
    },
  };

  const supportsApplePay = new PaymentRequest(
    [{ supportedMethods: "https://apple.com/apple-pay" }],
    details,
  ).canMakePayment();

  // Supports Apple Pay?
  if (await supportsApplePay) {
    // show Apple Pay logo, for instance
    return;
  }

  // Otherwise, let's see if we can use Example Pay
  const supportsExamplePay = await new PaymentRequest(
    [{ supportedMethods: "https://example.com/pay" }],
    details,
  ).canMakePayment();

  if (supportsExamplePay) {
    // show Example Pay support
    return;
  }

  // Otherwise, make payments using HTML form element
}

规范

规范
支付请求 API
# dom-paymentrequest-canmakepayment

浏览器兼容性

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

另请参阅