コード例 #1
0
        public void UpdateSubscription(
            Product oldProduct, Product newProduct, GooglePlayStoreProrationMode prorationMode)
        {
            if (!IsGooglePlayInAppBillingServiceAvailable())
            {
                return;
            }

            Purchase oldPurchase;

            if (!_inventory.GetPurchase(oldProduct.definition, out oldPurchase))
            {
                _billingUtil.LogErrorFormat(
                    "Cannot find the subscription purchase record to be updated: {0}",
                    oldProduct.definition.storeSpecificId);
                return;
            }

            if (_productInPurchaseFlow != null)
            {
                _billingUtil.RunOnMainThread(() =>
                                             _callback.OnPurchaseFailed(
                                                 new PurchaseFailureDescription(newProduct.definition.id,
                                                                                PurchaseFailureReason.ExistingPurchasePending,
                                                                                string.Format("A purchase for {0} is already in progress.",
                                                                                              _productInPurchaseFlow.id))));
                return;
            }

            _productInPurchaseFlow = newProduct.definition;
            using (var billingFlowParamBuilder = new AndroidJavaObject(Constants.BillingFlowParamsBuilder))
            {
                SkuDetails skuDetails;
                if (!_inventory.GetSkuDetails(newProduct.definition.storeSpecificId, out skuDetails))
                {
                    // A SKU that has ProductDefinition should appear in the inventory. If not, the issue could be
                    // transient so that it asks to try again later.
                    _callback.OnPurchaseFailed(
                        new PurchaseFailureDescription(newProduct.definition.id,
                                                       PurchaseFailureReason.ProductUnavailable,
                                                       string.Format("Cannot update subscription for {0} now, please try again later.",
                                                                     _productInPurchaseFlow.id)));
                    return;
                }

                billingFlowParamBuilder.Call <AndroidJavaObject>(
                    Constants.BillingFlowParamsBuilderSetSkuDetailsMethod, skuDetails.ToJava());
                billingFlowParamBuilder.Call <AndroidJavaObject>(
                    Constants.BillingFlowParamsBuilderSetOldSkuMethod,
                    oldPurchase.ProductId, oldPurchase.PurchaseToken);
                billingFlowParamBuilder.Call <AndroidJavaObject>(
                    Constants.BillingFlowParamsBuilderSetReplaceSkusProrationModeMethod,
                    (int)prorationMode);

                LaunchBillingFlow(billingFlowParamBuilder);
            }
        }
コード例 #2
0
 public void UpdateSubscription(Product oldProduct, Product newProduct,
                                GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown)
 {
 }