Example #1
0
 protected virtual void OnErrorReceived(XsollaError error)
 {
     if (ErrorReceived != null)
     {
         ErrorReceived(error);
     }
 }
 protected void OnErrorRecived(XsollaError error)
 {
     if (ErrorHandler != null)
     {
         ErrorHandler(error);
     }
 }
        void OnDestroy()
        {
            Logger.Log("User close window");
            switch (currentActive)
            {
            case ActiveScreen.STATUS:
                Logger.Log("Check payment status");
                StatusViewController controller = GetComponentInChildren <StatusViewController>();
                if (controller != null)
                {
                    controller.statusViewExitButton.onClick.Invoke();
                }
                break;

            default:
            {
                Logger.Log("Handle chancel");
                if (ErrorHandler != null)
                {
                    ErrorHandler(XsollaError.GetCancelError());
                }
                break;
            }
            }
        }
 private void DrawError(XsollaError error)
 {
     if (mainScreenContainer != null)
     {
         currentActive = ActiveScreen.ERROR;
         GameObject errorScreen = Instantiate(Resources.Load(PREFAB_SCREEN_ERROR)) as GameObject;
         errorScreen.transform.SetParent(mainScreenContainer.transform);
         errorScreen.GetComponent <RectTransform> ().anchoredPosition     = new Vector2(0, 0);
         mainScreenContainer.GetComponentInParent <ScrollRect> ().content = errorScreen.GetComponent <RectTransform> ();
         ScreenErrorController controller = errorScreen.GetComponent <ScreenErrorController> ();
         controller.ErrorHandler += OnErrorRecivied;
         controller.DrawScreen(error);
     }
     else
     {
         GameObject errorScreen = Instantiate(Resources.Load(PREFAB_SCREEN_ERROR_MAIN)) as GameObject;
         errorScreen.transform.SetParent(container.transform);
         Text[] texts = errorScreen.GetComponentsInChildren <Text>();
         texts[1].text = "Somthing went wrong";
         texts[2].text = error.errorMessage;
         texts[3].text = error.errorCode.ToString();
         texts[3].gameObject.SetActive(false);
         Resizer.ResizeToParrent(errorScreen);
     }
 }
Example #5
0
        /* * * * * * * * * * * * * * * * * * * * * * * * * * *
        * OVERRIDED METHODS
        * * * * * * * * * * * * * * * * * * * * * * * * * * */
        public IParseble Parse(JSONNode rootNode)
        {
//			textAll = new XsollaTextAll ();
//			textAll.Parse (rootNode[XsollaApiConst.R_TEXTALL]);
            JSONNode errorNode = rootNode [XsollaApiConst.ERROR_MSG];

            if (errorNode != null && errorNode.GetType() != typeof(JSONLazyCreator))
            {
                this.xsollaError = new XsollaError().Parse(errorNode) as XsollaError;
            }
            //errorNode = rootNode [XsollaApiConst.R_TEXTALL] [XsollaApiConst.ERROR_MSG][0];
            errorNode = rootNode ["errors"][0];
            if (errorNode != null)
            {
                this.xsollaError = new XsollaError().Parse(errorNode) as XsollaError;
            }
            this.SetAccount(rootNode [XsollaApiConst.R_ACCOUNT]);
            this.SetAccountXsolla(rootNode [XsollaApiConst.R_ACCOUNTXSOLLA]);
            this.SetCurrentCommand(rootNode[XsollaApiConst.R_CURRENTCOMMAND]);
            this.SetTitle(rootNode[XsollaApiConst.R_TITLE]);
            this.SetIconUrl(rootNode[XsollaApiConst.R_ICONURL]);
            this.SetCurrency(rootNode[XsollaApiConst.R_CURRENCY]);
            this.SetSum(rootNode[XsollaApiConst.R_BUYDATA]["sum"]);
            this.SetInstruction(rootNode[XsollaApiConst.R_INSTRUCTION]);
            this.SetPid(rootNode[XsollaApiConst.R_PID].AsInt);

            checkoutToken = rootNode ["checkoutToken"];
            JSONNode buyDataNode = rootNode ["buyData"];

            if (buyDataNode != null && !"null".Equals(buyDataNode))
            {
                buyData = new BuyData().Parse(buyDataNode) as BuyData;
            }

            JSONNode summaryNode = rootNode ["summary"];

            if (summaryNode != null && !"null".Equals(summaryNode))
            {
                summary = new XsollaSummary().Parse(summaryNode) as XsollaSummary;
            }

            JSONNode checkoutNode = rootNode ["checkout"];

            if (checkoutNode != null && !"null".Equals(checkoutNode))
            {
                chekout = new XsollaCheckout().Parse(checkoutNode) as XsollaCheckout;
            }

            JSONNode formNode = rootNode [XsollaApiConst.R_FORM];
            IEnumerable <JSONNode> formElements = formNode.Childs;
            IEnumerator <JSONNode> enumerator   = formElements.GetEnumerator();

            this.Clear();
            while (enumerator.MoveNext())
            {
                this.AddElement((XsollaFormElement) new XsollaFormElement().Parse(enumerator.Current));
            }
            return(this);
        }
