static bool IsResponseCodeInRecoverableState(GoogleBillingResult billingResult) { // DeveloperError is only a possible recoverable state because of this // https://github.com/android/play-billing-samples/issues/337 // usually works like a charm next acknowledge return(billingResult.responseCode == GoogleBillingResponseCode.k_ServiceUnavailable || billingResult.responseCode == GoogleBillingResponseCode.k_DeveloperError || billingResult.responseCode == GoogleBillingResponseCode.k_FatalError); }
void ApplyOnPurchases(AndroidJavaObject purchasesList, GoogleBillingResult billingResult, Action <GooglePurchase, string> action) { int size = purchasesList.Call <int>("size"); for (int index = 0; index < size; index++) { AndroidJavaObject purchase = purchasesList.Call <AndroidJavaObject>("get", index); GooglePurchase googlePurchase = GooglePurchaseHelper.MakeGooglePurchase(m_GoogleCachedQuerySkuDetailsService.GetCachedQueriedSkus().ToList(), purchase); action(googlePurchase, billingResult.debugMessage); } }
void onBillingSetupFinished(AndroidJavaObject billingResult) { IGoogleBillingResult result = new GoogleBillingResult(billingResult); if (result.responseCode == GoogleBillingResponseCode.Ok) { m_OnConnected(); } else { m_Disconnect(); } }
void HandleBillingFlowResult(GoogleBillingResult billingResult, AndroidJavaObject sku) { if (billingResult.responseCode != BillingClientResponseEnum.OK()) { m_GooglePurchaseCallback.OnPurchaseFailed( new PurchaseFailureDescription( sku.Call <string>("getSku"), PurchaseFailureReason.PurchasingUnavailable, billingResult.debugMessage ) ); } }
void onBillingSetupFinished(AndroidJavaObject billingResult) { GoogleBillingResult result = new GoogleBillingResult(billingResult); if (result.responseCode == BillingClientResponseEnum.OK()) { m_OnConnected(); } else { m_Disconnect(); } }
void HandleResultOkCases(GoogleBillingResult result, AndroidJavaObject purchasesList) { if (purchasesList != null) { ApplyOnPurchases(purchasesList, OnPurchaseOk); } else if (IsLastProrationModeDeferred()) { OnDeferredProrationUpgradeDowngradeSubscriptionOk(); } else { HandleErrorCases(result, purchasesList); } }
void ConsolidateOnSkuDetailsReceived(AndroidJavaObject javaBillingResult, AndroidJavaObject skuDetails, Action <List <AndroidJavaObject> > onSkuDetailsResponse) { m_NumberReceivedCallbacks++; GoogleBillingResult billingResult = new GoogleBillingResult(javaBillingResult); if (billingResult.responseCode == BillingClientResponseEnum.OK()) { AddToQueriedSkuDetails(skuDetails); } if (m_NumberReceivedCallbacks >= k_RequiredNumberOfCallbacks) { m_GoogleCachedQuerySkuDetailsService.AddCachedQueriedSkus(m_QueriedSkuDetails); onSkuDetailsResponse(m_QueriedSkuDetails); Clear(); } }
/// <summary> /// Implementation of com.android.billingclient.api.PurchasesUpdatedListener#onPurchasesUpdated /// </summary> /// <param name="billingResult"></param> /// <param name="purchasesList"></param> void onPurchasesUpdated(AndroidJavaObject billingResult, AndroidJavaObject purchasesList) { GoogleBillingResult result = new GoogleBillingResult(billingResult); if (result.responseCode == BillingClientResponseEnum.OK() && purchasesList != null) { ApplyOnPurchases(purchasesList, OnPurchaseOk); } else if (result.responseCode == BillingClientResponseEnum.USER_CANCELED() && purchasesList != null) { ApplyOnPurchases(purchasesList, OnPurchaseCanceled); } else if (result.responseCode == BillingClientResponseEnum.ITEM_ALREADY_OWNED() && purchasesList != null) { ApplyOnPurchases(purchasesList, OnPurchaseAlreadyOwned); } else { HandleErrorCases(result, purchasesList); } }
void HandleErrorCases(GoogleBillingResult billingResult, AndroidJavaObject purchasesList) { if (purchasesList == null) { if (billingResult.responseCode == BillingClientResponseEnum.ITEM_ALREADY_OWNED()) { m_GooglePurchaseCallback.OnPurchaseFailed( new PurchaseFailureDescription( m_LastKnownProductService.GetLastKnownProductId(), PurchaseFailureReason.DuplicateTransaction, billingResult.debugMessage ) ); } else if (billingResult.responseCode == BillingClientResponseEnum.USER_CANCELED()) { m_GooglePurchaseCallback.OnPurchaseFailed( new PurchaseFailureDescription( m_LastKnownProductService.GetLastKnownProductId(), PurchaseFailureReason.UserCancelled, billingResult.debugMessage ) ); } else { m_GooglePurchaseCallback.OnPurchaseFailed( new PurchaseFailureDescription( m_LastKnownProductService.GetLastKnownProductId(), PurchaseFailureReason.Unknown, billingResult.debugMessage + " {M: GPUL.HEC}" ) ); } } else { ApplyOnPurchases(purchasesList, billingResult, OnPurchaseFailed); } }
void onPurchasesUpdated(AndroidJavaObject billingResult, AndroidJavaObject javaPurchasesList) { IGoogleBillingResult result = new GoogleBillingResult(billingResult); var purchases = javaPurchasesList.Enumerate <AndroidJavaObject>(); if (result.responseCode == GoogleBillingResponseCode.Ok) { HandleResultOkCases(result, purchases); } else if (result.responseCode == GoogleBillingResponseCode.UserCanceled && purchases.Any()) { ApplyOnPurchases(purchases, OnPurchaseCanceled); } else if (result.responseCode == GoogleBillingResponseCode.ItemAlreadyOwned && purchases.Any()) { ApplyOnPurchases(purchases, OnPurchaseAlreadyOwned); } else { HandleErrorCases(result, purchases); } }
public void HandleFinishTransaction(ProductDefinition product, GooglePurchase googlePurchase, GoogleBillingResult billingResult, string purchaseToken) { if (!m_ProcessedPurchaseToken.Contains(purchaseToken)) { if (billingResult.responseCode == GoogleBillingResponseCode.k_Ok) { m_ProcessedPurchaseToken.Add(purchaseToken); CallPurchaseSucceededUpdateReceipt(product, googlePurchase, purchaseToken); } else if (IsResponseCodeInRecoverableState(billingResult)) { FinishTransaction(product, purchaseToken); } else { m_StoreCallback?.OnPurchaseFailed( new PurchaseFailureDescription( product.storeSpecificId, PurchaseFailureReason.Unknown, billingResult.debugMessage + " {code: " + billingResult.responseCode + ", M: GPSFTS.HFT}" ) ); } } }
public void OnAcknowledge(ProductDefinition product, GooglePurchase googlePurchase, GoogleBillingResult billingResult) { HandleFinishTransaction(product, googlePurchase, billingResult, googlePurchase.purchaseToken); }
public void OnConsume(ProductDefinition product, GooglePurchase googlePurchase, GoogleBillingResult billingResult, string purchaseToken) { HandleFinishTransaction(product, googlePurchase, billingResult, purchaseToken); }
void onPriceChangeConfirmationResult(AndroidJavaObject javaBillingResult) { GoogleBillingResult billingResult = new GoogleBillingResult(javaBillingResult); m_OnPriceChangeConfirmationResult(billingResult); }