我已将android In-App购买集成到Android应用程序中。我重写了onPurchaseUpdated方法以获得购买的响应。
@Override
public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
if (responseCode == BillingResponse.OK) {
//handling purchase logic here
}
}
现在我注意到用户试图购买应用内耗材产品,而他的购买状态正在等待,一段时间后他取消购买。他一遍又一遍地重复这个过程。
因此,如果购买状态处于暂挂状态,Google会将BillingResponse.OK作为响应代码返回吗?如果不是如何检查购买状态是否处于待处理状态或购买处于待处理状态时会发生什么?
我查看了Google Play结算参考文档中的响应代码,但未找到有关待处理购买的信息。
这是链接:https://developer.android.com/google/play/billing/billing_reference.html
我找不到确切的解决方案,但有一种解决方法(相当可靠)使用实时开发人员通知来处理订阅相关状态:
您应该从以下指南开始:https://developer.android.com/google/play/billing/billing_subscriptions#Handle-states
然后按照指南添加实时开发人员通知:https://developer.android.com/google/play/billing/realtime_developer_notifications
所以基本上它通知你当任何游戏托管订阅的状态发生变化时,你会在推送通知中得到像SUBSCRIPTION_RENEWED
,SUBSCRIPTION_PURCHASED
,SUBSCRIPTION_CANCELED
等标志。
因此,您可以执行的操作是将所有订阅条目添加到您的服务器(或管理它),并使用实时开发人员通知处理所有更新。
例如:用户A续订订阅但是付款确认可能需要24小时,因此您将该条目作为待处理(默认情况下),并且在用户之间决定取消该订阅,以便您可能会收到SUBSCRIPTION_CANCELED
的标志,并再次由用户决定撤销该帐户,所以你可能会得到SUBSCRIPTION_REVOKED
的标志,你可以更新你的条目,因为用户一遍又一遍地重复这个过程。
这可能看起来有点令人困惑,但阅读文档可能会清除方式。
希望这有帮助,让我知道结果。