예제 #1
0
        public IInAppProcess Buy(string idProduct)
        {
            var process = new InAppProcess();

            Predicate <Product> predicate = predicateProduct => predicateProduct.Id == idProduct;

            if (_products.Exists(predicate) == false)
            {
                Debug.LogError($"Trying to start buying a product that is not in the catalog. Product id: { idProduct}");
                process.result = Result.Fail;
                process.isDone = true;
                return(process);
            }

            var product = _products.Find(predicate);

            void purchaseHandler(string id, Result result, string receipt = null)
            {
                if (idProduct == id && result == Result.Succes)
                {
                    //действия при удачной покупке
                    switch (product.ProductType)
                    {
                    case ProductType.Consumable:
                        break;

                    case ProductType.NonConsumable:
                        product.isBuy = true;
                        break;

                    case ProductType.Subscription:
                        break;

                    default:
                        break;
                    }

                    SaveProductToPlayerPrefs(product, _keyForCheckIsBy);
                }

                process.result   = result;
                process.isDone   = true;
                process.argument = receipt;

                _purchasingEvent -= purchaseHandler;
            }

            _purchasingEvent += purchaseHandler;

            _storeController.InitiatePurchase(_storeController.products.WithID(idProduct));

            return(process);
        }
예제 #2
0
        public IInAppProcess Inizialization()
        {
            var process = new InAppProcess();

            //if (_isInit)
            //{
            //    process.result = Result.Succes;
            //    process.isDone = true;
            //    return process;
            //}

            void initHandler(Result result)
            {
                if (result == Result.Succes)
                {
                    RefreshProducts();
                }

                process.result = result;
                process.isDone = true;

                _initEvent -= initHandler;
            }

            _initEvent += initHandler;

            var module = StandardPurchasingModule.Instance();

#if UNITY_EDITOR
            module.useFakeStoreUIMode = FakeStoreUIMode.StandardUser;
#endif
            var builder = ConfigurationBuilder.Instance(module);

            _products.ForEach(product => builder.AddProduct(product.Id, (UnityEngine.Purchasing.ProductType)(int) product.ProductType, product.MarketIds));

            UnityPurchasing.Initialize(this, builder);

            return(process);
        }