0

How do I write a function that checks whether a user has bought a subscription or not whenever my App opens?

These function only tells that the user successfully bought the subscription or cancel the procedure during the payment procedure.

private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
    @Override
    public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
        // To be implemented in a later section.
        if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchases != null) {
            for (Purchase purchase : purchases) {
                handlePurchase(purchase);
                Log.d("purchaseListners", purchase.toString());
            }
            Log.d("purchaseListners", "true");

     

        } else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED){
            // Handle an error caused by a user cancelling the purchase flow.
            Log.d("purchaseListners", "false");
            Constant.subscription = false;
        } else {
            Log.d("purchaseListners", "shh");
        }

    }
};


void handlePurchase(Purchase purchase) {
    ConsumeParams consumeParams =
            ConsumeParams.newBuilder()
                    .setPurchaseToken(purchase.getPurchaseToken())
                    .build();

    ConsumeResponseListener listener = new ConsumeResponseListener() {
        @Override
        public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                Constant.subscription = true;
                // Handle the success of the consume operation.

                Log.d("purchaseListners", billingResult.toString());
            }
        }
    };

    billingClient.consumeAsync(consumeParams, listener);
}
IT Student
  • 13
  • 3

1 Answers1

0

To check if user has bought a subscription use queryPurchasesAsync() function.

D.Djaber
  • 1
  • 1