Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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订阅获取购买_Android_In App Billing_Billing_Subscriptions - Fatal编程技术网

Android订阅获取购买

Android订阅获取购买,android,in-app-billing,billing,subscriptions,Android,In App Billing,Billing,Subscriptions,我在我的应用程序中使用订阅,出于测试目的,我使用购买测试订阅的测试开发人员 我和那个测试开发者订了三个月的应用。之后,我从我的用户帐户中取消了订阅(这基本上意味着设置Renewang=false)。一旦我取消了订阅,我就可以从应用程序中再次购买它(最好是“合并”订阅并延迟您的到期时间。例如,如果a还有一个月的时间,然后再购买几个月,我的新wxpiry日期应该是四个月) 当我调用getPurchases()方法时,返回的是我第一次购买的相同购买数据(没有任何更改,没有标记,没有购买日期) 当我使用

我在我的应用程序中使用订阅,出于测试目的,我使用购买测试订阅的测试开发人员

我和那个测试开发者订了三个月的应用。之后,我从我的用户帐户中取消了订阅(这基本上意味着设置Renewang=false)。一旦我取消了订阅,我就可以从应用程序中再次购买它(最好是“合并”订阅并延迟您的到期时间。例如,如果a还有一个月的时间,然后再购买几个月,我的新wxpiry日期应该是四个月)

当我调用getPurchases()方法时,返回的是我第一次购买的相同购买数据(没有任何更改,没有标记,没有购买日期)

当我使用这些数据使用GoogleDeveloperAPI(我所知道的唯一一个请求过期日期的方法)进行服务器到服务器的请求时,返回的过期日期是过去的。因此,如果我做一些商业逻辑,我必须考虑订阅过期,但这是我从GooGeLoad接收的数据,当我查询GETPu外制品()时。在文档中,它说“getPurchases()方法不会返回失败或过期的订阅。”

所以,我在想,当我第二次购买时,一定生成了一个新的购买数据,使用新的令牌来查询服务器到服务器,但我没有收到它

你知道会发生什么吗

另外,我想知道我在哪里可以在我的谷歌帐户中看到这些订单,因为我已经在我的商户帐户中进行了检查,但我没有看到它们。
谢谢

考虑到3年过去了,我假设您使用的是谷歌应用内计费v2

尽管如此,v3(至少对于沙盒/测试帐户)和同步仍然存在问题。在成功完成支付弹出流后,您实际上只能依靠Google应用内计费v3 API(GIABAPIv3)为您提供新的
purchaseToken
developerPayload
<正如我经常观察到的那样,
getPurchases
返回的code>purchaseData可能与reality*不同步。此外,GIABAPIv3弹出流的行为可能与现实不同步*

GIABAPIv3的
purchaseData
可能会反映错误的
isAutoRenewing
状态,GIABAPIv3的弹出流也是如此!例如,在现实中,订阅可能会被取消(并过期),但GIABAPIv3及其弹出窗口都表明用户仍然订阅。在这种情况下,再次取消(通过谷歌Play应用程序)似乎有助于鼓励GIABAPIv3同步

“getPurchases()方法不会返回失败或过期 订阅。”

与此相反,
getPurchases
将返回“已取消”购买的数据。奇怪的是,GDAPI
到期时间将从正常订阅结束时间更改为取消购买的时间。因此,为了实现您的应用程序在订阅结束之前继续将用户视为已订阅的理想行为,您的服务器需要记住原始过期时间。如果
expiryTime
自动恢复
也已更改为false)。 调用返回一个捆绑包,其中包含用户拥有的所有活动订阅。一旦订阅过期而不续订,它将不再出现在返回的捆绑包中 这让我得出结论,谷歌在上面使用了“expires”一词,而字段名
expiryTime
很糟糕,它们并不完全相关(
expiryTime
将表示取消的时间,如果发生这种情况,则表示真正的到期时间(订阅结束)将无法通过GDAPI获得-必须记住它或通过GIABAPIv3^中没有该购买来推断它

*这里的现实与人类用户所做的和谷歌开发者API(GDAPI)所说的是一致的

^我不能说我见过这种情况,这可能是沙盒/测试每日重置的症状。我在现实中看到一个被取消和过期的订阅*在之后的几天里继续出现在GIABAPIv3中(只有在Google Play应用程序中重新取消才能同步回现实*)