Search in sources :

Example 1 with SkuType

use of com.android.billingclient.api.BillingClient.SkuType in project Android-InAppBilling by LiteKite.

the class BillingManager method queryPurchasesAsync.

/**
 * Queries InApp and Subscribed purchase results from Google Play Locally.
 *
 * @param purchases this list contains all the product purchases made, has InApp and
 *     Subscription purchased results.
 * @param skuType InApp or Subscription.
 * @param executeWhenFinished Once the InApp product purchase results are given, then
 *     subscription based purchase results are queried and results are placed into the {@link
 *     #myPurchasesResultList}
 */
private void queryPurchasesAsync(final List<Purchase> purchases, @SkuType final String skuType, final Runnable executeWhenFinished) {
    PurchasesResponseListener purchasesResponseListener = (billingResult, list) -> {
        if (billingResult.getResponseCode() == BillingResponseCode.OK) {
            purchases.addAll(list);
            if (executeWhenFinished != null) {
                executeWhenFinished.run();
            }
        } else {
            MonetizeApp.printLog(TAG, "queryPurchasesAsync() got an error response code: " + billingResult.getResponseCode());
            logErrorType(billingResult);
        }
        if (executeWhenFinished == null) {
            processPurchases(purchases);
        }
    };
    executeServiceRequest(() -> myBillingClient.queryPurchasesAsync(skuType, purchasesResponseListener));
}
Also used : PurchasesResponseListener(com.android.billingclient.api.PurchasesResponseListener) NetworkManager(com.litekite.monetize.network.NetworkManager) Context(android.content.Context) WorkExecutor(com.litekite.monetize.worker.WorkExecutor) NonNull(androidx.annotation.NonNull) BillingClientStateListener(com.android.billingclient.api.BillingClientStateListener) SkuDetailsResponseListener(com.android.billingclient.api.SkuDetailsResponseListener) AppDatabase(com.litekite.monetize.room.database.AppDatabase) PurchaseHistoryRecord(com.android.billingclient.api.PurchaseHistoryRecord) MonetizeApp(com.litekite.monetize.app.MonetizeApp) HashMap(java.util.HashMap) CallbackProvider(com.litekite.monetize.base.CallbackProvider) Singleton(javax.inject.Singleton) SkuType(com.android.billingclient.api.BillingClient.SkuType) BillingSkuDetails(com.litekite.monetize.room.entity.BillingSkuDetails) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Inject(javax.inject.Inject) R(com.litekite.monetize.R) BillingResult(com.android.billingclient.api.BillingResult) PurchasesUpdatedListener(com.android.billingclient.api.PurchasesUpdatedListener) Map(java.util.Map) ConsumeParams(com.android.billingclient.api.ConsumeParams) PurchasesResponseListener(com.android.billingclient.api.PurchasesResponseListener) AcknowledgePurchaseParams(com.android.billingclient.api.AcknowledgePurchaseParams) SkuDetails(com.android.billingclient.api.SkuDetails) BillingResponseCode(com.android.billingclient.api.BillingClient.BillingResponseCode) ConsumeResponseListener(com.android.billingclient.api.ConsumeResponseListener) Set(java.util.Set) SkuDetailsParams(com.android.billingclient.api.SkuDetailsParams) PurchaseHistoryResponseListener(com.android.billingclient.api.PurchaseHistoryResponseListener) StringRes(androidx.annotation.StringRes) FeatureType(com.android.billingclient.api.BillingClient.FeatureType) Purchase(com.android.billingclient.api.Purchase) List(java.util.List) Nullable(androidx.annotation.Nullable) BillingClient(com.android.billingclient.api.BillingClient) AcknowledgePurchaseResponseListener(com.android.billingclient.api.AcknowledgePurchaseResponseListener) BillingPurchaseDetails(com.litekite.monetize.room.entity.BillingPurchaseDetails) BillingFlowParams(com.android.billingclient.api.BillingFlowParams) Activity(android.app.Activity)

Example 2 with SkuType

use of com.android.billingclient.api.BillingClient.SkuType in project Android-InAppBilling by LiteKite.

the class BillingManager method querySkuDetailsAsync.

/**
 * Queries SKU Details from Google Play Remote Server of SKU Types (InApp and Subscription).
 *
 * @param skuResultLMap contains SKU ID and Price Details returned by the sku details query.
 * @param params contains list of SKU IDs and SKU Type (InApp or Subscription).
 * @param billingType InApp or Subscription.
 * @param executeWhenFinished contains query for InApp SKU Details that will be run after
 */
