获得有效的订阅,应用内结算Android

时间:2018-11-04 10:24:51

标签: android google-play in-app-billing in-app-subscription play-billing-library

我已使用应用内结算库在应用中添加订阅。一切正常,但是我找不到如何获得用户当前有效的订阅?

根据docs,方法queryPurchaseHistoryAsync会返回用户针对每个SKU进行的最新购买,即使该购买已过期,取消或消耗。因此,我不知道当前的订阅是否处于活动状态。

根据this帖子,如果我们取消订阅,则该订阅仍将被视为当天有效。但是我得到的响应中的订阅已在15天之前被取消。

任何帮助将不胜感激。预先感谢。

2 个答案:

答案 0 :(得分:3)

要查询用户订阅,我使用此方法:

public void querySubscriptions() {
    Runnable queryToExecute = () -> {
        Purchase.PurchasesResult purchasesResult = mBillingClient.queryPurchases(BillingClient.SkuType.SUBS);

        if (mBillingClient == null ||
                purchasesResult.getResponseCode() != BillingClient.BillingResponse.OK) {
            return;
        }
        mPurchases.clear();
        onPurchasesUpdated(BillingClient.BillingResponse.OK, purchasesResult.getPurchasesList());
    };

    executeServiceRequest(queryToExecute);
}

如果您需要更多详细信息,请询问。

答案 1 :(得分:0)

用户可以随时激活多个订阅。您可以使用isAutoRenewing方法检查订阅是否处于活动状态。这是该方法的文档

  

指示订阅是否自动续订。如果为true,则订阅处于活动状态,并且将在下一个计费日期自动续订。如果为false,则表示用户已取消订阅。用户可以在下一个计费日期之前访问订阅内容,除非该用户重新启用自动更新(或手动更新,如“手动更新”中所述),否则届时将失去访问权限。如果您提供宽限期,则只要未超过宽限期,所有订阅的此值都将设置为true。下一个帐单日期会每天动态延长,直到宽限期结束或用户确定其付款方式为止。

相关问题