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); }
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); }