private async void ResponseUrlPayment(string url) { if (yaNO) { return; } yaNO = true; if (url.Contains("back")) { await _navigationService.GoBackAsync(); } else { var dic = GetParams(url); Analytics.TrackEvent(url); var EstatusPago = dic.Where(e => e.Key == "vpc_TxnResponseCode").ToList().First().Value; if (EstatusPago == "0") { Analytics.TrackEvent("ok code"); var request = new GetContractListRequest { Email = DatosPago.email }; if (await CallServiceAsync <GetContractListRequest, Models.Responses.GetBalanceListResponse>(request, "Actualizando pago", true) is Models.Responses.GetBalanceListResponse response && response.Success) { Analytics.TrackEvent("ok response"); var seleccionado = response.BalanceList.Where(t => t.Nis == DatosPago.NIS_RAD.ToString()).First(); var fecha = seleccionado.v_fecsec.Remove(seleccionado.v_fecsec.Length - 1); fecha = new string(fecha.Skip(6).Take(2).ToArray()) + new string(fecha.Skip(4).Take(2).ToArray()) + new string(fecha.Take(4).ToArray()); DatosPago.NIS_RAD = int.Parse(seleccionado.Nis); DatosPago.SEC_NIS = seleccionado.SecNis ?? 0; DatosPago.F_FACT = fecha; var pay = new PAGOSRequest { v_f_fact = DatosPago.F_FACT, v_importe = DatosPago.v_importe / 100, v_nis_rad = DatosPago.NIS_RAD, v_referencia = DatosPago.v_referencia, v_sec_nis = DatosPago.SEC_NIS, v_sec_rec = DatosPago.SEC_REC, v_fecha_vencimiento = seleccionado.ExpirationDate }; string json = JsonConvert.SerializeObject(pay); await sadmApiService.CallServiceAsync <PAGOSRequest, Models.Responses.ResponseBase>(pay); await _hudService.ShowSuccessMessageAsync("Pago realizado con éxito."); await _navigationService.NavigateAsync(new Uri($"/{nameof(LateralMenuPage)}/{nameof(NavigationPage)}/{nameof(BalancesPage)}", UriKind.Absolute)); } else { Analytics.TrackEvent("Error response"); await _hudService.ShowErrorAsync("Ocurrio un error en el pago intente de nuevo."); await _navigationService.GoBackAsync(); } }
protected async Task <string> GetToken() { if (token == null || DateTime.Now >= expireDateTime) { var response = await sadmApiService.CallServiceAsync <GetAppTokenRequest, GetAppTokenResponse>(new GetAppTokenRequest()); expireDateTime = DateTime.Now.Add(TimeSpan.FromSeconds(response.ExpiresIn)); token = response.Token; } if (token is null) { throw new ApiTokenException(); } return(token); }