Google Pay(通过付款请求API)-canMakePayment()无法解析

时间:2019-02-21 19:16:32

标签: javascript google-pay payment-request-api

我一直遵循此link作为实施指南以及官方W3C guide

根据我的逻辑,在我们的网站上显示Google Pay按钮:

  1. 检查window.PayentRequest是否可用,如果可用,则:
  2. 构建methodData,paymentDetails和paymentOptions。使用这些创建新的PaymentRequest对象。
  3. 致电paymentRequest.canMakePayment().then((result)=>{ //if result is true, display the GPay the button }).catch(()=>{}}
  4. 当按钮出现时,onClick处理程序使用methodData,paymentDetails和paymentOptions创建一个新的PaymentRequest对象,并调用.show()

我们的应用程序在React中,我正在componentDidMount中执行第1-3步。在大多数情况下,这可以正常工作-页面加载完成,检查PaymentRequest是否可用并且PaymentMethod是否受支持,然后将状态设置为显示Google Pay按钮,然后单击触发浏览器的本机付款表。

这是我一直在努力解决的问题:

在Google Chrome浏览器(v 72​​.0.3626.109)(在台式机和移动设备上)上,有时当我导航至页面时GooglePay按钮不会显示,只有刷新几次后才会显示。 对于未显示的情况,从日志中可以看到canMakePayment方法根本无法解析-它不会进入thencatch中。我不知道它可能会在哪里引发异常,该异常正在冒泡的地方,也不知道为什么它会以静默方式失败。

任何见解都会有所帮助-如果canMakePayment()返回了承诺,为什么以及何时无法解决?我在哪里检查错误?

这是我正在做的事情-我也可以在这个问题上复制问题- https://jsfiddle.net/soham_scratchpad/bzsyrjaf/5/

1 个答案:

答案 0 :(得分:1)

在您的小提琴中应该寻找什么?我在桌面上尝试过它,它始终显示“显示付款按钮”文本,这似乎表明canMakePayment()解析为true。

在Chrome的实现中,根据spec,canMakePayment()可以解析为布尔值,也可以引发许多异常。如果您同时拥有.then.catch处理程序,则应始终触发其中之一。

如果不是,则可能是Chrome中的错误。如果您可以提交包含重复步骤的错误报告here,并使用Blink>付款作为组件,则将很有帮助。