3

我们在验证某些付款交易时遇到问题(Google In App Billing V3)。看起来繁琐交易的数据与我们在验证没有问题的交易中看到的格式不同。

我们能够验证的交易

  • OrderId: 用点分隔的两个数字:92299713162054702728.1224255970239541
  • Signature: 始终在末尾包含 base64 填充,长度为 345 个字符

验证失败的交易

  • OrderId: 一个号码:5643493869375537013
  • Signature: 缺少 base64 填充,长度为 343 个字符

(这些不是实际的 ID)

缺少填充时手动添加填充无助于验证签名。

为什么我们会收到不同格式的数据?为什么我们无法验证它们,即使我们验证“普通”交易没有问题?为了解决这个问题,我们应该做什么/调查?

4

1 回答 1

2

检查此链接:

http://developer.android.com/google/play/billing/billing_admin.html#orderId

For transactions dated 5 December 2012 or later, Google Wallet assigns a Merchant Order Number (rather than a Google Order Number) and reports the Merchant Order Number as the value of orderID. Here's an example:

"orderId" : "12999556515565155651.5565135565155651"
For transactions dated previous to 5 December 2012, Google checkout assigned a Google Order Number and reported that number as the value of orderID. Here's an example of an orderID holding a Google Order Number:

"orderId" : "556515565155651"

所以我认为你可以通过在你的数据库中存储日期明智的交易并检查日期是否给定日期是 12 月 5 日或更晚然后检查第一个其他第二个来解决它。

或者

您还可以检查开发人员有效负载以检查我们的交易是否安全完成。Google Play 商店将为您提供与购买应用内产品时相同的有效负载。

有关更多信息,请查看此链接以获取开发人员有效负载链接

希望它能解决你的问题。

于 2013-10-03T11:47:42.330 回答