Android подтверждение покупки

Как правильно реализовать подтверждение покупки (отключение рекламы в приложении).
Помогите, пожалуйста, разобраться, что и куда вставить. Вот мой код.

private void mBillingClient() {
        mBillingClient = BillingClient.newBuilder(this)
                .enablePendingPurchases()
                .setListener(new PurchasesUpdatedListener() {
                    @Override
                    public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> list) {
                        int responseCode = billingResult.getResponseCode();
                        if (responseCode == BillingClient.BillingResponseCode.OK && list != null) {
                            //сюда мы попадем когда будет осуществлена покупка
                            payDisableAds();

                        }
                    }
                })
                .build();
        mBillingClient.startConnection(new BillingClientStateListener() {
            @Override
            public void onBillingSetupFinished(BillingResult billingResult) {
                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                    // The BillingClient is ready. You can query purchases here.
                    //здесь мы можем запросить информацию о товарах и покупках
                    querySkuDetails(); // запрос о товарах в консоли
                    List<Purchase> purchasesList = queryPurchases(); // запрос о покупках пользовател

                    //если товар уже куплен, предоставить его пользователю
                    if (purchasesList != null) {
                        if (purchasesList.size() == 1) {
                            String purchaseId = purchasesList.get(0).getSku();
                            if (TextUtils.equals(skuDisableAds, purchaseId)) {
                                payDisableAds();
                                Log.i(LOG_TAG, "пользователь купил товар");
                            } else {
                                SharedPreferences.Editor sharedPreferencesEditor = PreferenceManager
                                        .getDefaultSharedPreferences(MainActivity.this).edit();
                                sharedPreferencesEditor.putBoolean(DISABLE_ADS, false).apply();
                                payDisableAds = false;
                            }
                        }
                    }
                }
            }

            @Override
            public void onBillingServiceDisconnected() {
                // Try to restart the connection on the next request to
                // Google Play by calling the startConnection() method.
                //сюда мы попадем если что-то пойдет не так
            }
        });
    }


    private void querySkuDetails() {
        List<String> skuList = new ArrayList<>();
        skuList.add(skuDisableAds);
        SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
        params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);//INAPP тип одноразовая покупка
        mBillingClient.querySkuDetailsAsync(params.build(),
                new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(BillingResult billingResult,
                                                     List<SkuDetails> skuDetailsList) {
                        int responseCode = billingResult.getResponseCode();
                        if (responseCode == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
                            for (SkuDetails skuDetails : skuDetailsList) {
                                mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);
                            }
                        }
                    }
                });
    }

    private List<Purchase> queryPurchases() {
        Purchase.PurchasesResult purchasesResult = mBillingClient.queryPurchases(BillingClient.SkuType.INAPP);
        return purchasesResult.getPurchasesList();
    }

    // диологовое окно покупки товара
    private void launchBilling(String skuId) {
        BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
                .setSkuDetails(mSkuDetailsMap.get(skuId))
                .build();
        mBillingClient.launchBillingFlow(this, billingFlowParams);
    }

    // действия после покупки или наличия товара
    private void payDisableAds() {
        SharedPreferences.Editor sharedPreferencesEditor = PreferenceManager
                .getDefaultSharedPreferences(this).edit();
        sharedPreferencesEditor.putBoolean(DISABLE_ADS, true).apply();
        payDisableAds = true;
        buttonDisableAds.setVisibility(View.GONE);
        backgroundButtonDisableAds.setVisibility(View.GONE);
    }

    public void onClickPayDisableAds(View view) {
        launchBilling(skuDisableAds);
    }

Ответы (0 шт):