有一个名为 Engaging Networks 的系统,该系统提供 Apple Pay 或 Google Pay 等支付方式。我想显示/隐藏相关的付款按钮,无论付款类型是否可用。
我知道我可以简单地使用
window.ApplePaySession
检查 Apple Pay,但我不知道如何检查 Google Pay 可用性。
我可以看到请求已发送至 https://pay.google.com/gp/p/ui/pay,但基本上就是这样。
有什么办法可以检查吗?
isReadyToPay
的示例:
function onGooglePayLoaded() {
const client = new google.payments.api.PaymentsClient({
environment: 'TEST',
merchantInfo: {
merchantId: '12345678901234567890',
merchantName: 'Demo Merchant',
},
});
const readyToPayOptions = {
apiVersion: 2,
apiVersionMinor: 0,
allowedPaymentMethods: [
{
type: 'CARD',
parameters: {
allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],
allowedCardNetworks: ['MASTERCARD', 'VISA'],
},
tokenizationSpecification: {
type: 'PAYMENT_GATEWAY',
parameters: {
gateway: 'example',
},
},
},
],
};
client.isReadyToPay(readyToPayOptions).then(result => console.log('Is ready to pay: ', result));
}
<script
async
src="https://pay.google.com/gp/p/js/pay.js"
onload="onGooglePayLoaded()">
</script>
请查看官方 google pay api 文档: https://developers.google.com/pay/api/web/guides/setup
其中表示 google pay api 仅在这些网络浏览器上可用:
为了检测用户浏览器,您可以使用此基于特征检测的代码,而不是
window.navigator.userAgent
function getBrowserName() {
if ('chrome' in window && !!window.chrome && !!window.chrome.webstore) {
return 'chrome';
} else if (typeof InstallTrigger !== 'undefined') {
return 'firefox';
} else if (Object.prototype.toString.call(window.opera) === '[object Opera]') {
return 'opera';
} else if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.indexOf('Trident/') !== -1) {
return 'ie';
} else if (navigator.userAgent.indexOf('Edge') !== -1) {
return 'edge';
} else if (navigator.userAgent.indexOf('Safari') !== -1 && navigator.userAgent.indexOf('Chrome') === -1) {
return 'safari';
} else {
return 'other';
}
}
enter code here