void ApplyOnPurchases(IEnumerable <AndroidJavaObject> purchases, IGoogleBillingResult billingResult, Action <GooglePurchase, string> action) { foreach (var purchase in purchases) { GooglePurchase googlePurchase = GooglePurchaseHelper.MakeGooglePurchase(m_GoogleCachedQuerySkuDetailsService.GetCachedQueriedSkus().ToList(), purchase); action(googlePurchase, billingResult.debugMessage); } }
static bool IsResponseCodeInRecoverableState(IGoogleBillingResult 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.ServiceUnavailable || billingResult.responseCode == GoogleBillingResponseCode.DeveloperError || billingResult.responseCode == GoogleBillingResponseCode.FatalError); }
public void Consolidate(IGoogleBillingResult billingResult, IEnumerable <AndroidJavaObject> skuDetails) { m_NumberReceivedCallbacks++; m_Responses.AddResponse(billingResult, skuDetails); if (m_NumberReceivedCallbacks >= k_RequiredNumberOfCallbacks) { m_OnSkuDetailsResponseConsolidated(m_Responses); } }
void HandleBillingFlowResult(IGoogleBillingResult billingResult, AndroidJavaObject sku) { if (billingResult.responseCode != GoogleBillingResponseCode.Ok) { m_GooglePurchaseCallback.OnPurchaseFailed( new PurchaseFailureDescription( sku.Call <string>("getSku"), PurchaseFailureReason.PurchasingUnavailable, billingResult.debugMessage ) ); } }
void HandleResultOkCases(IGoogleBillingResult result, IEnumerable <AndroidJavaObject> purchases) { if (purchases.Any()) { ApplyOnPurchases(purchases, OnPurchaseOk); } else if (IsLastProrationModeDeferred()) { OnDeferredProrationUpgradeDowngradeSubscriptionOk(); } else { HandleErrorCases(result, purchases); } }
void HandleErrorCases(IGoogleBillingResult billingResult, IEnumerable <AndroidJavaObject> purchases) { if (!purchases.Any()) { if (billingResult.responseCode == GoogleBillingResponseCode.ItemAlreadyOwned) { m_GooglePurchaseCallback.OnPurchaseFailed( new PurchaseFailureDescription( m_LastKnownProductService.GetLastKnownProductId(), PurchaseFailureReason.DuplicateTransaction, billingResult.debugMessage ) ); } else if (billingResult.responseCode == GoogleBillingResponseCode.UserCanceled) { 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} - Response Code = " + billingResult.responseCode ) ); } } else { ApplyOnPurchases(purchases, billingResult, OnPurchaseFailed); } }
public void HandleFinishTransaction(ProductDefinition product, GooglePurchase googlePurchase, IGoogleBillingResult billingResult, string purchaseToken) { if (!m_ProcessedPurchaseToken.Contains(purchaseToken)) { if (billingResult.responseCode == GoogleBillingResponseCode.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, IGoogleBillingResult billingResult) { HandleFinishTransaction(product, googlePurchase, billingResult, googlePurchase.purchaseToken); }
public void OnConsume(ProductDefinition product, GooglePurchase googlePurchase, IGoogleBillingResult billingResult, string purchaseToken) { HandleFinishTransaction(product, googlePurchase, billingResult, purchaseToken); }