Example #1
0
 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);
 }
Example #2
0
        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();
            }
        }
Example #4
0
 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();
            }
        }
Example #8
0
        /// <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);
            }
        }
Example #9
0
 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);
     }
 }
Example #10
0
        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);
            }
        }
Example #11
0
 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}"
                     )
                 );
         }
     }
 }
Example #12
0
 public void OnAcknowledge(ProductDefinition product, GooglePurchase googlePurchase, GoogleBillingResult billingResult)
 {
     HandleFinishTransaction(product, googlePurchase, billingResult, googlePurchase.purchaseToken);
 }
Example #13
0
 public void OnConsume(ProductDefinition product, GooglePurchase googlePurchase, GoogleBillingResult billingResult, string purchaseToken)
 {
     HandleFinishTransaction(product, googlePurchase, billingResult, purchaseToken);
 }
Example #14
0
        void onPriceChangeConfirmationResult(AndroidJavaObject javaBillingResult)
        {
            GoogleBillingResult billingResult = new GoogleBillingResult(javaBillingResult);

            m_OnPriceChangeConfirmationResult(billingResult);
        }