private void querySkuDetailsAsync(Map<String, SkuDetails> skuResultLMap, SkuDetailsParams.Builder params, @SkuType String billingType, Runnable executeWhenFinished) {
    final SkuDetailsResponseListener listener = (billingResult, skuDetailsList) -> {
        // Process the result.
        if (billingResult.getResponseCode() != BillingResponseCode.OK) {
            MonetizeApp.printLog(TAG, "Unsuccessful query for type: " + billingType + ". Error code: " + billingResult.getResponseCode());
        } else if (skuDetailsList != null && skuDetailsList.size() > 0) {
            for (SkuDetails skuDetails : skuDetailsList) {
                skuResultLMap.put(skuDetails.getSku(), skuDetails);
            }
        }
        if (executeWhenFinished != null) {
            executeWhenFinished.run();
            return;
        }
        if (skuResultLMap.size() == 0) {
            MonetizeApp.printLog(TAG, "sku error: " + context.getString(R.string.err_no_sku));
        } else {
            MonetizeApp.printLog(TAG, "storing sku list locally");
            storeSkuDetailsLocally(skuResultLMap);
        }
    };
    // Creating a runnable from the request to use it inside our connection retry policy below
    executeServiceRequest(() -> myBillingClient.querySkuDetailsAsync(params.build(), listener));
}
Also used : NetworkManager(com.litekite.monetize.network.NetworkManager) Context(android.content.Context) WorkExecutor(com.litekite.monetize.worker.WorkExecutor) NonNull(androidx.annotation.NonNull) BillingClientStateListener(com.android.billingclient.api.BillingClientStateListener) SkuDetailsResponseListener(com.android.billingclient.api.SkuDetailsResponseListener) AppDatabase(com.litekite.monetize.room.database.AppDatabase) PurchaseHistoryRecord(com.android.billingclient.api.PurchaseHistoryRecord) MonetizeApp(com.litekite.monetize.app.MonetizeApp) HashMap(java.util.HashMap) CallbackProvider(com.litekite.monetize.base.CallbackProvider) Singleton(javax.inject.Singleton) SkuType(com.android.billingclient.api.BillingClient.SkuType) BillingSkuDetails(com.litekite.monetize.room.entity.BillingSkuDetails) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Inject(javax.inject.Inject) R(com.litekite.monetize.R) BillingResult(com.android.billingclient.api.BillingResult) PurchasesUpdatedListener(com.android.billingclient.api.PurchasesUpdatedListener) Map(java.util.Map) ConsumeParams(com.android.billingclient.api.ConsumeParams) PurchasesResponseListener(com.android.billingclient.api.PurchasesResponseListener) AcknowledgePurchaseParams(com.android.billingclient.api.AcknowledgePurchaseParams) SkuDetails(com.android.billingclient.api.SkuDetails) BillingResponseCode(com.android.billingclient.api.BillingClient.BillingResponseCode) ConsumeResponseListener(com.android.billingclient.api.ConsumeResponseListener) Set(java.util.Set) SkuDetailsParams(com.android.billingclient.api.SkuDetailsParams) PurchaseHistoryResponseListener(com.android.billingclient.api.PurchaseHistoryResponseListener) StringRes(androidx.annotation.StringRes) FeatureType(com.android.billingclient.api.BillingClient.FeatureType) Purchase(com.android.billingclient.api.Purchase) List(java.util.List) Nullable(androidx.annotation.Nullable) BillingClient(com.android.billingclient.api.BillingClient) AcknowledgePurchaseResponseListener(com.android.billingclient.api.AcknowledgePurchaseResponseListener) BillingPurchaseDetails(com.litekite.monetize.room.entity.BillingPurchaseDetails) BillingFlowParams(com.android.billingclient.api.BillingFlowParams) Activity(android.app.Activity) BillingSkuDetails(com.litekite.monetize.room.entity.BillingSkuDetails) SkuDetails(com.android.billingclient.api.SkuDetails) SkuDetailsResponseListener(com.android.billingclient.api.SkuDetailsResponseListener)

Example 3 with SkuType

use of com.android.billingclient.api.BillingClient.SkuType in project Android-InAppBilling by LiteKite.

the class BillingManager method queryPurchaseHistoryAsync.

/**
 * Queries InApp and Subscribed purchase results from Google Play Remote Server.
 *
 * @param purchases this list contains all the product purchases made, has InApp and
 *     Subscription purchased results.
 * @param skuType InApp or Subscription.
 * @param executeWhenFinished Once the InApp product purchase results are given, then
 *     subscription based purchase results are queried and results are placed into the {@link
 *     #myPurchasesResultList}
 */
