为啥 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的一个实例

BillingClient 始终返回 SERVICE_DISCONNECTED

是否可以通过 BillingClient 检测宽限期?

BillingClient.BillingClientStateListener.onBillingSetupFinished 被多次调用