Example #1
0
 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);
     }
 }
Example #2
0
 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);
 }
Example #3
0
        public void Consolidate(IGoogleBillingResult billingResult, IEnumerable <AndroidJavaObject> skuDetails)
        {
            m_NumberReceivedCallbacks++;

            m_Responses.AddResponse(billingResult, skuDetails);

            if (m_NumberReceivedCallbacks >= k_RequiredNumberOfCallbacks)
            {
                m_OnSkuDetailsResponseConsolidated(m_Responses);
            }
        }
Example #4
0
 void HandleBillingFlowResult(IGoogleBillingResult billingResult, AndroidJavaObject sku)
 {
     if (billingResult.responseCode != GoogleBillingResponseCode.Ok)
     {
         m_GooglePurchaseCallback.OnPurchaseFailed(
             new PurchaseFailureDescription(
                 sku.Call <string>("getSku"),
                 PurchaseFailureReason.PurchasingUnavailable,
                 billingResult.debugMessage
                 )
             );
     }
 }
Example #5
0
 void HandleResultOkCases(IGoogleBillingResult result, IEnumerable <AndroidJavaObject> purchases)
 {
     if (purchases.Any())
     {
         ApplyOnPurchases(purchases, OnPurchaseOk);
     }
     else if (IsLastProrationModeDeferred())
     {
         OnDeferredProrationUpgradeDowngradeSubscriptionOk();
     }
     else
     {
         HandleErrorCases(result, purchases);
     }
 }
Example #6
0
 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);
     }
 }
Example #7
0
 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}"
                     )
                 );
         }
     }
 }
Example #8
0
 public void OnAcknowledge(ProductDefinition product, GooglePurchase googlePurchase, IGoogleBillingResult billingResult)
 {
     HandleFinishTransaction(product, googlePurchase, billingResult, googlePurchase.purchaseToken);
 }
Example #9
0
 public void OnConsume(ProductDefinition product, GooglePurchase googlePurchase, IGoogleBillingResult billingResult, string purchaseToken)
 {
     HandleFinishTransaction(product, googlePurchase, billingResult, purchaseToken);
 }