package com.ea.nimble.mtx.googleplay.billing; import android.app.Activity; import android.content.Context; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.android.billingclient.api.AcknowledgePurchaseParams; import com.android.billingclient.api.AcknowledgePurchaseResponseListener; import com.android.billingclient.api.BillingClient; import com.android.billingclient.api.BillingClientStateListener; import com.android.billingclient.api.BillingFlowParams; import com.android.billingclient.api.BillingResult; import com.android.billingclient.api.ConsumeParams; import com.android.billingclient.api.ConsumeResponseListener; import com.android.billingclient.api.ProductDetails; import com.android.billingclient.api.ProductDetailsResponseListener; import com.android.billingclient.api.Purchase; import com.android.billingclient.api.PurchasesResponseListener; import com.android.billingclient.api.PurchasesUpdatedListener; import com.android.billingclient.api.QueryProductDetailsParams; import com.android.billingclient.api.QueryPurchasesParams; import com.ea.nimble.Log; import com.ea.nimble.LogSource; import com.firemonkeys.cloudcellapi.Consts; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /* loaded from: classes2.dex */ public class BillingHelper implements LogSource, PurchasesUpdatedListener, ProductDetailsResponseListener, PurchasesResponseListener { private String m_base64PublicKey; private BillingClient m_billingClient; ProductDetailsResponseListener m_productDetailsClientListener; PurchasesResponseListener m_purchaseResponseListener; PurchasesUpdatedListener m_purchasesUpdatedListener; private int m_catalogQueryRequests = 0; private int m_purchaseHistoryRequests = 0; List m_CatalogItemsList = new LinkedList(); List m_PurchasesList = new LinkedList(); @Override // com.ea.nimble.LogSource public String getLogSourceTitle() { return "MTX Google BillingHelper"; } public BillingHelper(Context context, String str) { this.m_billingClient = BillingClient.newBuilder(context).enablePendingPurchases().setListener(this).build(); this.m_base64PublicKey = str; } public boolean isBillingAvailable() { return this.m_billingClient.isReady(); } public void startSetup(@NonNull BillingClientStateListener billingClientStateListener, @NonNull PurchasesUpdatedListener purchasesUpdatedListener) { this.m_purchasesUpdatedListener = purchasesUpdatedListener; Log.Helper.LOGFUNC(this); if (this.m_billingClient.isReady()) { throw new IllegalStateException("Billing Client is already setup"); } Log.Helper.LOGV(this, "Starting Billing Setup", new Object[0]); this.m_billingClient.startConnection(billingClientStateListener); } public void dispose() { Log.Helper.LOGFUNC(this); Log.Helper.LOGV(this, "Disposing Billing Client Service", new Object[0]); BillingClient billingClient = this.m_billingClient; if (billingClient != null) { billingClient.endConnection(); this.m_billingClient = null; } } public void queryProductDetailsAsync(@NonNull List list, @NonNull List list2, @NonNull ProductDetailsResponseListener productDetailsResponseListener) { Log.Helper.LOGFUNC(this); this.m_CatalogItemsList.clear(); if (list.size() == 0 && list2.size() == 0) { Log.Helper.LOGW(this, "Empty Product List passed to queryProductDetails", new Object[0]); return; } this.m_productDetailsClientListener = productDetailsResponseListener; this.m_billingClient.queryProductDetailsAsync(QueryProductDetailsParams.newBuilder().setProductList(list).build(), this); this.m_catalogQueryRequests++; this.m_billingClient.queryProductDetailsAsync(QueryProductDetailsParams.newBuilder().setProductList(list2).build(), this); this.m_catalogQueryRequests++; } public void queryPurchasesAsync(@NonNull PurchasesResponseListener purchasesResponseListener) { Log.Helper.LOGFUNC(this); this.m_PurchasesList.clear(); this.m_purchaseResponseListener = purchasesResponseListener; if (isBillingAvailable()) { this.m_billingClient.queryPurchasesAsync(QueryPurchasesParams.newBuilder().setProductType(Consts.ITEM_TYPE_SUBSCRIPTION).build(), this); this.m_purchaseHistoryRequests++; this.m_billingClient.queryPurchasesAsync(QueryPurchasesParams.newBuilder().setProductType("inapp").build(), this); this.m_purchaseHistoryRequests++; return; } Log.Helper.LOGE(this, "Billing not available", new Object[0]); } @Override // com.android.billingclient.api.PurchasesResponseListener public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List list) { Log.Helper.LOGFUNC(this); this.m_purchaseHistoryRequests--; if (billingResult.getResponseCode() == 0) { for (Purchase purchase : list) { if (isSignatureValid(purchase)) { this.m_PurchasesList.add(purchase); } else { Log.Helper.LOGW(this, "Purchase signature verification **FAILED**. Not adding item.", new Object[0]); Log.Helper.LOGD(this, " Purchase data: " + purchase.getOriginalJson(), new Object[0]); Log.Helper.LOGD(this, " Signature: " + purchase.getSignature(), new Object[0]); } } } if (billingResult.getResponseCode() != 0 || this.m_purchaseHistoryRequests == 0) { this.m_purchaseHistoryRequests = 0; PurchasesResponseListener purchasesResponseListener = this.m_purchaseResponseListener; if (purchasesResponseListener != null) { purchasesResponseListener.onQueryPurchasesResponse(billingResult, this.m_PurchasesList); this.m_purchaseResponseListener = null; } } } @Override // com.android.billingclient.api.ProductDetailsResponseListener public void onProductDetailsResponse(@NonNull BillingResult billingResult, @Nullable List list) { Log.Helper.LOGFUNC(this); this.m_catalogQueryRequests--; if (billingResult.getResponseCode() == 0) { for (ProductDetails productDetails : list) { Log.Helper.LOGV(this, "onProductDetailsResponse: " + productDetails, new Object[0]); this.m_CatalogItemsList.add(productDetails); } } if (this.m_catalogQueryRequests == 0) { this.m_productDetailsClientListener.onProductDetailsResponse(billingResult, this.m_CatalogItemsList); } } public void launchPurchaseFlow(@NonNull Activity activity, @NonNull ProductDetails productDetails) { Log.Helper.LOGFUNC(this); ArrayList arrayList = new ArrayList(); if (Consts.ITEM_TYPE_SUBSCRIPTION.equals(productDetails.getProductType())) { arrayList.add(BillingFlowParams.ProductDetailsParams.newBuilder().setProductDetails(productDetails).setOfferToken(((ProductDetails.SubscriptionOfferDetails) productDetails.getSubscriptionOfferDetails().get(0)).getOfferToken()).build()); } else { arrayList.add(BillingFlowParams.ProductDetailsParams.newBuilder().setProductDetails(productDetails).build()); } this.m_billingClient.launchBillingFlow(activity, BillingFlowParams.newBuilder().setProductDetailsParamsList(arrayList).build()); } @Override // com.android.billingclient.api.PurchasesUpdatedListener public void onPurchasesUpdated(@NonNull BillingResult billingResult, @Nullable List list) { Log.Helper.LOGFUNC(this); this.m_purchasesUpdatedListener.onPurchasesUpdated(billingResult, list); } public void consumeAsync(@NonNull String str, @NonNull ConsumeResponseListener consumeResponseListener) { Log.Helper.LOGFUNC(this); this.m_billingClient.consumeAsync(ConsumeParams.newBuilder().setPurchaseToken(str).build(), consumeResponseListener); } public void acknowledgeAsync(@NonNull String str, @NonNull AcknowledgePurchaseResponseListener acknowledgePurchaseResponseListener) { Log.Helper.LOGFUNC(this); this.m_billingClient.acknowledgePurchase(AcknowledgePurchaseParams.newBuilder().setPurchaseToken(str).build(), acknowledgePurchaseResponseListener); } private boolean isSignatureValid(@NonNull Purchase purchase) { String str = this.m_base64PublicKey; if (str != null) { return Security.verifyPurchase(str, purchase.getOriginalJson(), purchase.getSignature()); } return true; } }