这是我在我们的网站上显示 Google Pay 按钮的逻辑:
- 检查是否
window.PayentRequest
可用,如果是,则: - 构建 methodData、paymentDetails 和 paymentOptions。使用这些创建一个新的 PaymentRequest 对象。
- 称呼
paymentRequest.canMakePayment().then((result)=>{ //if result is true, display the GPay the button }).catch(()=>{}}
- 当按钮出现时,onClick 处理程序创建一个新的 PaymentRequest 对象,其中包含 methodData、paymentDetails 和 paymentOptions 并调用
.show()
我们的应用程序在 React 中,我正在 componentDidMount 中执行此步骤 1 - 3。在大多数情况下,这是完美的——页面完成加载,它检查 PaymentRequest 是否可用以及 PaymentMethod 是否支持,然后将状态设置为显示 Google Pay 按钮,点击触发浏览器的原生支付表。
这是我一直试图解决的问题:
在 Google Chrome (v 72.0.3626.109)(桌面和移动设备上)上,当我导航到页面时,GooglePay 按钮有时不会显示,只有在我刷新几次时才会显示。对于它没有出现的情况,从日志中,我看到 canMakePayment 方法根本没有解决——它没有进入then
, 也没有catch
。我不知道它可能在哪里抛出异常,以及该异常在哪里冒泡,或者为什么它会默默地失败。
任何见解都会有所帮助——如果canMakePayment()
返回一个承诺,为什么以及什么时候不能解决?我在哪里检查错误?
这是我正在做的一个小提琴 - 我也可以在这个小提琴上复制这个问题 - https://jsfiddle.net/soham_scratchpad/bzsyrjaf/5/