检查Google Pay是否支持JS

问题描述 投票:0回答:2

有一个名为 Engaging Networks 的系统,该系统提供 Apple Pay 或 Google Pay 等支付方式。我想显示/隐藏相关的付款按钮,无论付款类型是否可用。

我知道我可以简单地使用

window.ApplePaySession
检查 Apple Pay,但我不知道如何检查 Google Pay 可用性。

我可以看到请求已发送至 https://pay.google.com/gp/p/ui/pay,但基本上就是这样。

有什么办法可以检查吗?

javascript api stripe-payments google-pay
2个回答
2
投票

正如 @esqew 所指出的,这里是如何调用

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>


0
投票

请查看官方 google pay api 文档: https://developers.google.com/pay/api/web/guides/setup

其中表示 google pay api 仅在这些网络浏览器上可用:

enter image description here

为了检测用户浏览器,您可以使用此基于特征检测的代码,而不是

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
© www.soinside.com 2019 - 2024. All rights reserved.