如何通过BillingClient获取IAP的购买历史记录

时间:2019-01-23 16:04:29

标签: android-billing android-iap

如文档所述:

queryPurchaseHistoryAsync():

Returns the most recent purchase made by the user for each SKU, even if that purchase is expired, canceled, or consumed.

可以这么说,我想为用户创建一个IAP,以便从我的应用中永久删除广告。

如果该用户还返回了“取消的” IAPS,我如何确定该用户是否已经购买了该IAP

我想查询实际购买的IAPS,而不是所有内容。因为那样,用户可以通过取消IAP来解锁无广告版本。


更糟糕的是,Purchase不具有“已取消”或“已消耗”之类的状态。我无法确定用户购买的IAPS的状态。

我在这里想念东西吗?

预先感谢

1 个答案:

答案 0 :(得分:1)

计费客户文档说明它检查用户。

然后我们有一个问题:谁是用户

如果您查看https://developer.android.com/google/play/billing/billing_library_overview上计费API所采取的步骤,则会发现需要与Google Play建立连接。

然后发生的是,当前使用android的用户,他们在google play上登录的帐户以及他们的移动设备被确定为该用户。

因此,如果他们通过Google Play应用程序购买了该产品,它将始终分配给该用户在Google Play上,这就是查询的内容。无论他们使用哪种设备登录,平板电脑,智能手表,电话,电视等……

如何获取实际购买的产品列表

我建议您使用https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querypurchases

,而不要使用异步方式为您提供包括废弃购物车在内的所有物品

通过这种方式,Get获取有关您在应用内实际购买和付款的所有商品的购买详细信息。此方法使用Google Play商店应用的缓存,而无需启动网络请求。

  

注意:出于安全考虑,建议您进行购买   通过调用后端(如果有的话)进行验证   以下API:   https://developers.google.com/android-publisher/api-ref/purchases/products/get

如果您阅读了该API链接,则可以通过简单的GET请求轻松地通过在线缓存检查购买是否有效。

我个人会先检查是否怀疑手机已扎根,然后再使用向商店发送请求的购买API进行手动背景检查。

不扎根的手机具有较高的信任度,因为用户可能不是很精通技术,也不会对如何规避此类检查有所了解,并且Google Play缓存将定期更新,反映出值得信赖数据。

如果怀疑手机已扎根(您可以阅读受保护的目录/对其进行写操作),然后在每次您认为有必要时购买它们,然后对其进行在线检查。