Example #6
0
		protected GameObject GetError(XsollaError error)
		{
			bool isError = error != null;
			if (isError)
			{
				GameObject errorObj = Instantiate (Resources.Load("Prefabs/SimpleView/Error")) as GameObject;
				SetText (errorObj, error.GetMessage());
				return errorObj;
			}
			return null;
		}
        protected GameObject GetError(XsollaError error)
        {
            bool isError = error != null;

            if (isError)
            {
                GameObject errorObj = GetObject(PrefabError);
                SetText(errorObj, error.GetMessage());
                return(errorObj);
            }
            return(null);
        }
 private void OnErrorRecivied(XsollaError xsollaError)
 {
     Logger.Log("ErrorRecivied " + xsollaError.ToString());
     if (ErrorHandler != null)
     {
         ErrorHandler(xsollaError);
     }
     else
     {
         Logger.Log("Have no ErrorHandler");
     }
 }
Example #9
0
        private void OpenError(XsollaError error)
        {
            currentActive = ActiveScreen.ERROR;
            GameObject errorScreen = Instantiate(Resources.Load("Prefabs/Screens/ScreenError")) as GameObject;

            errorScreen.transform.SetParent(mainScreenContainer.transform);
            errorScreen.GetComponent <RectTransform> ().anchoredPosition     = new Vector2(0, 0);
            mainScreenContainer.GetComponentInParent <ScrollRect> ().content = errorScreen.GetComponent <RectTransform> ();
            ScreenErrorController controller = errorScreen.GetComponent <ScreenErrorController> ();

            controller.ErrorHandler += OnErrorRecivied;
            controller.DrawScreen(error);
        }
Example #10
0
        public new void OnFormReceived(XsollaForm form)
        {
            XsollaForm.CurrentCommand command = form.GetCurrentCommand();
            switch (command)
            {
            case XsollaForm.CurrentCommand.FORM:
                XsollaError error = form.GetError();
                if (!form.IsValidPaymentSystem())
                {
                    OnErrorReceived(XsollaError.GetUnsuportedError());
                }
                else if (error == null)
                {
                    form.UpdateElement(XsollaApiConst.CARD_NUMBER, _cardNumber);
                    form.UpdateElement(XsollaApiConst.CARD_EXP_YEAR, _cardExpYear);
                    form.UpdateElement(XsollaApiConst.CARD_EXP_MONTH, _cardExpMonth);
                    form.UpdateElement(XsollaApiConst.CARD_CVV, _cardCvv);
                    form.UpdateElement(XsollaApiConst.CARD_ZIP, _cardZip);
                    form.UpdateElement(XsollaApiConst.CARD_HOLDER, _cardHolder);
                    NextStep(form.GetXpsMap());
                }
                else
                {
                    OnErrorReceived(error);
                }
                break;

            case XsollaForm.CurrentCommand.CHECK:
                if (form.GetItem(XsollaApiConst.CARD_ZIP) != null)
                {
                    form.UpdateElement(XsollaApiConst.CARD_ZIP, _cardZip);
                    NextStep(form.GetXpsMap());
                }
                else
                {
                    OnNextStepRecieved(form);
                }
                break;

            case XsollaForm.CurrentCommand.ACCOUNT:
            case XsollaForm.CurrentCommand.STATUS:
            case XsollaForm.CurrentCommand.CREATE:
            default:
                break;
            }
        }
