예제 #1
0
        PurchaseProcessingResult IStoreListener.ProcessPurchase(PurchaseEventArgs e)
        {
            PurchaseProcessingResult result = PurchaseProcessingResult.Pending;

            foreach (var l in _list)
            {
                if (l.ProcessPurchase(e) == PurchaseProcessingResult.Complete)
                {
                    result = PurchaseProcessingResult.Complete;
                }
            }
            return(result);
        }
예제 #2
0
        /// <summary>
        /// Pending状態のアイテムを更新.
        /// </summary>
        private void UpdatePendingProduct(Product product, PurchaseProcessingResult result)
        {
            // レシートを持っていない.
            if (!product.hasReceipt)
            {
                return;
            }

            if (string.IsNullOrEmpty(product.transactionID))
            {
                return;
            }

            var pendingProducts = new List <Product>(PendingProducts);

            // Pendingの場合は最新のものに更新.
            if (result == PurchaseProcessingResult.Pending)
            {
                var pendingProduct = pendingProducts.FirstOrDefault(x => x.transactionID == product.transactionID);

                if (pendingProduct != null)
                {
                    pendingProducts.Remove(pendingProduct);
                }

                pendingProducts.Add(product);
            }
            else if (result == PurchaseProcessingResult.Complete)
            {
                // 完了した場合は削除.
                var pendingProduct = pendingProducts.FirstOrDefault(x => x.transactionID == product.transactionID);

                if (pendingProduct != null)
                {
                    pendingProducts.Remove(pendingProduct);
                }

                storeController.ConfirmPendingPurchase(product);

                var builder = new StringBuilder();

                builder.AppendLine("------- ConfirmPendingProducts -------");
                builder.AppendLine(GetProductString(product)).AppendLine();

                UnityConsole.Event(ConsoleEventName, ConsoleEventColor, builder.ToString());
            }

            PendingProducts = pendingProducts.ToArray();
        }
    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
    {
        PurchaseProcessingResult result = PurchaseProcessingResult.Pending;

        for (int i = 0; i < InappKeys.Count; i++)
        {
            if (string.Equals(args.purchasedProduct.definition.id, InappKeys[i], StringComparison.Ordinal))
            {
                UnityEngine.Debug.Log($"ProcessPurchase: PASS. Product: '{args.purchasedProduct.definition.id}'");
                _ads_manager.Instance.InappSuccessArgs(InappKeys[i]);
                if (i != 1)
                {
                    return(result = PurchaseProcessingResult.Complete);
                }
                result = PurchaseProcessingResult.Pending;
            }
        }
        return(result);
    }
예제 #4
0
        public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
        {
            if (processPurchase != null)
            {
                return(processPurchase(args));
            }

            PurchaseProcessingResult result = PurchaseProcessingResult.Complete;

            T product = null;

            ConsumableProducts.TryGetValue(args.purchasedProduct.definition.id, out product);

            if (onProcessPurchase != null)
            {
                onProcessPurchase(product, args, result);
            }

            return(result);
        }
예제 #5
0
    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs pev)
    {
        PurchaseProcessingResult r = PurchaseProcessingResult.Pending;

        return(r);
    }
예제 #6
0
 public PurchaseResult(PurchaseProcessingResult processingResult) => this.processingResult = processingResult;