示例#1
0
        public void PurchaseItem(ButtonEventArgs args)
        {
            if (!CoreUtility.Me.ShowInternetConnection())
            {
                return;
            }

#if (UNITY_IOS && !STOREKIT) || (UNITY_ANDROID && !GOOGLEIAB)
            PopupMessages.Me.InAppNotIntegratedMessage();
            return;
#endif

            string coststring;
            int    index;
            int.TryParse(args.data, out index);

            pID                  = InAppInfo[index].ID;
            isRestore            = false;
            isRestoreItemSuccess = false;
            coststring           = isProductReceived && isLocalStoreCost ? InAppInfo[index].CostStringLocaleBase : "$" + InAppInfo[index].CostUSD;
            MyDebug.Log("InAppManager::PurchaseItem => " + pID + ", " + index + ", " + InAppInfo[index].DisplayName + ", " + coststring);
            PopupMessages.Me.InAppProcessMessage(InAppInfo[index].DisplayName, coststring);

#if UNITY_EDITOR
            PurchaseSuccessful(pID, "UnityTest_" + System.DateTime.Now.ToOADate());
            return;
#endif

            #region iOS Methods
#if UNITY_IOS && !UNITY_EDITOR && STOREKIT
            StoreKitBinding.purchaseProduct(pID, 1);
#endif
            #endregion

            #region Android => Google Play Mathods
#if UNITY_ANDROID && !UNITY_EDITOR && !AMAZONSTORE && GOOGLEIAB
            GoogleIAB.queryInventory(inappids);
#endif
            #endregion

            #region Android => Amazon Store Methods
#if UNITY_ANDROID && !UNITY_EDITOR && AMAZONSTORE
#if UNDERGROUND
            pID = pID.Replace("supercell.", "supercell.underground.");
#endif

            if (unavailableSkus.Contains(pID))
            {
                ItemUnavailable(pID);
                return;
            }
            // Construct object passed to operation as input
            SkuInput request = new SkuInput();
            request.Sku = pID;
            // Call synchronous operation with input object
            RequestOutput response = iapService.Purchase(request);
#endif
            #endregion
        }
示例#2
0
        public override void DoUpgrade()
        {
            var sku = new SkuInput {
                Sku = AmazonUpgrade.SKU
            };

            this.amazonIapV2.Purchase(sku);
        }
示例#3
0
        public void PurchaseItem(Item item)
        {
            EB.Debug.Log("PurchaseItem: " + item.productId);

            //TODO: if user doesn't have userid yet warning / retry

            SkuInput sku = new SkuInput();

            sku.Sku = item.productId;
            _iapService.Purchase(sku);
        }
示例#4
0
    //BUTTONS
    public void OnAmazonPurchasePress()
    {
        Status.GetComponent <Text>().text = "Processing Purchase....";
        purchaseRequest = new SkuInput();
        if (ItemToPurchaseField.GetComponent <InputField>().text.Length == 0)
        {
            purchaseRequest.Sku = _defaultSKU;
        }
        else
        {
            purchaseRequest.Sku = ItemToPurchaseField.GetComponent <InputField>().text;
        }

        purchaseRequestOutput = iapService.Purchase(purchaseRequest);
    }
示例#5
0
    public void Purchase(string SKU)
    {
                #if AMAZON_BILLING_ENABLED
        currentSKU = SKU;

        // Construct object passed to operation as input
        SkuInput request = new SkuInput();

        // Set input value
        request.Sku = SKU;

        // Call synchronous operation with input object
        RequestOutput response = iapService.Purchase(request);

        // Get return value
        string requestIdString = response.RequestId;

        Debug.Log("requestIdString " + requestIdString);
                #endif
    }
示例#6
0
        /// <summary>
        /// Purchase iap or sub
        /// </summary>
        /// <param name="productId">iap or sub sku to be purchased</param>
        /// <param name="itemType">not required for amazon</param>
        /// <param name="payload">not used for amazon</param>
        /// <param name="verifyPurchase">not used for amazon</param>
        /// <returns></returns>
        public async Task <PurchaseResult> PurchaseAsync(string productId, ItemType itemType = ItemType.InAppPurchase, string payload = null, IInAppBillingVerifyPurchase verifyPurchase = null)
        {
            if (await CheckIfUserHasActiveSubscriptionAsync(productId))
            {
                return new PurchaseResult()
                       {
                           PurchaseState = PurchaseState.Purchased, Sku = productId
                       }
            }
            ;

            if (context == null)
            {
                context = AmazonIapV2Impl.Instance;
            }


            //bool userOwnsSubscription = await CheckIfUserHasSubscriptionAsync(subscriptionStoreId);
            //if (userOwnsSubscription)
            //{
            //    Settings.IsSubscribed = true;

            //    // Unlock all the subscription add-on features here.
            //    return true;
            //}
            // Construct object passed to operation as input
            //await Task.Delay(TimeSpan.FromMilliseconds(1));an.FromMilliseconds(1));
            var taskCompletionSource = new TaskCompletionSource <PurchaseResult>();

            try
            {
                SkuInput request = new SkuInput();

                // Set input value
                request.Sku = productId;

                // Call synchronous operation with input object
                string requestId = context.Purchase(request).RequestId;
                // Get return value

                PurchaseResponseDelegator delegator = null;
                delegator = new PurchaseResponseDelegator(async response =>
                {
                    await Task.Run(() =>
                    {
                        if (response.RequestId == requestId)
                        {
                            var result = GetPurchaseEventHandler(response);
                            var sucess = taskCompletionSource.TrySetResult(result);
                            //await Task.Delay(TimeSpan.FromMilliseconds(1));
                            context.RemovePurchaseResponseListener(delegator.responseDelegate);
                        }
                    });
                });
                // Register for an event
                context.AddPurchaseResponseListener(delegator.responseDelegate);

                return(await taskCompletionSource.Task);
            }
            catch (Exception)
            {
                return(new PurchaseResult()
                {
                    PurchaseState = PurchaseState.Failed, Sku = productId
                });
            }
        }