Android应用内购买空白订单ID

时间:2016-08-31 15:06:21

标签: android

我开发了一个应用程序,用户购买将在服务器上注册。在OrderId类的服务器端Purchase是主键。

在Android文档中,我已经读过,测试购买的订单ID将为空白。但是,我的服务器不接受空白订单ID。所以我尝试了这个解决方法:

public static final boolean IS_TEST_PURCHASES = true;

// Before updating to server
if (IS_TEST_PURCHASES && Util.isBlank(purchaseId))
    purchaseId = "Test." + TimeUtils.getCurrentUnixTime();

这解决了我的问题已有一段时间了。但是,在Beta模式下出现同样的问题,因为我无法使用IS_TEST_PURCHASES = true发布APK。

我检查了购买后重新启动的JSON,其中只有OrderId为空,其余的部分如签名,令牌可用。我在想,如果我能做出像这样的条件:

  

如果OrderId为空且SignatureToken不为空,则为此   购买是测试购买并为其分配一些虚拟订单ID。

但我很困惑这种情况是否会引起任何未来的问题。

我需要区分真正的购买和测试购买,以便我可以设置一些虚拟的OrderId,当且仅当通过沙箱测试进行购买时。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我不知道这是否会对您有所帮助,但我在区分测试购买和真实购买时所做的就是使用orderId和purchaseToken作为密钥。

如果是真正的购买,则会出现一个订单ID,该订单ID遵循GPA.ORDER_ID之类的模式。如果是测试购买,那么您将没有订单ID,但仍然会有一个购买令牌,这是一长串随机数字/字母。所以我知道在我的数据库中,如果是真正的购买,订单ID将具有GPA.ORDER_ID。如果它不遵循这种模式,那么这是一次测试购买。