Example #11
0
        public IParseble Parse(JSONNode textAllNode)
        {
            IEnumerator <JSONNode> errorEnumerator = textAllNode ["error"].Childs.GetEnumerator();

            errors = new List <XsollaError> ();
            while (errorEnumerator.MoveNext())
            {
                XsollaError currentError = new XsollaError();
                currentError.Parse(errorEnumerator.Current);
                errors.Add(currentError);
            }

            IEnumerator <JSONNode> infoEnumerator = textAllNode ["info"].Childs.GetEnumerator();

            info = new List <XsollaInfo> ();
            while (infoEnumerator.MoveNext())
            {
                XsollaInfo currentInfo = new XsollaInfo();
                currentInfo.Parse(infoEnumerator.Current);
                info.Add(currentInfo);
            }
            return(this);
        }
        private IEnumerator WaitForRequest(int pType, WWW www, Dictionary <string, object> post)
        {
            Logger.Log("Start get www");
            yield return(www);

            // check for errors
            if (www.error == null)
            {
                Debug.Log("Type -> " + pType);
                Debug.Log("WWW_request -> " + www.text);
                string data = www.text;

                JSONNode rootNode = JSON.Parse(www.text);
                if (rootNode != null && rootNode.Count > 2 || rootNode["error"] == null)
                {
                    switch (pType)
                    {
                    case TRANSLATIONS:
                    {
                        if (rootNode.Count > 2)
                        {
                            XsollaUtils utils = new XsollaUtils().Parse(rootNode) as XsollaUtils;
                            projectId = utils.GetProject().id.ToString();
                            if (baseParams.ContainsKey(XsollaApiConst.ACCESS_TOKEN))
                            {
                                utils.SetAccessToken(baseParams[XsollaApiConst.ACCESS_TOKEN].ToString());
                            }

                            OnUtilsRecieved(utils);
//								// if base param not containKey access token, then add token from util
//								if (!baseParams.ContainsKey(XsollaApiConst.ACCESS_TOKEN))
//									_accessToken = utils.GetAcceessToken();
                            OnTranslationRecieved(utils.GetTranslations());
                        }
                        else
                        {
                            XsollaError error = new XsollaError();
                            error.Parse(rootNode);
                            OnErrorReceived(error);
                        }
                        break;
                    }

                    case DIRECTPAYMENT_FORM:
                    {
                        if (rootNode.Count > 8)
                        {
                            XsollaForm form = new XsollaForm();
                            form.Parse(rootNode);
                            switch (form.GetCurrentCommand())
                            {
                            case XsollaForm.CurrentCommand.STATUS:
                                // if we replaced or add saved account, we must start loop on get list saved account
                                if (post.ContainsKey("save_payment_account_only") || (post.ContainsKey("replace_payment_account")))
                                {
                                    if (!form.IsCardPayment() && !(post.ContainsKey("replace_payment_account")))
                                    {
                                        OnWaitPaymentChange();
                                        break;
                                    }
                                    else
                                    {
                                        OnPaymentManagerMethod(null, post.ContainsKey("replace_payment_account")?false:true);
                                        break;
                                    }
                                }
                                GetStatus(form.GetXpsMap());
                                break;

                            case XsollaForm.CurrentCommand.CHECKOUT:
                            case XsollaForm.CurrentCommand.CHECK:
                            case XsollaForm.CurrentCommand.FORM:
                            case XsollaForm.CurrentCommand.CREATE:
                            case XsollaForm.CurrentCommand.ACCOUNT:
                                OnFormReceived(form);
                                break;

                            case XsollaForm.CurrentCommand.UNKNOWN:
                                if (rootNode.Count > 10)
                                {
                                    OnFormReceived(form);
                                }
                                else
                                {
                                    XsollaError error = new XsollaError();
                                    error.Parse(rootNode);
                                    OnErrorReceived(error);
                                }
                                break;

                            default:
                                break;
                            }
                        }
                        else
                        {
                            XsollaStatusPing statusPing = new XsollaStatusPing();
                            statusPing.Parse(rootNode);
                            OnStatusChecked(statusPing);
                        }
                        break;
                    }

                    case DIRECTPAYMENT_STATUS:
                    {
                        XsollaForm form = new XsollaForm();
                        form.Parse(rootNode);
                        XsollaStatus status = new XsollaStatus();
                        status.Parse(rootNode);
                        OnStatusReceived(status, form);
                        break;
                    }

                    case PRICEPOINTS:
                    {
                        XsollaPricepointsManager pricepoints = new XsollaPricepointsManager();
                        pricepoints.Parse(rootNode);
                        OnPricepointsRecieved(pricepoints);
                        break;
                    }

                    case GOODS:
                    {
                        XsollaGoodsManager goods = new XsollaGoodsManager();
                        goods.Parse(rootNode);
                        OnGoodsRecieved(goods);
                        break;
                    }

                    case GOODS_GROUPS:
                    {
                        XsollaGroupsManager groups = new XsollaGroupsManager();
                        groups.Parse(rootNode);
                        OnGoodsGroupsRecieved(groups);
                        break;
                    }

                    case GOODS_ITEMS:
                    {
                        XsollaGoodsManager goods = new XsollaGoodsManager();
                        goods.Parse(rootNode);
                        OnGoodsRecieved(goods);
                        break;
                    }

                    case PAYMENT_LIST:
                    {
                        XsollaPaymentMethods paymentMethods = new XsollaPaymentMethods();
                        paymentMethods.Parse(rootNode);
                        OnPaymentMethodsRecieved(paymentMethods);
                        break;
                    }

                    case SAVED_PAYMENT_LIST:
                    {
                        XsollaSavedPaymentMethods savedPaymentsMethods = new XsollaSavedPaymentMethods();
                        savedPaymentsMethods.Parse(rootNode);
                        OnSavedPaymentMethodsRecieved(savedPaymentsMethods);
                        break;
                    }

                    case QUICK_PAYMENT_LIST:
                    {
                        XsollaQuickPayments quickPayments = new XsollaQuickPayments();
                        quickPayments.Parse(rootNode);
                        OnQuickPaymentMethodsRecieved(quickPayments);
                        break;
                    }

                    case COUNTRIES:
                    {
                        XsollaCountries countries = new XsollaCountries();
                        countries.Parse(rootNode);
                        OnCountriesRecieved(countries);
                        break;
                    }

                    case VIRTUAL_PAYMENT_SUMMARY:
                    {
                        XVirtualPaymentSummary summary = new XVirtualPaymentSummary();
                        summary.Parse(rootNode);
                        Logger.Log("VIRTUAL_PAYMENT_SUMMARY " + summary.ToString());
                        if (summary.IsSkipConfirmation)
                        {
                            Logger.Log("IsSkipConfirmation true");
                            post.Add("dont_ask_again", 0);
                            ProceedVPayment(post);
                        }
                        else
                        {
                            Logger.Log("IsSkipConfirmation false");
                            OnVPSummaryRecieved(summary);
                        }
                        break;
                    }

                    case VIRTUAL_PROCEED:
                    {
                        XProceed proceed = new XProceed();
                        proceed.Parse(rootNode);
                        Logger.Log("VIRTUAL_PROCEED " + proceed.ToString());
                        if (proceed.IsInvoiceCreated)
                        {
                            Logger.Log("VIRTUAL_PROCEED 1");
                            long operationId = proceed.OperationId;
                            post.Add("operation_id", operationId);
                            VPaymentStatus(post);
                        }
                        else
                        {
                            Logger.Log("VIRTUAL_PROCEED 0 ");
                            OnVPProceedError(proceed.Error);
                        }
                        break;
                    }

                    case VIRTUAL_STATUS:
                    {
                        XVPStatus vpStatus = new XVPStatus();
                        vpStatus.Parse(rootNode);
                        Logger.Log("VIRTUAL_STATUS" + vpStatus.ToString());
                        OnVPStatusRecieved(vpStatus);
                        break;
                    }

                    case APPLY_PROMO_COUPONE:
                    {
                        XsollaForm form = new XsollaForm();
                        form.Parse(rootNode);
                        OnApplyCouponeReceived(form);
                        break;
                    }

                    case COUPON_PROCEED:
                    {
                        XsollaCouponProceedResult couponProceed = new XsollaCouponProceedResult();
                        couponProceed.Parse(rootNode);
                        if (couponProceed._error != null)
                        {
                            Logger.Log("COUPON_PROCEED ERROR: " + couponProceed._error);
                            OnCouponProceedErrorRecived(couponProceed);
                        }
                        else
                        {
                            long operationId = couponProceed._operationId;
                            if (post.ContainsKey("coupon_code"))
                            {
                                post.Remove("coupon_code");
                            }
                            post.Add("operation_id", operationId);

                            VPaymentStatus(post);
                        }
                        break;
                    }

                    case CALCULATE_CUSTOM_AMOUNT:
                    {
                        CustomVirtCurrAmountController.CustomAmountCalcRes res = new CustomVirtCurrAmountController.CustomAmountCalcRes().Parse(rootNode["calculation"]) as CustomVirtCurrAmountController.CustomAmountCalcRes;
                        OnCustomAmountResRecieved(res);
                        break;
                    }

                    case PAYMENT_MANAGER_LIST:
                    {
                        XsollaSavedPaymentMethods res = new XsollaSavedPaymentMethods().Parse(rootNode) as XsollaSavedPaymentMethods;
                        OnPaymentManagerMethod(res, false);
                        break;
                    }

                    case DELETE_SAVED_METHOD:
                    {
                        OnDeleteSavedPaymentMethod();
                        break;
                    }

                    case SUBSCRIPTIONS_MANAGER_LIST:
                    {
                        XsollaManagerSubscriptions lSubsList = new XsollaManagerSubscriptions().Parse(rootNode["subscriptions"]) as XsollaManagerSubscriptions;
                        OnManageSubsListrecived(lSubsList);
                        break;
                    }

                    default:
                        break;
                    }
                }
                else
                {
                    XsollaError error = new XsollaError();
                    error.Parse(rootNode);
                    OnErrorReceived(error);
                }
            }
            else
            {
                JSONNode errorNode = JSON.Parse(www.text);
                string   errorMsg  = errorNode["errors"].AsArray[0]["message"].Value
                                     + ". Support code " + errorNode["errors"].AsArray[0]["support_code"].Value;
                int errorCode = 0;
                if (www.error.Length > 3)
                {
                    errorCode = int.Parse(www.error.Substring(0, 3));
                }
                else
                {
                    errorCode = int.Parse(www.error);
                }
                OnErrorReceived(new XsollaError(errorCode, errorMsg));
            }
            if (projectId != null && !"".Equals(projectId))
            {
                LogEvent("UNITY " + SDK_VERSION + " REQUEST", projectId, www.url);
            }
            else
            {
                LogEvent("UNITY " + SDK_VERSION + " REQUEST", "undefined", www.url);
            }
        }
