我有一个Android应用,使用https://developer.android.com/google/play/billing/billing_library.html通过应用内结算提供自动续订订阅。
我使用https://github.com/googlesamples/android-play-billing/中经过轻微修改的BillingManager.java来帮助进行采购管理。
之前,在发布之前(大约4-8周前),每当订阅试用结束并且订阅自动续订时,我会在查询购买时继续在购买列表中收到相应的购买对象:
PurchasesResult subscriptionResult = mBillingClient.queryPurchases(SkuType.SUBS);
List<Purchase> list = purchasesResult.getPurchasesList();
(参见queryPurchases here)
OrderID根据自原始订单以来发生的续订数量附加了递增的计数器值(如订阅订单编号here中所述)。
在过去几天,似乎每当客户的订阅转换为试用付款或随后续订时,queryPurchases此后都会返回零购买。我期望为有活跃订阅的用户收到一个Purchase对象(并且在测试期间得到了这个 - 我在我的数据库中有数据来确认它。)
因此,应用程序不再调用我们的后端服务器来更新订阅有效性,并且拒绝用户访问他们收取的功能 - 不是很好。
我可以在Google Play控制台上查看客户的订单(增加的订单ID),订阅显示为有效(且未取消),并且购买令牌可用并且可以进行验证。
有没有人知道为什么queryPurchases会在第一次续订后停止返回有效的购买? (购买在续订日期之前按预期退回。)
我使用当前的结算客户端库,如下所示:
implementation 'com.android.billingclient:billing:1.0'
(作为一种解决方法,我可以通过定期重新检查所有提交的购买代币来在后端修复此问题,但我更喜欢按应用程序触发的方式执行此操作,以前工作正常。)