谷歌钱包应用内付款:未捕获的 ReferenceError:未定义 goog。 google.payments 与 goog.payments

Posted

技术标签:

【中文标题】谷歌钱包应用内付款:未捕获的 ReferenceError:未定义 goog。 google.payments 与 goog.payments【英文标题】:google wallet inapp payments: Uncaught ReferenceError: goog is not defined. google.payments vs goog.payments 【发布时间】:2012-11-25 23:52:53 【问题描述】:

自 2012 年 google io 以来,我们一直在使用 google wallet inapp-payments。

最近我们看到这个错误:

Uncaught ReferenceError: goog is not defined

代码很简单:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load('payments', '1.0', 

    'packages': ['production_config']

  )

然后我们使用jquery document.ready 回调调用goog.payments.inapp.buy,但是那个时候好像goog 对象没有创建。这似乎是一种竞争条件。购买函数只需调用 goog.payments.inapp.buy

 $(document).ready(function() 
      purchase('Item1'); //function to call goog.payments.inapp.buy
       );

这也令人困惑,因为此页面https://sandbox.google.com/checkout/customer/gadget/inapp/demo.html 显示购买电话是:

google.payments.inapp.buy

虽然此页面https://developers.google.com/in-app-payments/docs/tutorial#3 显示购买电话是:

goog.payments.inapp.buy

【问题讨论】:

【参考方案1】:

经过一些额外的搜索(也因为编写问题的过程),找到了解决方案:

见https://developers.google.com/in-app-payments/docs/tutorial#3

重要提示:如果 API 库尚未加载,对 buy() 的调用将 失败。您可以通过指定按钮 onClick 来避免此问题 步骤 3 中的处理程序,使用 Google Loader 回调选项。为了 有关使用 google.load() 的可选设置的详细信息,请参阅 Google 加载程序开发者指南。

使用 google.load 调用的回调很重要,以避免出现竞争条件。

google.load('payments', '1.0', 
  'packages': ['production_config']

  ,"callback": function() 
          // wait for goog object to exist before using it.
          //goog.payments.inapp.buy(...);
   
  

【讨论】:

以上是关于谷歌钱包应用内付款:未捕获的 ReferenceError:未定义 goog。 google.payments 与 goog.payments的主要内容,如果未能解决你的问题,请参考以下文章

谷歌钱包即时购买与应用内购买

谷歌钱包是不是提供 api 来在人与人之间汇款和/或批量支付?

接受网站付款而不是应用内付款

需要在 iOS 应用程序(适用于奥地利地区)中实现虚拟钱包,用户可以在其中通过积分向卖家付款,我可以实时获得收益 [关闭]

Google 应用内付款:如何处理 Google 的回发 JWT

Play 商店未在付款窗口中显示当地货币