billingClient.queryPurchases (BillingClient.SkuType.SUBS) .getPurchasesList () возвращает ноль - PullRequest
0 голосов
/ 01 ноября 2019

Я делаю приложение для Android с биллинговыми услугами. Я уже добавил метод "магазин", чтобы пользователь мог подписать. Мое приложение имеет только одну подписку на продажу. Проблема в том, что когда пользователь открывает приложение, я не могу получить, если у него есть индекс или нет. До сих пор я пришел к этому коду, даже когда пользователь подстрочный purchasesResult.getPurchasesList() возвращает null:

premium = false

try{
            Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(BillingClient.SkuType.SUBS);

        for (Purchase purchase : purchasesResult.getPurchasesList()) {

            acknowledgePurchaseParams =
                    AcknowledgePurchaseParams.newBuilder()
                            .setPurchaseToken(purchase.getPurchaseToken())
                            .build();

            acknowledgePurchaseResponseListener = new AcknowledgePurchaseResponseListener() {
                @Override
                public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
                    premium = true;
                }
            };

            handlePurchase(purchase);
        }}
        catch (Exception e){
            e.printStackTrace();
        }

метод handlePurchase:

 void handlePurchase(Purchase purchase) {
        if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
            if (!purchase.isAcknowledged()) {
                AcknowledgePurchaseParams acknowledgePurchaseParams =
                        AcknowledgePurchaseParams.newBuilder()
                                .setPurchaseToken(purchase.getPurchaseToken())
                                .build();
                billingClient.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
            }
            else SplashScreenActivity.premium = true;
        }
    }

Я ищувперед, чтобы проверить, если пользователь подписан так, я могу установить premium = true. До сих пор я использую некрасивое решение, которое снова покупает продукт и проверяет, возвращает ли он ITEM_ALREADY_OWNED. Все еще ищу лучшее решение.

ПРИМЕЧАНИЕ : я получаю этот результат при альфа-тестировании.

NOTE 2 : Thisссылка может помочь.

ПРИМЕЧАНИЕ 3 : Эта ссылка показывает другим пользователям ту же проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...