private void queryPurchaseHistoryAsync(final List<PurchaseHistoryRecord> purchases, @SkuType final String skuType, final Runnable executeWhenFinished) {
    PurchaseHistoryResponseListener listener = (billingResult, list) -> {
        if (billingResult.getResponseCode() == BillingResponseCode.OK && list != null) {
            purchases.addAll(list);
            if (executeWhenFinished != null) {
                executeWhenFinished.run();
            }
        } else {
            MonetizeApp.printLog(TAG, "queryPurchaseHistoryAsync() got an error response code: " + billingResult.getResponseCode());
            logErrorType(billingResult);
        }
        if (executeWhenFinished == null) {
            storePurchaseHistoryRecordsLocally(purchases);
        }
    };
    executeServiceRequest(() -> myBillingClient.queryPurchaseHistoryAsync(skuType, listener));
}
Also used : NetworkManager(com.litekite.monetize.network.NetworkManager) Context(android.content.Context) WorkExecutor(com.litekite.monetize.worker.WorkExecutor) NonNull(androidx.annotation.NonNull) BillingClientStateListener(com.android.billingclient.api.BillingClientStateListener) SkuDetailsResponseListener(com.android.billingclient.api.SkuDetailsResponseListener) AppDatabase(com.litekite.monetize.room.database.AppDatabase) PurchaseHistoryRecord(com.android.billingclient.api.PurchaseHistoryRecord) MonetizeApp(com.litekite.monetize.app.MonetizeApp) HashMap(java.util.HashMap) CallbackProvider(com.litekite.monetize.base.CallbackProvider) Singleton(javax.inject.Singleton) SkuType(com.android.billingclient.api.BillingClient.SkuType) BillingSkuDetails(com.litekite.monetize.room.entity.BillingSkuDetails) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Inject(javax.inject.Inject) R(com.litekite.monetize.R) BillingResult(com.android.billingclient.api.BillingResult) PurchasesUpdatedListener(com.android.billingclient.api.PurchasesUpdatedListener) Map(java.util.Map) ConsumeParams(com.android.billingclient.api.ConsumeParams) PurchasesResponseListener(com.android.billingclient.api.PurchasesResponseListener) AcknowledgePurchaseParams(com.android.billingclient.api.AcknowledgePurchaseParams) SkuDetails(com.android.billingclient.api.SkuDetails) BillingResponseCode(com.android.billingclient.api.BillingClient.BillingResponseCode) ConsumeResponseListener(com.android.billingclient.api.ConsumeResponseListener) Set(java.util.Set) SkuDetailsParams(com.android.billingclient.api.SkuDetailsParams) PurchaseHistoryResponseListener(com.android.billingclient.api.PurchaseHistoryResponseListener) StringRes(androidx.annotation.StringRes) FeatureType(com.android.billingclient.api.BillingClient.FeatureType) Purchase(com.android.billingclient.api.Purchase) List(java.util.List) Nullable(androidx.annotation.Nullable) BillingClient(com.android.billingclient.api.BillingClient) AcknowledgePurchaseResponseListener(com.android.billingclient.api.AcknowledgePurchaseResponseListener) BillingPurchaseDetails(com.litekite.monetize.room.entity.BillingPurchaseDetails) BillingFlowParams(com.android.billingclient.api.BillingFlowParams) Activity(android.app.Activity) PurchaseHistoryResponseListener(com.android.billingclient.api.PurchaseHistoryResponseListener)

Aggregations

Activity (android.app.Activity)3 Context (android.content.Context)3 NonNull (androidx.annotation.NonNull)3 Nullable (androidx.annotation.Nullable)3 StringRes (androidx.annotation.StringRes)3 AcknowledgePurchaseParams (com.android.billingclient.api.AcknowledgePurchaseParams)3 AcknowledgePurchaseResponseListener (com.android.billingclient.api.AcknowledgePurchaseResponseListener)3 BillingClient (com.android.billingclient.api.BillingClient)3 BillingResponseCode (com.android.billingclient.api.BillingClient.BillingResponseCode)3 FeatureType (com.android.billingclient.api.BillingClient.FeatureType)3 SkuType (com.android.billingclient.api.BillingClient.SkuType)3 BillingClientStateListener (com.android.billingclient.api.BillingClientStateListener)3 BillingFlowParams (com.android.billingclient.api.BillingFlowParams)3 BillingResult (com.android.billingclient.api.BillingResult)3 ConsumeParams (com.android.billingclient.api.ConsumeParams)3 ConsumeResponseListener (com.android.billingclient.api.ConsumeResponseListener)3 Purchase (com.android.billingclient.api.Purchase)3 PurchaseHistoryRecord (com.android.billingclient.api.PurchaseHistoryRecord)3 PurchaseHistoryResponseListener (com.android.billingclient.api.PurchaseHistoryResponseListener)3 PurchasesResponseListener (com.android.billingclient.api.PurchasesResponseListener)3