android计费:BillingClient.acknowledgePurchase()在短时间内两次获取DEVELO



我参考谷歌示例BillingRepository.kt来实现我的BillingRepository;正如谷歌建议的那样,开发人员应该在onResume((回调中调用BillingClient.queryPurchases((;

因此,当我成功购买商品时,我得到了以下代码路径:

  • onPurchasesUpdated((-->首次确认采购((
  • BillingRepository.queryPurchaseAsync((--->第二次确认采购((
    • 播放商店购买流"活动"完成,MyActivity获取Resume((回调以调用BillingRepository.queryPurchasesSync((

然后我发现了有线的东西:

两个acknowledgePurchase((中的一个将获得DEVELOPER_ERROR(响应代码5(;服务器错误!请再试一次";

可能的情况:

  1. 第一次确认采购((获得开发者_ERROR,第二次确认采购成功
  2. 第一次确认Purchase((成功获取,第二次确认Purhase((获取DEVELOPER_ERROR[这是最常见的情况]
  3. 两个acknowledgePurchase((都成功获取

计费客户端库版本测试为3.0.0/2.2.0/2.1.0;

有人能解释一下吗?感谢

据我所知,每次购买只能给出一个确认。如果对已确认的购买进行了确认,则会发生错误。

在尝试确认之前,请记住验证购买是否已被确认。

if (purchase.purchaseState == Purchase.PurchaseState.PURCHASED) {
if (!purchase.isAcknowledged){
val acknowledgePurchaseParams = AcknowledgePurchaseParams
.newBuilder()
.setPurchaseToken(purchase.purchaseToken)
.build()
billingClient.acknowledgePurchase(acknowledgePurchaseParams) {
// result here
}
}
}

如果您的代码触发两次调用CCD_ 1以";同时";,可能有问题。


有关更多信息,请参阅https://developer.android.com/google/play/billing/integrate

最新更新