【发布时间】:2018-03-14 13:22:29
【问题描述】:
我有很多帖子和谷歌文档,但我仍然不清楚如何判断应用内购买已退款。我小心红了In-App Billing v3 - Don't detect refund和Does Google Play In-App Billing Version 3 support refunds?。
我相信我不久前通过复制和粘贴从 Google 官方文档中获取了以下注释:
purchaseState:订单的购买状态。可能的值为 0 (已购买)、1 个(已取消)或 2 个(已退款)。
现在,the official document 有以下内容:
-> purchaseState:订单的购买状态。它总是返回 0-
(购买)。
更具体地说,如果 IAB 购买被退款或取消,那是否仍然在 mHelper.queryInventoryAsync(mGotInventoryListener) 获得的用户库存中? 如果是这样,如何判断购买已被取消或退款?
更新 [2019-12-12]:
我测试了很多次,确认如下:
如果订单在退款后被取消,它将从getPurchasesList返回的结果中消失。发生这种情况所需的时间各不相同。这可能是几分钟到十多个小时。我认为这取决于 Google Play 何时刷新其缓存。似乎可以打开 Google Play 来刷新其缓存。在一种情况下,getPurchasesList 在退款 10 多个小时后仍然退回了已退款的购买,但在打开 Google Play 后立即停止退回。
【问题讨论】:
-
你有没有得到更多关于这方面的信息?退款订单后,我仍然看到 purchaseState 为 0。
-
@Flyview 不幸的是没有。我认为解决此问题的一种方法是将所有无效订单下载到您自己的服务器,然后根据数据检查订单号。 developers.google.com/android-publisher/voided-purchases 这是相当多的工作。我还没做呢。
-
这太奇怪了。为什么他们不能像订阅一样让它自动进行,而不是返回用户购买的信息?
-
@Flyview 我记得谷歌提供下载所有订单,但我现在找不到 API。我明天问问他们。有相当多的假 IAB 购买(在许多黑客中查看此视频:youtu.be/3Zww3s8_A5g)。检查下载的交易将是处理这些虚假购买的一种方式。
-
@JosephMcDermott Google Play 的缓存问题一直是个头疼的问题。
标签: android google-play in-app-billing google-checkout