我们正在努力将Google电子钱包与数字商品整合在一起,或者是2天前,我们已经设法让它运转起来。但是,当第二天甚至今天再次检查时,虽然代码保持不变,但我们没有更改其中的字母,它仍然无效,给我们这个错误:
哦,哦。有一个问题。由于技术问题,我们无法完成您的购买。
以下问题的详细信息:很遗憾,我们无法通过商家的服务器确认您的购买。您的订单已被取消。如果此问题仍然存在,请与商家联系。
我们使用的代码是:
$response = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : file_get_contents("php://input");
$response = substr_replace($response, "", 0, 4); //remove "
$response = JWT::decode($response, $sellerSecretKey);
header("HTTP/1.1 200 OK");
就像我说它在两天前工作正常而且我感觉它现在也在工作,因为在我们的日志文件中我们打印出这个回复
stdClass对象 ( [iss] =>谷歌 [请求] => stdClass对象 ( [name] =>产品1。 [描述] =>您从我们的商店购买了1件商品。谢谢。 [price] => 9.99 [currencyCode] =>美元 [sellerData] =>客户名称,电子邮件地址 )
[response] => stdClass Object
(
[orderId] => GWDG_S.c7a66f5b-4674-43f0-be16-2b72f69a7445
)
[typ] => google/payments/inapp/item/v1/postback/buy
[aud] => 03083876603093172875
[iat] => 1384689627
[exp] => 1384689647
)
正确指定了回发网址,我们正在使用沙箱进行测试。
这是Google的问题吗?他们是在研究软件还是什么东西,这是导致问题的原因吗?或者我们在这里做错了什么?。
任何帮助都会被贬低。谢谢。
答案 0 :(得分:0)
意味着评论但不适合......
该错误指向Postback handler中的内容。我刚试过沙箱,事情似乎很好。
我不一个php dev所以这可能不准确 - 您是否使用orderId
回复了Postback?同样,这只是基于我对上面代码的阅读(我想我只看到http 200?)
我能想到的唯一另一件事是你回答的滞后时间超过10秒(?) - 可以解释为什么可能是你记录数据的另一个原因,但谷歌仍然取消了它。
* 打击文字:您需要记录数据,因为Google会向您发送数据,而不管您是否正确回复
使用卖家秘密解码JWT后,您可以确保购买蛋糕并将其记录下来。 在10秒内接收回发,您的服务器必须发送200 OK响应,其中唯一的内容是“orderId”字段的值。如果没有,Google会取消该交易。
参考:https://developers.google.com/commerce/wallet/digital/docs/postback#responding
H个。