private async Task <ChargeAccountToTemporaryToken> TempToken(TarjetasViewModel tvm) { string TokenizationAPI = System.Configuration.ConfigurationManager.AppSettings["TokenizationAPI"]; string APIUsername = System.Configuration.ConfigurationManager.AppSettings["APIUsername"]; string json = ""; ChargeAccountToTemporaryToken token = new ChargeAccountToTemporaryToken(); try { ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; using (var client = new HttpClient()) { var values2 = new Dictionary <string, string> { { "AccountName", APIUsername }, { "ChargeAccountNumber", tvm.NumeroTarjeta } }; json = JsonConvert.SerializeObject(values2); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); var response = await client.PostAsync(TokenizationAPI + "/ChargeAccountToTemporaryToken", new StringContent(json, Encoding.UTF8, "application/json")); var responseString = await response.Content.ReadAsStringAsync(); token = JsonConvert.DeserializeObject <ChargeAccountToTemporaryToken>(responseString); } } catch (Exception ex) { } return(token); }
private async Task Recargar() { rvm = Session["rvm"] as RecargasViewModel; tvm = Session["tvm"] as TarjetasViewModel; if (rvm.idFormaPago == 2) //tarjeta { if (rvm.TipoTrans == TipoTransaccion.PrimeraVez) { wsac.Tarjeta t = new wsac.Tarjeta() { idusuario = tvm.Idusuario, idpais = tvm.idpais, idemisor = tvm.idemisor, permtoken = tvm.NumeroTarjeta, Last4 = tvm.Last4, titularFN = tvm.TitularFN, titularLN = tvm.TitularLN, calleynumero = tvm.CalleyNum, idestado = tvm.IdEstado, idciudad = tvm.IdCiudad, codigopostal = tvm.CP, expirationMMYY = tvm.ExpiraMM + tvm.ExpiraYY, }; wsac.AltaRecargaMonederoResponse ar = new wsac.AltaRecargaMonederoResponse(); wsac.CargaOpenPay1aVezResponse v1r = new wsac.CargaOpenPay1aVezResponse(); rm = new wsac.RecargaMonedero() { idusuario = rvm.IdUsuario, idtarjeta = (rvm.idFormaPago == 2) ? rvm.IdTarjeta : -1, monto = rvm.MontoRecargaMonedero, fecha = DateTime.Now, TransactionID = Guid.NewGuid().ToString(), os = Request.UserAgent, ip = Request.UserHostAddress, err = -1 // -1 es una recarga recien creada q aun no ha sido procesada (pagada) }; try { ws = Session["wsac"] as wsac.IsacClient; ar = await ws.AltaRecargaMonederoAsync(rm); GetSessionTags tags = JsonConvert.DeserializeObject <GetSessionTags>(ar.Body.AltaRecargaMonederoResult); FingerP(tags.OrgID, tags.WebSessionID); await Task.Delay(TimeSpan.FromSeconds(10)); tk = await TempToken(tvm); if (tk.ResponseCode == 0) { t.permtoken = tk.ChargeAccountNumberToken; t.Last4 = tk.PaymentDeviceLast4; rm.idrecargamonedero = tags.idrecarga; v1r = await ws.CargaOpenPay1aVezAsync(null, rm, t, tags.WebSessionID, ""); errRecarga err = JsonConvert.DeserializeObject <errRecarga>(v1r.Body.CargaOpenPay1aVezResult); if (err.err > 0) { jsonErr = ws.GetCatalogo(6, ""); List <catErrores> lserr = JsonConvert.DeserializeObject <List <catErrores> >(jsonErr); string msg = ""; switch (err.err) { case 1: //RecargaSell msg = lserr.Where(x => x.iderror == err.errRs).FirstOrDefault().error; break; case 2: //Vesta msg = lserr.Where(x => x.iderror == err.errVs).FirstOrDefault().error; break; case 3: //Comunicaciones msg = lserr.Where(x => x.iderror == 9).FirstOrDefault().error; break; } if (!String.IsNullOrEmpty(err.tresp.rcode_description)) { msg += "\\n" + err.tresp.rcode_description; } //spnJS.Text = "<script>msgError('Ocurrio un error: " + ce.error + (!String.IsNullOrEmpty(err.tresp.printDatam_data) ? " " + err.tresp.printDatam_data : "") + "');</script>"; spnJS.Text = "<script>msgError('Ocurrio un error: " + msg + "');</script>"; } else { rvm = Session["rvm"] as RecargasViewModel; rvm.IdTarjeta = err.idtarjeta; Session["rvm"] = rvm; string ticket = ""; ticket += "TRANSACCIÓN " + err.tresp.transaction_id + "<br />"; ticket += "FECHA " + DateTime.Now.ToString("dd/MMM/yyyy") + "<br />"; ticket += "TRANSACCIÓN EXITOSA<br />"; ticket += "<b>MONTO: " + rvm.MontoRecargaMonedero.ToString("c") + "</b><br />"; spnJS.Text = "<script>ticket('" + ticket + "');</script>"; } } else { spnJS.Text = "<script>msgError('Ocurrio un error');</script>"; } } catch (Exception ex) { spnJS.Text = "<script>msgError('Ocurrio un error');</script>"; } } //----------------------------------------------------------------------------------- if (rvm.TipoTrans == TipoTransaccion.SegundaVez) { rm = new wsac.RecargaMonedero() { idusuario = rvm.IdUsuario, idtarjeta = (rvm.idFormaPago == 2) ? rvm.IdTarjeta : -1, monto = rvm.MontoRecargaMonedero, fecha = DateTime.Now, TransactionID = Guid.NewGuid().ToString(), os = Request.UserAgent, ip = Request.UserHostAddress, err = -1 // -1 es una recarga recien creada q aun no ha sido procesada (pagada) }; wsac.CargaVesta2aVezResponse v2r = new wsac.CargaVesta2aVezResponse(); try { ws = Session["wsac"] as wsac.IsacClient; v2r = await ws.CargaVesta2aVezAsync(null, rm, ""); errRecarga err = JsonConvert.DeserializeObject <errRecarga>(v2r.Body.CargaVesta2aVezResult); if (err.err > 0) { jsonErr = ws.GetCatalogo(6, ""); List <catErrores> lserr = JsonConvert.DeserializeObject <List <catErrores> >(jsonErr); string msg = ""; switch (err.err) { case 1: //RecargaSell msg = lserr.Where(x => x.iderror == err.errRs).FirstOrDefault().error; break; case 2: //Vesta msg = lserr.Where(x => x.iderror == err.errVs).FirstOrDefault().error; break; case 3: //Comunicaciones msg = lserr.Where(x => x.iderror == 9).FirstOrDefault().error; break; } if (!String.IsNullOrEmpty(err.tresp.rcode_description)) { msg += "\\n" + err.tresp.rcode_description; } spnJS.Text = "<script>msgError('Ocurrio un error: " + msg + "');</script>"; } else { string ticket = ""; ticket += "TRANSACCIÓN " + err.tresp.transaction_id + "<br />"; ticket += "FECHA " + DateTime.Now.ToString("dd/MMM/yyyy") + "<br />"; ticket += "TRANSACCIÓN EXITOSA<br />"; ticket += "<b>MONTO: " + rvm.MontoRecargaMonedero.ToString("c") + "</b><br />"; spnJS.Text = "<script>ticket('" + ticket + "');</script>"; } } catch (Exception ex) { spnJS.Text = "<script>msgError('Ocurrio un error');</script>"; } } // if segundavez } // if formapago = 2 }