Example #13
0
        /* * * * * * * * * * * * * * * * * * * * * * * * * * *
        * OVERRIDED METHODS
        * * * * * * * * * * * * * * * * * * * * * * * * * * */

        //			if (errorNode != null && errorNode.GetType() != typeof(JSONLazyCreator))
        //			{
        //				this.xsollaError = new XsollaError().Parse(errorNode) as XsollaError;
        //			}
        //			//errorNode = rootNode [XsollaApiConst.R_TEXTALL] [XsollaApiConst.ERROR_MSG][0];
        //			errorNode = rootNode ["errors"][0];
        //			if (errorNode != null)
        //			{
        //				this.xsollaError = new XsollaError().Parse(errorNode) as XsollaError;
        //			}
        public IParseble Parse(JSONNode rootNode)
        {
            JSONNode errorNode = rootNode [XsollaApiConst.R_ERRORS];

            if (errorNode.Count > 0)
            {
                this.xsollaError = new XsollaError().ParseNew(errorNode[0]) as XsollaError;
            }

            JSONNode messagesNode = rootNode [XsollaApiConst.R_MESSAGES];

            if (messagesNode.Count > 0)
            {
                this.xsollaMessage = new XsollaMessage().Parse(messagesNode[0]) as XsollaMessage;
            }

            this.SetAccount(rootNode [XsollaApiConst.R_ACCOUNT]);
            this.SetAccountXsolla(rootNode [XsollaApiConst.R_ACCOUNTXSOLLA]);
            this.SetCurrentCommand(rootNode[XsollaApiConst.R_CURRENTCOMMAND]);
            this.SetTitle(rootNode[XsollaApiConst.R_TITLE]);
            this.SetIconUrl(rootNode[XsollaApiConst.R_ICONURL]);
            this.SetCurrency(rootNode[XsollaApiConst.R_CURRENCY]);
            this.SetSum(rootNode[XsollaApiConst.R_BUYDATA]["sum"]);
            this.SetInstruction(rootNode[XsollaApiConst.R_INSTRUCTION]);
            this.SetPid(rootNode[XsollaApiConst.R_PID].AsInt);
            this.SetSkipForm(rootNode[XsollaApiConst.R_SKIPFORM].AsBool);
            this.SetSkipCheckout(rootNode[XsollaApiConst.R_SKIPCHECKOUT].AsBool);

            checkoutToken = rootNode ["checkoutToken"];
            JSONNode buyDataNode = rootNode ["buyData"];

            if (buyDataNode != null && !"null".Equals(buyDataNode))
            {
                buyData = new BuyData().Parse(buyDataNode) as BuyData;
            }

            JSONNode summaryNode = rootNode ["summary"];

            if (summaryNode != null && !"null".Equals(summaryNode))
            {
                summary = new XsollaSummary().Parse(summaryNode) as XsollaSummary;
            }

            JSONNode checkoutNode = rootNode ["checkout"];

            if (checkoutNode != null && !"null".Equals(checkoutNode))
            {
                chekout = new XsollaCheckout().Parse(checkoutNode) as XsollaCheckout;
            }

            JSONNode formNode = rootNode [XsollaApiConst.R_FORM];
            IEnumerable <JSONNode> formElements = formNode.Childs;
            IEnumerator <JSONNode> enumerator   = formElements.GetEnumerator();

            this.Clear();
            while (enumerator.MoveNext())
            {
                this.AddElement((XsollaFormElement) new XsollaFormElement().Parse(enumerator.Current));
            }
            return(this);
        }
 public void SetError(XsollaError pError)
 {
     _errorLable.text = pError.errorMessage;
     _panelError.SetActive(true);
 }
 protected abstract void ShowPaymentError(XsollaError error);
 protected override void ShowPaymentError(XsollaError error)
 {
     Logger.Log("Show Payment Error " + error);
     SetLoading(false);
     DrawError(error);
 }
