【发布时间】:2018-12-18 06:23:40
【问题描述】:
问题:使用 Google Play BillingClient 1.1 我如何才能只获得未消费的购买?
背景:
在我们的 Android 应用中,我们希望使用新的来更改“旧”计费库(使用示例中的 V.3 IabHelper.java 类)
com.android.billingclient:billing:1.1
这个想法是使用
BillingClient.queryPurchases(BillingClient.SkuType.INAPP)
为了获得用户进行的所有购买的“历史记录”。这就是 API 告诉 (https://developer.android.com/reference/com/android/billingclient/api/BillingClient.html#queryPurchases(java.lang.String)) 的内容,它运行良好。 在旧版本中,人们只会获得对“购买历史”之类的东西无用的未消费物品。但是,如果我想知道是否有未消费的物品,我将无法再获得该信息。
queryPurchaseHistoryAsync() 也是如此。
Purchase 对象似乎不包含有关其消费的任何信息。 我怎样才能只获得未消费的物品(或至少过滤它们)?
请注意,我知道购买最终必须在我们的服务器端进行管理。然而,在这成功之前,最好知道哪个项目已经“兑换”(消费)了。所以我不能只依赖我们的后端。
---- 编辑----
来自查询的购买对象 (JSON) 都如下所示:
{
"orderId": "[Id]",
"packageName": "[just the app's package]",
"productId": "[the SKU name]",
"purchaseTime": 1531224460215,
"purchaseState": 0,
"purchaseToken": "[a purchase token]"
}
所以没有任何东西看起来是一种消费状态。
---- 编辑 2 ----
我找到了一个(不好的)解决方案。当尝试消费购买时,谷歌告诉我它的返回码是否已经被消费。但这不是我们的解决方案,因为我们希望将其“标记为未使用”,直到它在我们的服务器上兑换为止。
【问题讨论】:
标签: android in-app-purchase in-app-billing android-inapp-purchase