Google应用内购买:如何检查消耗品的购买状态是否处于待处理状态?

时间:2019-04-04 05:42:43

标签: android in-app-purchase in-app-billing

我已经将android应用内购买集成到了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

1 个答案:

答案 0 :(得分:0)

我找不到确切的解决方案,但是有一种解决方法(相当可靠),它使用实时开发人员通知来处理与订阅相关的状态:

您应该从以下指南开始: https://developer.android.com/google/play/billing/billing_subscriptions#Handle-states

,然后遵循添加实时开发者通知的指南: https://developer.android.com/google/play/billing/realtime_developer_notifications

因此,基本上,当任何播放管理的订阅的状态发生变化时,它都会通知您,您将在该推送通知中获得SUBSCRIPTION_RENEWEDSUBSCRIPTION_PURCHASEDSUBSCRIPTION_CANCELED等标志。

因此,您可以做的是将所有订阅条目添加为待处理服务器(或由您管理),并使用实时开发者通知处理所有更新。

例如:用户A续订了订阅,但付款确认可能需要24小时,因此您将该条目设置为待定(默认情况下),并且在此之间,用户决定取消该订阅,因此您可能会收到标记SUBSCRIPTION_CANCELED,然后用户再次决定撤销该帐户,因此您可能会得到标记SUBSCRIPTION_REVOKED,当用户反复重复此过程时,您可以更新条目。

这似乎有些令人困惑,但是阅读文档可能会扫清障碍。

希望这会有所帮助,让我知道结果。