Значение списка GPay SkuDetails равно нулю - PullRequest
0 голосов
/ 16 апреля 2020

Я пытался оформить подписку Gpay на покупку в приложении, и я получаю сообщение об ошибке со SKuDetails, и значение списка равно нулю.

Ниже приведен мой код инициализации Gpay.

private void payWithGPay(){

    mBillingClient = BillingClient.newBuilder(SubscriptionsActivity.this).setListener(this).enablePendingPurchases().build();
    mBillingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(BillingResult billingResult) {
            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK)
            {


                List<String> skuList = new ArrayList<>();
                skuList.add(GPAY_PRO_MONTHLY);
                skuList.add(GPAY_PRO_MONTHLY);

                SkuDetailsParams skuDetailsParams = SkuDetailsParams.newBuilder()
                        .setSkusList(skuList).setType(BillingClient.SkuType.INAPP).build();
                mBillingClient.querySkuDetailsAsync(skuDetailsParams, new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> list) {

                        BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                                .setSkuDetails(list.get(0))
                                .build();
                        if (mBillingClient.launchBillingFlow(SubscriptionsActivity.this, flowParams).getResponseCode() == BillingClient.BillingResponseCode.OK) {
                            // do something you want

                        }
                    }
                });


            }
        }

        @Override
        public void onBillingServiceDisconnected() {

        }
    });


    skuList = new ArrayList();
    skuList.add(GPAY_PRO_MONTHLY);
    SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
    params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
    mBillingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
        @Override
        public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> list) {
            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK
                    && list != null) {
                for (Object skuDetailsObject : list) {
                    SkuDetails skuDetails = (SkuDetails) skuDetailsObject;
                    String sku = skuDetails.getSku();
                    String price = skuDetails.getPrice();
                    if (GPAY_PRO_MONTHLY.equals(sku)) {
                        mAdRemovalPrice = price;
                    }
                }

            }
        }
    });
}

Я также реализовал класс с помощью PurchaseasesUpdatedListener и переопределил onPurchasesUpdated. Также значение переменной GPAY_PRO_MONTHLY не является нулевым.

Я просто получаю исключение IndexOutOfBoundsException в .setSkuDetails (list.get (0)), поэтому список не имеет никакого значения.

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