PaymentRequest:canMakePayment() 方法
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 的浏览器中加载。