我开发了一个应用程序,用户购买将在服务器上注册。在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
为空且Signature
或Token
不为空,则为此 购买是测试购买并为其分配一些虚拟订单ID。
但我很困惑这种情况是否会引起任何未来的问题。
我需要区分真正的购买和测试购买,以便我可以设置一些虚拟的OrderId,当且仅当通过沙箱测试进行购买时。
感谢任何帮助。
答案 0 :(得分:0)
我不知道这是否会对您有所帮助,但我在区分测试购买和真实购买时所做的就是使用orderId和purchaseToken作为密钥。
如果是真正的购买,则会出现一个订单ID,该订单ID遵循GPA.ORDER_ID之类的模式。如果是测试购买,那么您将没有订单ID,但仍然会有一个购买令牌,这是一长串随机数字/字母。所以我知道在我的数据库中,如果是真正的购买,订单ID将具有GPA.ORDER_ID。如果它不遵循这种模式,那么这是一次测试购买。