Example #17
0
        private void ProcessingRequestResult(int pType, RequestClass pRequestResult, Dictionary <string, object> pDataArgs)
        {
            if (!pRequestResult.HasError)
            {
                // Start Processing
                Debug.Log("Type -> " + pType);
                Debug.Log("WWW_request -> " + pRequestResult.TextRequest);

                JSONNode rootNode = JSON.Parse(pRequestResult.TextRequest);
                if (rootNode != null && rootNode.Count > 2 || rootNode["error"] == null)
                {
                    switch (pType)
                    {
                    case TRANSLATIONS:
                    {
                        if (rootNode.Count > 2)
                        {
                            XsollaUtils utils = new XsollaUtils().Parse(rootNode) as XsollaUtils;
                            projectId = utils.GetProject().id.ToString();

                            OnUtilsRecieved(utils);
                            // if base param not containKey access token, then add token from util
                            if (!baseParams.ContainsKey(XsollaApiConst.ACCESS_TOKEN))
                            {
                                _accessToken = utils.GetAcceessToken();
                            }
                            OnTranslationRecieved(utils.GetTranslations());
                        }
                        else
                        {
                            XsollaError error = new XsollaError();
                            error.Parse(rootNode);
                            OnErrorReceived(error);
                        }
                    }
                    break;

                    case DIRECTPAYMENT_FORM:
                    {
                        if (rootNode.Count > 8)
                        {
                            XsollaForm form = new XsollaForm();
                            form.Parse(rootNode);
                            switch (form.GetCurrentCommand())
                            {
                            case XsollaForm.CurrentCommand.STATUS:
                                GetStatus(form.GetXpsMap());
                                break;

                            case XsollaForm.CurrentCommand.CHECKOUT:
                            case XsollaForm.CurrentCommand.CHECK:
                            case XsollaForm.CurrentCommand.FORM:
                            case XsollaForm.CurrentCommand.CREATE:
                            case XsollaForm.CurrentCommand.ACCOUNT:
                                OnFormReceived(form);
                                break;

                            case XsollaForm.CurrentCommand.UNKNOWN:
                                if (rootNode.Count > 10)
                                {
                                    OnFormReceived(form);
                                }
                                else
                                {
                                    XsollaError error = new XsollaError();
                                    error.Parse(rootNode);
                                    OnErrorReceived(error);
                                }
                                break;

                            default:
                                break;
                            }
                        }
                        else
                        {
                            XsollaStatusPing statusPing = new XsollaStatusPing();
                            statusPing.Parse(rootNode);
                            OnStatusChecked(statusPing);
                        }
                    }
                    break;

                    case DIRECTPAYMENT_STATUS:
                    {
                        XsollaForm form = new XsollaForm();
                        form.Parse(rootNode);
                        XsollaStatus status = new XsollaStatus();
                        status.Parse(rootNode);
                        OnStatusReceived(status, form);
                    }
                    break;

                    case PRICEPOINTS:
                    {
                        XsollaPricepointsManager pricepoints = new XsollaPricepointsManager();
                        pricepoints.Parse(rootNode);
                        OnPricepointsRecieved(pricepoints);
                    }
                    break;

                    case GOODS:
                    {
                        XsollaGoodsManager goods = new XsollaGoodsManager();
                        goods.Parse(rootNode);
                        OnGoodsRecieved(goods);
                    }
                    break;

                    case GOODS_GROUPS:
                    {
                        XsollaGroupsManager groups = new XsollaGroupsManager();
                        groups.Parse(rootNode);
                        OnGoodsGroupsRecieved(groups);
                    }
                    break;

                    case GOODS_ITEMS:
                    {
                        XsollaGoodsManager goods = new XsollaGoodsManager();
                        goods.Parse(rootNode);
                        OnGoodsRecieved(goods);
                    }
                    break;

                    case PAYMENT_LIST:
                    {
                        XsollaPaymentMethods paymentMethods = new XsollaPaymentMethods();
                        paymentMethods.Parse(rootNode);
                        OnPaymentMethodsRecieved(paymentMethods);
                    }
                    break;

                    case SAVED_PAYMENT_LIST:
                    {
                        XsollaSavedPaymentMethods savedPaymentsMethods = new XsollaSavedPaymentMethods();
                        savedPaymentsMethods.Parse(rootNode);
                        OnSavedPaymentMethodsRecieved(savedPaymentsMethods);
                    }
                    break;

                    case QUICK_PAYMENT_LIST:
                    {
                        XsollaQuickPayments quickPayments = new XsollaQuickPayments();
                        quickPayments.Parse(rootNode);
                        OnQuickPaymentMethodsRecieved(quickPayments);
                    }
                    break;

                    case COUNTRIES:
                    {
                        XsollaCountries countries = new XsollaCountries();
                        countries.Parse(rootNode);
                        OnCountriesRecieved(countries);
                    }
                    break;

                    case VIRTUAL_PAYMENT_SUMMARY:
                    {
                        XVirtualPaymentSummary summary = new XVirtualPaymentSummary();
                        summary.Parse(rootNode);
                        Logger.Log("VIRTUAL_PAYMENT_SUMMARY " + summary.ToString());
                        if (summary.IsSkipConfirmation)
                        {
                            Logger.Log("IsSkipConfirmation true");
                            pDataArgs.Add("dont_ask_again", 0);
                            ProceedVPayment(pDataArgs);
                        }
                        else
                        {
                            Logger.Log("IsSkipConfirmation false");
                            OnVPSummaryRecieved(summary);
                        }
                    }
                    break;

                    case VIRTUAL_PROCEED:
                    {
                        XProceed proceed = new XProceed();
                        proceed.Parse(rootNode);
                        Logger.Log("VIRTUAL_PROCEED " + proceed.ToString());
                        if (proceed.IsInvoiceCreated)
                        {
                            Logger.Log("VIRTUAL_PROCEED 1");
                            long operationId = proceed.OperationId;
                            pDataArgs.Add("operation_id", operationId);
                            VPaymentStatus(pDataArgs);
                        }
                        else
                        {
                            Logger.Log("VIRTUAL_PROCEED 0 ");
                            OnVPProceedError(proceed.Error);
                        }
                    }
                    break;

                    case VIRTUAL_STATUS:
                    {
                        XVPStatus vpStatus = new XVPStatus();
                        vpStatus.Parse(rootNode);
                        //{"errors":[ {"message":"Insufficient balance to complete operation"} ], "api":{"ver":"1.0.1"}, "invoice_created":"false", "operation_id":"0", "code":"0"}
                        Logger.Log("VIRTUAL_STATUS" + vpStatus.ToString());
                        OnVPStatusRecieved(vpStatus);
                    }
                    break;

                    case APPLY_PROMO_COUPONE:
                    {
                        XsollaForm form = new XsollaForm();
                        form.Parse(rootNode);
                        OnApplyCouponeReceived(form);
                    }
                    break;

                    case COUPON_PROCEED:
                    {
                        XsollaCouponProceedResult couponProceed = new XsollaCouponProceedResult();
                        couponProceed.Parse(rootNode);
                        if (couponProceed._error != null)
                        {
                            Logger.Log("COUPON_PROCEED ERROR: " + couponProceed._error);
                            OnCouponProceedErrorRecived(couponProceed);
                        }
                        else
                        {
                            long operationId = couponProceed._operationId;
                            if (pDataArgs.ContainsKey("coupon_code"))
                            {
                                pDataArgs.Remove("coupon_code");
                            }
                            pDataArgs.Add("operation_id", operationId);
                            VPaymentStatus(pDataArgs);
                        }
                    }
                    break;

                    case HISTORY:
                    {
                        XsollaHistoryList history = new XsollaHistoryList().Parse(rootNode["operations"]) as XsollaHistoryList;
                        OnHistoryRecieved(history);
                    }
                    break;

                    case CALCULATE_CUSTOM_AMOUNT:
                    {
                        //TODO: fill method
                        CustomVirtCurrAmountController.CustomAmountCalcRes res = new CustomVirtCurrAmountController.CustomAmountCalcRes().Parse(rootNode["calculation"]) as CustomVirtCurrAmountController.CustomAmountCalcRes;
                        OnCustomAmountResRecieved(res);
                    }
                    break;

                    default:
                        break;
                    }
                }
                else
                {
                    XsollaError error = new XsollaError();
                    error.Parse(rootNode);
                    OnErrorReceived(error);
                }
            }
            else
            {
                JSONNode errorNode = JSON.Parse(pRequestResult.TextRequest);
                string   errorMsg  = errorNode["errors"].AsArray[0]["message"].Value
                                     + ". Support code " + errorNode["errors"].AsArray[0]["support_code"].Value;
                int errorCode = 0;
                if (pRequestResult.ErrorText.Length > 3)
                {
                    errorCode = int.Parse(pRequestResult.ErrorText.Substring(0, 3));
                }
                else
                {
                    errorCode = int.Parse(pRequestResult.ErrorText);
                }
                OnErrorReceived(new XsollaError(errorCode, errorMsg));
            }
            if (projectId != null && !"".Equals(projectId))
            {
                LogEvent("UNITY " + SDK_VERSION + " REQUEST", projectId, pRequestResult.Url);
            }
            else
            {
                LogEvent("UNITY " + SDK_VERSION + " REQUEST", "undefined", pRequestResult.Url);
            }
        }
Example #18
0
 public new void OnErrorReceived(XsollaError error)
 {
 }