我并不是特别希望可以选择退还用户购买耗材的应用程序,但只是在奇怪的情况下用户要求退款,无论是通过谷歌,还是通过开发商在应用程序中购买消耗品。
通过In App Billing api V3似乎没有办法处理退款。所有文档都使用广播接收器指向api的V2。这对我来说无济于事。
那么如何在In App Billing v3 api中处理退款?我假设是非消费品,退款处理,然后谷歌通过他们的后端处理处理,然后当进行getPurchaseState()时,它将返回值2(退款)。如果是这样,这对于非消费品而言非常有用。
当进行对耗材购买的getPurchaseState()调用时,它返回null。这是假设购买之前成功,并且该项目已被消耗和配置。我想我可以在应用程序中本地存储购买项目,但是仍然无法接收该产品的退款通知。我可以检查购买状态,但是,只要它已经被消耗和配置,它将返回null。
我现在能想到的一个小小的解决方法是不要在配置上消费购买。根据谷歌,它仍然是“未消耗的”,并保留在他们的数据库中。现在,如果要求退款,我假设调用getPurchaseState(),该消耗品将返回退款,因此应用程序逻辑可以从用户的库存中减去/扣除配置的消耗品。如果用户想要再次购买该消费品,那么在购买IAB api之前,请获取purchaseState()和/或hasPurchase(),如果已经在那里购买,则在没有配置的情况下消费该项目,这将让用户重新购买该消耗品。只有这种解决方法的问题在于,如果用户想要重新购买相同的消费品,一旦选择要重新购买的选项,无论他们是否成功回购产品,都必须消费该商品。因此,如果用户没有完成购买,产品已经被消费,我最终回到了现在我无法检查消费品的退款状态。
我想不出任何其他方式为应用产品中的耗材退款,这就是我在这里要求的。我认为是否足够,或者是否有正确的方法来处理耗材上使用IAP v3的退款? 我以为我有3个选择:
答案 0 :(得分:1)
我知道这是对此问题的超级迟到响应,但是我花了很多时间来跟踪有关此问题的信息,因此希望它可以帮助其他人。有几种方法可以执行此操作...在Google Play开发者控制台中,您可以单击左侧导航栏上的“订单管理”,其中会显示通过您的应用程序发出的所有最近订单的列表。如果您需要退款,可以单击它,或在此视图中多选并退款。请注意...您很可能需要帐户管理员的权限才能查看此视图并退款给用户。
您的另一个选择是通过API docs here。您将需要通过Android控制台设置您的API帐户,我会说这是一种痛苦的痛苦,目前还不清楚。但是,一旦设置完成并设置了“服务器应用程序”,就需要确保它也具有适当的权限。那么您应该能够使用诸如this之类的库来为您完成繁重的工作,因为虽然Google API并非超级简单,但从我读过的JWT身份验证过程来看,它们的文档很乱。希望这对某人有帮助,如果您有任何疑问,请发表评论...我会尽力回答。
此API也可以用于查找用户购买并退款的商品,因此您可以从这些用户的应用中删除这些商品。另外,您也可以通过此方法进行服务器端购买验证,因此强烈建议这样做,因为有根电话可以注入虚假的购买请求,从而使您的应用程序相信它正在从Google Play商店中获得回音,但实际上不是。然后,您将要购买的商品的购买令牌和SKU发送回服务器,然后在服务器上运行this。如果无效,这将带给您400错误,如果成功购买,则将带200错误和一些JSON数据。