【问题标题】:Handling In-App Billing Refunds in v3在 v3 中处理应用内结算退款
【发布时间】:2013-01-27 17:03:07
【问题描述】:

我正在尝试在我的应用程序中实施应用内计费,我的购买部分正常工作,但我该如何处理退款?

Testing In-App Billing 部分下,它说您必须注意IN_APP_NOTIFY,但是当您单击它时,它会将您带到API 的v2,您必须在其中注册广播接收器。但是在v3 中,它没有提供有关做什么的信息,或者即使IN_APP_NOTIFY 仍然使用相同或受支持。

示例应用程序也不处理退款,那么我应该如何处理v3 中的退款?

【问题讨论】:

  • 据我所知,应用内购买不支持退款。原因是商品可能已经被消费了。
  • @Henry 但对于非消耗性项目,例如解锁更多应用程序,如高级升级或您可以完全访问整个应用程序的东西。我不相信他们不会为此实施一些东西。看来它也可以在 v2 中使用
  • @Henry 真烦人,谢谢你的信息

标签: android in-app-billing


【解决方案1】:

您应该以与 v2 相同的方式处理它们:当用户请求退款时,通过 Checkout 控制台取消或退款订单。然后应用程序应在启动时检查购买状态等并做正确的事情(通常允许访问已退款的购买,而拒绝访问已取消的购买)。不幸的是,提供的示例不会打扰这样做,因此您必须自己添加它。更不幸的是,由于服务器端的本地缓存和/或错误,在您取消或退款后很长时间内购买的商品将保持购买状态。通过 ATM,您无能为力。

假设您使用的是 Trivial Drive 示例,您可能希望在您的应用中添加类似这样的内容:

Purchase purchase = inventory.getPurchase(product);
Log.d(TAG, "Purchase state: " + purchase.getPurchaseState());
// 0 (purchased), 1 (canceled), or 2 (refunded).
if (purchase.getPurchaseState() == 0
     || purchase.getPurchaseState() == 2) {
   showPremiumVersion();
} else {
   showFreeVersion();
}

【讨论】:

  • 是的,v3 不再需要BroadcastReceiver
  • 为什么高级版使用状态 2(已退款)?除了那个很好的答案
  • 为了让用户满意 :) 有人抱怨高级功能 X,要求退款。您退款,但让他们继续使用它。你在下一个版本中修复 X,他们会注意到,如果你幸运的话,再给你几颗星。 (很少像这样工作,但值得一试)。
  • 是的,但我是说用户购买了商品,然后要求开发者退款。他意识到他将继续使用。因此,他告诉其他朋友无需付费即可使用,因为他们要求取消。
  • @Nikolay Elenkov 同意 - 如果有人想偷它,他可能会找到方法,而关心它是浪费时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
相关资源
最近更新 更多