protected virtual void OnPaymentManagerMethod(XsollaSavedPaymentMethods pRes, bool pAddState) { if (PaymentManagerMethods != null) { PaymentManagerMethods(pRes, pAddState); } }
private void OnSavedPaymentMethodsRecieved(XsollaSavedPaymentMethods pMethods) { if (SavedPaymentMethodsRecieved != null) { SavedPaymentMethodsRecieved(pMethods); } }
public void SetSavedMethods(XsollaSavedPaymentMethods pMethods) { if (pMethods != null) { if (listBtns == null) { listBtns = new List <SavedMethodBtnController>(); } else { ClearBtnsContainer(); } List <XsollaSavedPaymentMethod> paymentList = pMethods.GetItemList(); // For each method we create btn foreach (XsollaSavedPaymentMethod method in paymentList) { CreateMethodBtn(method); } self.gameObject.SetActive(true); SetUpNavButtons(); } else { // if methods list is empty, we hide all window self.gameObject.SetActive(false); } }
public void initWaitScreen(XsollaUtils pUtils, Action pAddPaymentMethod) { mUtilsLink = pUtils; _addPaymentMethod = pAddPaymentMethod; mWaitChangeScreen.SetActive(true); mProgressBar.SetLoading(true); _MethodsOnWaitLoop = null; // Start wait change loop InvokeRepeating("StartGetSavedMethodLoop", 0f, 5f); mCancelWaitBtn.GetComponent <Button>().onClick.AddListener(() => CancelWait()); mCanceltext.text = pUtils.GetTranslations().Get("cancel"); }
private IEnumerator GetListSavedMethod(WWW www, bool pInitAfter, bool pAddMethod) { Debug.Log("Wait saved account list"); yield return(www); // check for errors if (www.error == null) { Debug.Log("WWW_request -> " + www.text); JSONNode rootNode = JSON.Parse(www.text); if (rootNode != null && rootNode.Count > 2 || rootNode["error"] == null) { XsollaSavedPaymentMethods tempOnWaitLoop = new XsollaSavedPaymentMethods(); tempOnWaitLoop.Parse(rootNode); if (pInitAfter) { initScreen(mUtilsLink, tempOnWaitLoop, mActionAddPayment, false); if (pAddMethod) { SetStatusAddOk(); } else { SetStatusReplaceOk(); } yield break; } if (_MethodsOnWaitLoop == null) { _MethodsOnWaitLoop = tempOnWaitLoop; } else { if (tempOnWaitLoop.Equals(_MethodsOnWaitLoop)) { _MethodsOnWaitLoop = tempOnWaitLoop; } else { Logger.Log("Stop wait end show result"); _MethodsOnWaitLoop = tempOnWaitLoop; SetStatusAddOk(); CancelWait(); } } } } }
protected override void PaymentManagerRecieved(XsollaSavedPaymentMethods pResult, bool pAddState) { if (_SavedPaymentController == null) { Resizer.DestroyChilds(mainScreenContainer.transform); GameObject paymentManager = Instantiate(Resources.Load(PREFAB_SCREEN_PAYMENT_MANAGER)) as GameObject; _SavedPaymentController = paymentManager.GetComponent <PaymentManagerController>(); _SavedPaymentController.setOnCloseMethod(() => { //ShowGoodsShop(); //LoadGoodsGroups(); NavMenuClick(RadioButton.RadioType.SCREEN_GOODS); }); paymentManager.transform.SetParent(mainScreenContainer.transform); paymentManager.GetComponent <RectTransform>().anchoredPosition = new Vector2(0, 0); Resizer.ResizeToParrent(paymentManager); currentActive = ActiveScreen.PAYMENT_MANAGER; } SetLoading(false); // Remove purchase part Restart(); _SavedPaymentController.initScreen(Utils, pResult, AddPaymentAccount, pAddState); }
protected override void ShowSavedPaymentsList(XsollaSavedPaymentMethods savedPaymentsMethods) { DrawPaymentListScreen(); _paymentListScreenController.SetSavedPaymentsMethods(savedPaymentsMethods); }
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); } }
public void SetSavedPaymentsMethods(XsollaSavedPaymentMethods paymentMethods) { _savedPaymetnsMethods = paymentMethods; savedPayController.SetSavedMethods(_savedPaymetnsMethods); }
protected abstract void PaymentManagerRecieved(XsollaSavedPaymentMethods pResult, bool pAddState);
protected abstract void ShowSavedPaymentsList(XsollaSavedPaymentMethods savedPaymentsMethods);
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); } }
public void initScreen(XsollaUtils pUtils, XsollaSavedPaymentMethods pMethods, Action pAddPaymentMethod, bool pAddState) { mUtilsLink = pUtils; mActionAddPayment = pAddPaymentMethod; if (pMethods != null) { mListMethods = pMethods; } else { GetSavedMethod(pAddState, true); return; } if (mListBtnsObjs == null) { mListBtnsObjs = new ArrayList(); } else { mListBtnsObjs.Clear(); } mTitle.text = pUtils.GetTranslations().Get("payment_account_page_title"); mInformationTitle.text = pUtils.GetTranslations().Get("payment_account_add_title"); mInformation.text = pUtils.GetTranslations().Get("payment_account_add_info"); mContinueLink.text = pUtils.GetTranslations().Get("payment_account_back_button"); mCanceltext.text = pUtils.GetTranslations().Get("cancel"); mCloseNotify.onClick.AddListener(CloseStatus); Button continueBtn = mContinueLink.GetComponent <Button>(); continueBtn.onClick.RemoveAllListeners(); continueBtn.onClick.AddListener(() => { Destroy(this.gameObject); mOnClose(); }); Text textBtn = mBtnAddPaymentObj.GetComponentInChildren <Text>(); textBtn.text = pUtils.GetTranslations().Get("payment_account_add_button"); // clear btn Grid for (int i = 0; i < mBtnGrid.transform.childCount; i++) { Destroy(mBtnGrid.transform.GetChild(i).gameObject); } if (mListMethods.GetCount() == 0) { mContainer.SetActive(false); mDelPanelMethod.SetActive(false); mReplacePanelMethod.SetActive(false); mInfoPanel.SetActive(true); Button btnAddPayment = mBtnAddPaymentObj.GetComponent <Button>(); btnAddPayment.onClick.RemoveAllListeners(); btnAddPayment.onClick.AddListener(() => { CloseStatus(); mActionAddPayment(); }); } else { mInfoPanel.SetActive(false); mDelPanelMethod.SetActive(false); mReplacePanelMethod.SetActive(false); mContainer.SetActive(true); foreach (XsollaSavedPaymentMethod item in mListMethods.GetItemList()) { // Create prefab on btn saved method, set parent and set controller on them GameObject methodBtn = Instantiate(Resources.Load("Prefabs/SimpleView/_PaymentFormElements/SavedMethodBtnNew")) as GameObject; methodBtn.transform.SetParent(mBtnGrid.transform); // Add objects btn on list mListBtnsObjs.Add(methodBtn); SavedMethodBtnController controller = methodBtn.GetComponent <SavedMethodBtnController>(); // Activated btn delete controller.setDeleteBtn(true); controller.setMethodBtn(false); controller.setDeleteBtnName(pUtils.GetTranslations().Get("delete_payment_account_button")); // Set btn property // Set method controller.setMethod(item); // Set name controller.setNameMethod(item.GetName()); // Set Type controller.setNameType(item.GetPsName()); // Set icon mImgLoader.LoadImage(controller._iconMethod, item.GetImageUrl()); // Set BtnDelAction controller.getBtnDelete().onClick.AddListener(() => { CloseStatus(); onClickDeletePaymentMethod(controller); }); } // Add button "Add payment metnod" GameObject objAddMethodClone = Instantiate <GameObject>(mBtnAddPaymentObj); objAddMethodClone.transform.SetParent(mBtnGrid.transform); //set onclickListener Button btnAddMethod = objAddMethodClone.GetComponent <Button>(); btnAddMethod.onClick.RemoveAllListeners(); btnAddMethod.onClick.AddListener(() => { CloseStatus(); mActionAddPayment(); }); } }