我参考谷歌示例BillingRepository.kt来实现我的BillingRepository;正如谷歌建议的那样,开发人员应该在onResume((回调中调用BillingClient.queryPurchases((;
因此,当我成功购买商品时,我得到了以下代码路径:
- onPurchasesUpdated((-->首次确认采购((
- BillingRepository.queryPurchaseAsync((--->第二次确认采购((
- 播放商店购买流"活动"完成,MyActivity获取Resume((回调以调用BillingRepository.queryPurchasesSync((
然后我发现了有线的东西:
两个acknowledgePurchase((中的一个将获得DEVELOPER_ERROR(响应代码5(;服务器错误!请再试一次";
可能的情况:
- 第一次确认采购((获得开发者_ERROR,第二次确认采购成功
- 第一次确认Purchase((成功获取,第二次确认Purhase((获取DEVELOPER_ERROR[这是最常见的情况]
- 两个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