Как создать разовую оплату billin play market

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

private void initBilling() {
    mBillingClient = BillingClient.newBuilder(this).setListener(new PurchasesUpdatedListener() {
        @Override
        public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
            if (responseCode == BillingClient.BillingResponse.OK && purchases != null) {
                //here when purchase completed
                //payComplete();
            }
        }
    }).build();
    mBillingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponseCode) {
            if (billingResponseCode == BillingClient.BillingResponse.OK) {
                //below you can query information about products and purchase
                querySkuDetails(); //query for products
                List<Purchase> purchasesList = queryPurchases(); //query for purchases

                //if the purchase has already been made to give the goods
                for (int i = 0; i < purchasesList.size(); i++) {
                    String purchaseId = purchasesList.get(i).getSku();
                    if(TextUtils.equals(mSkuId, purchaseId)) {
                        payComplete();

                    }
                }
            }
        }

        @Override
        public void onBillingServiceDisconnected() {
            //here when something went wrong, e.g. no internet connection
        }
    });
}

private void querySkuDetails() {
    SkuDetailsParams.Builder skuDetailsParamsBuilder = SkuDetailsParams.newBuilder();
    List<String> skuList = new ArrayList<>();
    skuList.add(mSkuId);
    skuDetailsParamsBuilder.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(), new SkuDetailsResponseListener() {
        @Override
        public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
            if (responseCode == 0) {
                for (SkuDetails skuDetails : skuDetailsList) {
                    mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);
                }
            }
        }
    });
}

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

public void launchBilling(String skuId) {
    BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
            .setSkuDetails(mSkuDetailsMap.get(skuId))
            .build();
    mBillingClient.launchBillingFlow(this, billingFlowParams);
}

private void payComplete() {
    bill=1;


}

и теперь после оплаты bill постоянно будет равен 1, а мне нужно грубо говоря, чтобы bill разово был равен 1, потом опять нужно было оплачивать контент. В таком варианте как сейчас, покупка контента происходит навсегда.


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