我正在为非消耗性应用内购买实施新的计费客户端库 (v2.1.0(。 我正在测试测试用户的待处理事务。它适用于"信用卡在几分钟后批准",但对于"信用卡速度慢,几分钟后拒绝",购买状态始终处于待处理状态(在 Play 管理中心显示为已取消后等待数小时(。
为了检索购买状态,我调用mBillingClient.queryPurchases(BillingClient.SkuType.INAPP)
作为文档中的状态
以前有人遇到过这个问题吗?这是开发环境问题还是最终用户也会出现?
谢谢!
在我的测试中,我也发现了这一点,尽管我还记得使用已弃用的 AIDL,我的应用程序的用户需要 24 小时来验证购买。我已经考虑过可能会发生拒绝慢卡时间的情况,我已经做了以下工作:
如果purchase.getPurchaseState() == Purchase.PurchaseState.PENDING
,那么我会显示一个对话框,上面写着:等待购买验证。有时它可以持续几个小时
如果用户尝试再次购买该项目并billingResult.getResponseCode() == BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED
则我会显示一个对话框,上面写着:无法购买该项目。您已经拥有它,或者之前的购买仍在等待验证
希望会有所帮助
我遇到了同样的问题。在launchBillingFlow
你会得到一个BillingResponseCode.ITEM_ALREADY_OWNED
.购买退货PurchaseState.PENDING
。如果您立即consumeAsync
,它的响应是BillingResponseCode.DEVELOPER_ERROR
,但是几分钟后(或事务失败所需的任何延迟(,您可以再次consumeAsync
然后返回BillingResponseCode.ITEM_NOT_OWNED
,现在您可以再次重试launchBillingFlow
。就像路易斯·费利萨特说的那样,创建一个对话框来要求用户清除挂起,
它实际上在几分钟后下降。我意识到,如果您在 Play 管理中心查看"订单管理",您会看到它已经被拒绝了。
问题是谷歌播放计费的本地缓存。我想更新此缓存以进行计费测试的优先级非常低,您可以像这样清除它:
adb shell pm clear com.android.vending