自google io 2012以来,我们一直在使用谷歌钱包inapp-payments。
最近我们看到了这个错误:
未捕获的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
答案 0 :(得分:0)
经过一些额外的搜索(也是因为编写问题的过程),我们找到了一个解决方案:
请参阅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(...);
}
}