【问题标题】:Google Play Billing method "queryPurchaseHistoryAsync" not getting all purchasesGoogle Play 计费方法“queryPurchaseHistoryAsync”未获得所有购买
【发布时间】:2019-08-05 23:41:54
【问题描述】:
我正在开发的应用中有 4 种订阅类型。两个月(一个有折扣)和两个每年(一个有折扣)。我在测试阶段。当我询问购买历史时,我并没有像文档所说的那样获得每种类型的所有最后订阅。而且我得到的购买不是每种 SKU 类型的最后一个。有人有这个问题吗?
这给我带来了宽限期问题,因为我没有得到最后一次购买,所以我没有得到更新的到期时间。
我检查了 Google Play 控制台订单管理,我看到了购买,而且在我的 Google Play 应用程序中也看到了,所以我不知道是什么问题?
【问题讨论】:
标签:
android
google-play
android-billing
【解决方案1】:
如果不提供代码 sn-p,很难理解您的情况。但这里是queryPurchaseHistoryAsync 的一般实现。如果您仍然遇到问题,请提供更多上下文,例如您的实际代码 sn-p 以及您拨打电话的位置。对于下面的 sn-p —— 仅用于测试—— 我在打电话给queryPurchases 之前打电话。
private fun queryPurchaseHistoryAsync(){
playStoreBillingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.SUBS){
responseCode, purchasesList ->
if(purchasesList.isNullOrEmpty()){
Log.d(LOG_TAG,"history for SUBS is empty")
}else{
Log.d(LOG_TAG,"history subs has ${purchasesList.size} items : ${purchasesList.toString()}")
}
}
playStoreBillingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.INAPP){
responseCode, purchasesList ->
if(purchasesList.isNullOrEmpty()){
Log.d(LOG_TAG,"history for INAPP is empty")
}else{
Log.d(LOG_TAG,"history INAPP has ${purchasesList.size} items : ${purchasesList.toString()}")
}
}
}
在我的情况下,获取购买历史记录也没有问题。