【发布时间】:2020-05-11 16:28:40
【问题描述】:
我正在尝试在我的应用中实现应用内结算,除了退款之外,一切都很好。在过去的几天里,我一直在反对这一点,如果用户要求退款,似乎无法从应用程序方面知道。 我希望能够在用户获得退款后撤销对一次性托管产品(删除广告)的访问权限。 我没有使用后端,所以我依赖 Google Play API。
我尝试使用 queryPurchaseHistoryAsync 查询 Google Play API,它会返回用户最近购买的列表。这似乎不起作用,因为在要求退款后购买仍然存在(在写这篇文章之前已经等待了一天)。
这就是我所做的:
- 在真机上安装应用
- 购买应用内内容
- 验证应用是否解锁了内容
- 转到我的 Google Play 订单历史记录并为应用内商品申请退款
- 10 分钟后,交易被退回(完全没有我作为开发者参与)
- 应用仍然提供付费内容
- 清理 Play 商店应用数据和缓存
- 应用仍然提供付费内容
所以任何用户都可以购买我的应用内产品,然后立即转到他的 Google Play 页面并要求退款? 是我遗漏了一些明显的东西还是这个 API 是一场噩梦?
PurchaseState 枚举是
public @interface PurchaseState {
// Purchase with unknown state.
int UNSPECIFIED_STATE = 0;
// Purchase is completed.
int PURCHASED = 1;
// Purchase is waiting for payment completion.
int PENDING = 2;
}
我在这里没有看到任何与退款有关的内容, 在我看来,这似乎是一个非常正常的用例,所以我仍然认为我缺少一些关键信息,我该怎么做?
感谢您的帮助
【问题讨论】:
-
我自己没有尝试过,但是当我寻找时,我发现了这些资源:stackoverflow.com/questions/42403890/…developers.google.com/android-publisher/voided-purchases(我还没有在 sdk 中找到 api)。但我不确定没有后端服务器是否能很好地工作。
-
对我来说同样的问题,您找到解决方案了吗?谢谢
-
是也不是,好消息是它是可能的,坏消息是不必要的复杂的完全谷歌风格。我必须创建一个 Firebase 云函数,将购买令牌传递给该函数以进行验证。该函数调用 Google Play api 来获取购买的实际状态。您可以使用 Firebase 的免费计划来完成所有这些工作。这实际上按预期工作。见medium.com/@msasikanth/…
-
这里有同样的问题,直到现在还没有解决方案:(
标签: android in-app-billing refund