5

我有一个 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();

(请参阅此处的查询购买)

OrderID 根据自原始订单以来发生的续订次数附加了一个递增的计数器值(如此处的订阅订单号中所述

在过去的几天里,似乎每当客户的订阅从试用版转换为付费版或随后续订时,queryPurchases 此后都会返回购买。我希望为具有活动订阅的用户收到一个 Purchase 对象(并且在不久前的测试中得到了这个 - 我的数据库中有数据来确认它。)

结果,该应用程序不再调用我们的后端服务器来更新订阅有效性,并且用户被拒绝访问他们已付费的功能 - 这不是很好。

我可以在 Google Play 控制台上查看客户的订单(带有递增的 OrderID),并且订阅显示为有效(并且未被取消),并且购买令牌可用并且可以验证。

有谁知道为什么 queryPurchases 会在第一次续订后停止返回有效的购买?(购买在续订日期之前按预期退回。)

我正在使用当前的计费客户端库,如下:

implementation 'com.android.billingclient:billing:1.0'

(作为一种解决方法,我可以通过定期重新检查所有提交的购买令牌在后端解决此问题,但我更愿意根据应用程序触发的需求进行此操作,这在以前运行良好。)

4

0 回答 0