如何使用 BillingClient 获取 IAP 的购买历史记录
How to get purchaseHistory for IAPs with BillingClient
如文档所述:
queryPurchaseHistoryAsync():
Returns the most recent purchase made by the user for each SKU, even if that purchase is expired, canceled, or consumed.
假设我想为用户制作一个 IAP,以从我的应用程序中永久删除广告。
如果该用户已经购买了该 IAP,我如何决定 使用全新安装 如果此功能 也 returns "canceled" IAPS?
我想查询实际购买的IAPS,不是全部。因为这样用户可以通过取消IAP解锁无广告版本。
更糟糕的是,Purchase
class 没有像 "cancelled" 或 "consumed" 这样的状态我不能决定用户购买IAPS的状态。
我是不是漏掉了什么?
提前致谢
计费客户端文档声明它会检查用户。
那么我们就有了问题:用户是谁
如果您查看 https://developer.android.com/google/play/billing/billing_library_overview 上的计费 api 所采取的步骤,您会发现需要连接到 google 游戏。
然后发生的是 android 上的当前用户,他们在 google 上登录的帐户玩游戏,他们的移动设备被确定为用户。
因此,如果他们通过 google 在应用程序中播放购买它,它将始终分配给 google 播放中的该用户,这就是它正在查询的内容。无论他们登录的是什么设备,他们的平板电脑、智能手表、phone、电视等...
如何获取实际购买的商品列表
我建议您使用 https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querypurchases
,而不是使用为您提供包括废弃购物车在内的所有内容的异步
这样可以获取在您的应用中实际购买和支付的所有商品的购买详细信息。此方法使用 Google 个 Play 商店应用的缓存,无需发起网络请求。
Note: It's recommended for security purposes to go through purchases
verification on your backend (if you have one) by calling the
following API:
https://developers.google.com/android-publisher/api-ref/purchases/products/get
如果您阅读了 API link,则可以通过简单的 GET 请求轻松检查在线缓存是否有效。
就个人而言,我会在对向商店发送请求的购买 API 进行手动背景调查之前检查 phone 是否被怀疑已被 root。
未获得 root 权限的手机具有更高的信任级别,因为用户可能不太懂技术,并且不知道如何规避此类检查,google 播放缓存将定期更新,反映值得信赖的数据。
当怀疑某个phone被root时(你可以读protected directories/write给他们),然后在你认为有必要的时候在线检查他们是否购买了这些东西。
如文档所述:
queryPurchaseHistoryAsync():
Returns the most recent purchase made by the user for each SKU, even if that purchase is expired, canceled, or consumed.
假设我想为用户制作一个 IAP,以从我的应用程序中永久删除广告。
如果该用户已经购买了该 IAP,我如何决定 使用全新安装 如果此功能 也 returns "canceled" IAPS?
我想查询实际购买的IAPS,不是全部。因为这样用户可以通过取消IAP解锁无广告版本。
更糟糕的是,Purchase
class 没有像 "cancelled" 或 "consumed" 这样的状态我不能决定用户购买IAPS的状态。
我是不是漏掉了什么?
提前致谢
计费客户端文档声明它会检查用户。
那么我们就有了问题:用户是谁
如果您查看 https://developer.android.com/google/play/billing/billing_library_overview 上的计费 api 所采取的步骤,您会发现需要连接到 google 游戏。
然后发生的是 android 上的当前用户,他们在 google 上登录的帐户玩游戏,他们的移动设备被确定为用户。
因此,如果他们通过 google 在应用程序中播放购买它,它将始终分配给 google 播放中的该用户,这就是它正在查询的内容。无论他们登录的是什么设备,他们的平板电脑、智能手表、phone、电视等...
如何获取实际购买的商品列表
我建议您使用 https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querypurchases
,而不是使用为您提供包括废弃购物车在内的所有内容的异步这样可以获取在您的应用中实际购买和支付的所有商品的购买详细信息。此方法使用 Google 个 Play 商店应用的缓存,无需发起网络请求。
Note: It's recommended for security purposes to go through purchases verification on your backend (if you have one) by calling the following API: https://developers.google.com/android-publisher/api-ref/purchases/products/get
如果您阅读了 API link,则可以通过简单的 GET 请求轻松检查在线缓存是否有效。
就个人而言,我会在对向商店发送请求的购买 API 进行手动背景调查之前检查 phone 是否被怀疑已被 root。
未获得 root 权限的手机具有更高的信任级别,因为用户可能不太懂技术,并且不知道如何规避此类检查,google 播放缓存将定期更新,反映值得信赖的数据。
当怀疑某个phone被root时(你可以读protected directories/write给他们),然后在你认为有必要的时候在线检查他们是否购买了这些东西。