自2012年google以来,我们一直在使用谷歌钱包内支付。
最近我们看到了这个错误:
未定义的ReferenceError: goog未定义
代码非常简单:
<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发布于 2012-12-07 19:03:53
经过一些额外的搜索(也是因为编写问题的过程),找到了一个解决方案:
请参阅https://developers.google.com/in-app-payments/docs/tutorial#3
重要的是:如果API库没有加载,那么购买()的调用就会失败。您可以通过使用Google回调选项在步骤3中指定按钮onClick处理程序来避免此问题。有关在google.load()中使用可选设置的详细信息,请参阅。
为了避免争用条件,使用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(...);
}
}https://stackoverflow.com/questions/13769248
复制相似问题