为啥 Android BillingClient v2 慢速信用卡测试永远不会取消?
Posted
技术标签:
【中文标题】为啥 Android BillingClient v2 慢速信用卡测试永远不会取消?【英文标题】:Why Android BillingClient v2 slow credit card test never cancels?为什么 Android BillingClient v2 慢速信用卡测试永远不会取消? 【发布时间】:2020-04-08 09:23:30 【问题描述】:我正在为非消耗性应用内购买实施新的 BillingClient 库 (v2.1.0)。 我正在与测试用户测试待处理的交易。它适用于“信用卡在几分钟后批准”,但对于“信用卡缓慢,几分钟后拒绝”,购买状态始终处于待处理状态(在 Play 管理中心显示为已取消后等待了数小时)。
为了检索购买状态,我打电话给mBillingClient.queryPurchases(BillingClient.SkuType.INAPP)
作为documentation 中的状态
以前有人遇到过这个问题吗?这是开发环境问题还是最终用户也会出现?
谢谢!
【问题讨论】:
同样的问题,它可能是一个错误 【参考方案1】:我还发现,在我的测试中,虽然我还记得使用已弃用的 AIDL,但我的应用程序的用户需要 24 小时来验证购买。我考虑过可能会出现被拒卡慢的情况,我做了以下处理:
如果是purchase.getPurchaseState() == Purchase.PurchaseState.PENDING
,那么我会显示一个对话框,上面写着:等待购买验证。有时可以持续几个小时
如果用户再次尝试购买该商品并billingResult.getResponseCode() == BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED
,那么我会显示一个对话框,上面写着:无法购买该商品。您已经拥有它或之前的购买仍在等待验证
希望对你有帮助
【讨论】:
【参考方案2】:它实际上在几分钟后下降。我意识到,如果您在 Play 管理中心检查“订单管理”,您会看到它已经被拒绝了。
问题是 google play 计费的本地缓存。我猜为计费测试更新这个缓存的优先级很低,你可以像这样清除它:
adb shell pm clear com.android.vending
【讨论】:
【参考方案3】:我遇到了同样的问题。在launchBillingFlow
上,您会得到一个BillingResponseCode.ITEM_ALREADY_OWNED
。购买退货PurchaseState.PENDING
。如果您紧接着consumeAsync
,它的响应是BillingResponseCode.DEVELOPER_ERROR
,但几分钟后(或任何延迟交易失败)您可以再次consumeAsync
,然后它返回BillingResponseCode.ITEM_NOT_OWNED
,现在您可以重试launchBillingFlow
再次。就像 Lluis Felisart 说的创建一个对话框来要求用户清除待处理,
【讨论】:
如果购买仍处于待处理状态,则在非消耗品上消费购买似乎不是一个好主意。理论上,如果时机恰到好处,您可以通过这种方式消费购买的非消耗品。以上是关于为啥 Android BillingClient v2 慢速信用卡测试永远不会取消?的主要内容,如果未能解决你的问题,请参考以下文章
退款客户应用内购买,但 BillingClient 仍然显示用户已购买?
BillingClient 和 PurchasesUpdateListener 类不可用
BillingClient 始终返回 SERVICE_DISCONNECTED
BillingClient.BillingClientStateListener.onBillingSetupFinished 被多次调用