示例#1
0
    /// <summary>
    /// 商品を購入した
    /// </summary>
    /// <param name="PurchaseEvent">購入イベント情報</param>
    public override void OnPurchaseProduct(PurchaseEventArgs PurchaseEvent)
    {
        PurchaseInfo Info = JsonUtility.FromJson <PurchaseInfo>(PurchaseEvent.purchasedProduct.receipt);

        Debug.Log("Store:" + Info.Store);
        Debug.Log("Payload:" + Info.Payload);

        switch (PurchaseEvent.purchasedProduct.definition.id)
        {
        case ProductIDs.AddMoneyItem:

            StartCoroutine(APICall.VerifyAddGoldPurchase(Info, (Result) =>
            {
                if (!Result.success)
                {
                    Debug.LogError("Verify Error...");
                    SimpleDialog.Show("購入エラー");
                    return;
                }
                UserData.Instance.Gold = Result.gold;
                StoreController.ConfirmPendingPurchase(StoreController.products.WithID(ProductIDs.AddMoneyItem));
                SimpleDialog.Show("購入しました。");
            }));
            break;
        }
    }
        private void ResponseCashPackageBuyValidation(AckResponseCode responseCode, BaseAckMessage message)
        {
            var castedMessage = (ResponseCashPackageBuyValidationMessage)message;

            switch (responseCode)
            {
            case AckResponseCode.Error:
                var errorMessage = string.Empty;
                switch (castedMessage.error)
                {
                case ResponseCashPackageBuyValidationMessage.Error.UserNotFound:
                    errorMessage = "User not found";
                    break;

                case ResponseCashPackageBuyValidationMessage.Error.PackageNotFound:
                    errorMessage = "Package not found";
                    break;

                case ResponseCashPackageBuyValidationMessage.Error.Invalid:
                    errorMessage = "Invalid";
                    break;
                }
                PurchaseResult(false, errorMessage);
                break;

            case AckResponseCode.Timeout:
                UISceneGlobal.Singleton.ShowMessageDialog("Error", "Connection timeout");
                PurchaseResult(false, "Connection timeout");
                break;

            default:
                CashPackage package;
                if (CashPackages.TryGetValue(castedMessage.dataId, out package))
                {
                    StoreController.ConfirmPendingPurchase(package.ProductData);
                    PurchaseResult(true);
                }
                else
                {
                    PurchaseResult(false, "Package not found");
                }
                break;
            }
        }