Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用内购买空白订单id_Android - Fatal编程技术网

Android应用内购买空白订单id

Android应用内购买空白订单id,android,Android,我开发了一个应用程序,用户可以在服务器上注册购买。在服务器端,Purchase类的OrderId是一个主键 在android文档中,我读到订单Id对于测试购买是空白的。但是,我的服务器将不接受空白订单id。因此我尝试了以下解决方法: public static final boolean IS_TEST_PURCHASES = true; // Before updating to server if (IS_TEST_PURCHASES && Util.isBlank(pur

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

在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\u TEST\u PURCHASES=true发布APK

我检查了购买后返回的JSON,其中只有OrderId为空,其余的字段(如签名、令牌)可用。我在想,如果我能创造一个条件,比如:

如果
OrderId
为空且
Signature
Token
不为空,则此 采购是一个测试采购,并为其分配一些虚拟订单id

但我不清楚这种情况是否会导致未来的问题

我需要区分真实购买和测试购买,这样当且仅当购买是通过沙箱测试进行的时,我才能设置一些伪OrderId


非常感谢您的帮助。

我不知道这是否对您有帮助,但我所做的区分测试购买和实际购买的工作是将orderId和purchaseToken都用作密钥


如果是真正的购买,则会出现一个订单ID,其模式类似于GPA.order\u ID。如果是测试购买,您是对的,不会有订单ID,但仍然会有一个由随机数字/字母组成的长串购买令牌。因此,我知道在我的数据库中,如果这是一次真正的购买,订单ID将具有GPA.order\u ID。如果它不遵循该模式,则这是一次测试购买

你不能将你的服务器更改为接受空白购买以进行测试吗?不能。在谷歌还为测试购买提供orderid之前,它每次都是唯一的。所以,我们很久以前就实施过这样的计划。但从BillingApiV3开始,谷歌停止为测试购买生成订单id。有时谷歌会以以下格式提供订单id:1111.1111.11111.11111。。。我对这种模式做了一些研究,它在2013年或2012年之前就已经被使用了,但我仍然在我的服务器数据库中收到了一些这种模式。Donno如果我可以依赖订单Id的GPA格式?订单Id的格式与我无关。购买代币总是>~100个字符,因此您可以轻松识别真实订单Id和购买代币之间的区别,以帮助我解决问题。没问题!我知道这整件事在我经历的时候是个大麻烦。很乐意帮忙!