private string PagarServicioJWT(RequestPagarServicios requestPagarServicios, string metodoApiGestoPago) { String result = string.Empty; _ResponsePagarServicios responsePagarServicios = new _ResponsePagarServicios(); responsePagarServicios.request = ConexionAPI.ObtenerConexion() + requestPagarServicios.ObtenerParametros(); string dataPost = JsonConvert.SerializeObject(requestPagarServicios); String cadenaNormal = Cifrado.CifradoTexto(dataPost); String cadenaEscape = Uri.EscapeDataString(Cifrado.CifradoTexto(dataPost)); byte[] data = UTF8Encoding.UTF8.GetBytes("signed=" + cadenaEscape); new Logg().Info("strKey : " + ConexionAPI.secretKey + " | IV: " + ConexionAPI.IV); new Logg().Info("signed cadenaEscape =" + cadenaEscape); new Logg().Info("signed cadenaNormal =" + cadenaNormal); new Logg().Info("Descrypt: " + Cifrado.DescifradoTexto(cadenaNormal)); string token = new Authenticate().GeneraToken(); HttpWebRequest request = initRequest(data, metodoApiGestoPago); request.Headers.Add("Authorization", "Bearer " + token); Stream postStream = request.GetRequestStream(); postStream.Write(data, 0, data.Length); HttpWebResponse response = request.GetResponse() as HttpWebResponse; StreamReader readerResponse = new StreamReader(response.GetResponseStream()); result = readerResponse.ReadToEnd(); Debug.WriteLine("Result ws: " + result); Debug.WriteLine("Json Params: " + JsonConvert.SerializeObject(requestPagarServicios)); Debug.WriteLine("Data Cifrada: " + cadenaNormal); Debug.WriteLine("Data Cifrada Escape: " + cadenaEscape); Debug.WriteLine("token: " + token); return(result); }
private void button1_Click(object sender, EventArgs e) { try { this.txtResult.Text = string.Empty; RequestPagarServicios requestPagarServicios = new RequestPagarServicios() { IdProducto = 582, IdServicio = 133, Telefono = "4433740472", NumeroReferencia = "718931201466", Monto = 1243 }; //this.textData.Text = string.IsNullOrEmpty(this.textData.Text) this.textData.Text = JsonConvert.SerializeObject(requestPagarServicios); //this.txtResult.Text= Utilerias.CMVCifrarAES256(this.textData.Text); string texto = Cifrado.CifradoTexto(this.textData.Text); this.txtResult.Text = "Texto Cifrado " + texto; this.txtResult.Text += "\nTexto Decifrado " + Cifrado.DescifradoTexto(texto); } catch (Exception ex) { this.txtResult.Text = "Error :" + ex.Message; } }
public _ResponsePagarServicios PagarServicio(RequestPagarServicios requestPagarServicios) { _ResponsePagarServicios responsePagarServicios = null; try { if (!(requestPagarServicios.TipoFront == 1 || requestPagarServicios.TipoFront == 2)) { _ExceptionPagarServicios exceptionPagarServicios = new _ExceptionPagarServicios(); exceptionPagarServicios.Codigo = -1; exceptionPagarServicios.Mensaje = "El tipo front no corresponde a este servicio"; throw new FaultException <_ExceptionPagarServicios>(exceptionPagarServicios, "Error personalizado por CMV", new FaultCode("-1")); } String result = string.Empty; responsePagarServicios = new _ResponsePagarServicios(); // throw new WebException(); result = PagarServicioJWT(requestPagarServicios, sendTx); /* Para consumir a GestoPago antes de implementar JWT * responsePagarServicios.request = ParametrosConfig() + requestPagarServicios.ObtenerParametros(); * byte[] data = UTF8Encoding.UTF8.GetBytes(ParametrosConfig() + requestPagarServicios.ObtenerParametros()); * HttpWebRequest request = initRequest(data, abonar); * Stream postStream = request.GetRequestStream(); * postStream.Write(data, 0, data.Length); * HttpWebResponse response = request.GetResponse() as HttpWebResponse; * StreamReader readerResponse = new StreamReader(response.GetResponseStream()); * result = readerResponse.ReadToEnd(); */ responsePagarServicios.response = result; if (!string.IsNullOrEmpty(result)) { new Logg().Warning("xml respuesta :" + result.ToString()); ResponseAbonar responseAbonar = SerializerManager <ResponseGeneral> .DeseralizarStringXMLToObject(result).ResponseAbonar; responsePagarServicios.request = "Metodo: " + sendTx + ConexionAPI.ObtenerConexion() + " | " + JsonConvert.SerializeObject(requestPagarServicios); responsePagarServicios.signed = Cifrado.CifradoTexto(Uri.EscapeDataString(JsonConvert.SerializeObject(requestPagarServicios))); responsePagarServicios.ResponseAbonar = responseAbonar; responsePagarServicios.EstatusCmv = EstatusCMV.Ok; responsePagarServicios.MensajeCmv = "OK"; return(responsePagarServicios); } } catch (FaultException <_ExceptionPagarServicios> ex) { throw ex; } catch (WebException e) { new Logg().Error("Error :" + e.ToString()); responsePagarServicios = new _ResponsePagarServicios(); responsePagarServicios.request = "Metodo: " + sendTx + ConexionAPI.ObtenerConexion() + " | " + JsonConvert.SerializeObject(requestPagarServicios); responsePagarServicios.signed = Cifrado.CifradoTexto(Uri.EscapeDataString(JsonConvert.SerializeObject(requestPagarServicios))); responsePagarServicios.EstatusCmv = EstatusCMV.Error; responsePagarServicios.MensajeCmv = e.Message + "|" + e.StackTrace; //return responsePagarServicios; _ResponseConfirmaTransaccion responseConfirmaTransaccion = ConfirmaTransaccion(requestPagarServicios); responseConfirmaTransaccion.ResponseAbonar.MENSAJE.CODIGO = responseConfirmaTransaccion.ResponseAbonar.MENSAJE.CODIGO == "06" ? "01" : responseConfirmaTransaccion.ResponseAbonar.MENSAJE.CODIGO; Mapper.Initialize(x => { x.CreateMap <_ResponseConfirmaTransaccion, _ResponsePagarServicios>(); }); responsePagarServicios = Mapper.Map <_ResponsePagarServicios>(responseConfirmaTransaccion); return(responsePagarServicios); } catch (Exception ex) { _ExceptionPagarServicios exceptionPagarServicios = new _ExceptionPagarServicios(); exceptionPagarServicios.Codigo = 1000;//Error no definido p exceptionPagarServicios.Mensaje = ex.Message; throw new FaultException <_ExceptionPagarServicios>(exceptionPagarServicios, "Error personalizado por Exception", new FaultCode("-1")); } return(null); }
public _ResponseConfirmaTransaccion ConfirmaTransaccion(RequestPagarServicios requestPagarServicios) { bool intento = true; _ResponseConfirmaTransaccion responseConfirmaTransaccion = null; try { if (!(requestPagarServicios.TipoFront == 1 || requestPagarServicios.TipoFront == 2)) { _ExceptionPagarServicios exceptionPagarServicios = new _ExceptionPagarServicios(); exceptionPagarServicios.Codigo = -1; exceptionPagarServicios.Mensaje = "El tipo front no corresponde a este servicio"; throw new FaultException <_ExceptionPagarServicios>(exceptionPagarServicios, "Error personalizado por CMV", new FaultCode("-1")); } String result = string.Empty; responseConfirmaTransaccion = new _ResponseConfirmaTransaccion(); result = PagarServicioJWT(requestPagarServicios, confirmTx); /* * responseConfirmaTransaccion.request = ParametrosConfig() + requestPagarServicios.ObtenerParametros(); * byte[] data = UTF8Encoding.UTF8.GetBytes(ParametrosConfig() + requestPagarServicios.ObtenerParametros()); * * HttpWebRequest request = initRequest(data,confirmaTransaccion); * Stream postStream = request.GetRequestStream(); * postStream.Write(data, 0, data.Length); * * HttpWebResponse response = request.GetResponse() as HttpWebResponse; * StreamReader readerResponse = new StreamReader(response.GetResponseStream()); * * result = readerResponse.ReadToEnd(); */ responseConfirmaTransaccion.response = result; if (!string.IsNullOrEmpty(result)) { responseConfirmaTransaccion.request = "Metodo: " + confirmTx + ConexionAPI.ObtenerConexion() + " | " + JsonConvert.SerializeObject(requestPagarServicios); responseConfirmaTransaccion.signed = Cifrado.CifradoTexto(Uri.EscapeDataString(JsonConvert.SerializeObject(requestPagarServicios))); ResponseAbonar responseAbonar = SerializerManager <ResponseAbonar> .DeseralizarStringToObject(result); responseConfirmaTransaccion.EstatusCmv = EstatusCMV.Ok; responseConfirmaTransaccion.MensajeCmv = "Pago realizado Exitosamente"; responseConfirmaTransaccion.ResponseAbonar = responseAbonar; return(responseConfirmaTransaccion); } } catch (WebException e) { responseConfirmaTransaccion.request = "Metodo: " + confirmTx + ConexionAPI.ObtenerConexion() + " | " + JsonConvert.SerializeObject(requestPagarServicios); responseConfirmaTransaccion.signed = Cifrado.CifradoTexto(Uri.EscapeDataString(JsonConvert.SerializeObject(requestPagarServicios))); responseConfirmaTransaccion.EstatusCmv = EstatusCMV.Error; responseConfirmaTransaccion.MensajeCmv = e.Message + " | " + e.StackTrace; return(responseConfirmaTransaccion); } catch (FaultException <_ExceptionPagarServicios> ex) { throw ex; } catch (Exception ex) { _ExceptionPagarServicios exceptionPagarServicios = new _ExceptionPagarServicios(); exceptionPagarServicios.Codigo = -1; exceptionPagarServicios.Mensaje = ex.Message; throw new FaultException <_ExceptionPagarServicios>(exceptionPagarServicios, "CMV: Error personalizado por Exception", new FaultCode("-1")); } return(null); }
public _ResponseConsultaSaldo ConsultarSaldoSerivicio(RequestPagarServicios requestPagarServicios) { _ResponseConsultaSaldo responseConsultaSaldo = null; try { if (requestPagarServicios.TipoFront != 4) { _ExceptionPagarServicios exceptionPagarServicios = new _ExceptionPagarServicios(); exceptionPagarServicios.Codigo = -1; exceptionPagarServicios.Mensaje = "El tipo front no corresponde a este servicio"; throw new FaultException <_ExceptionPagarServicios>(exceptionPagarServicios, "Error personalizado por CMV", new FaultCode("-1")); } String result = string.Empty; responseConsultaSaldo = new _ResponseConsultaSaldo(); result = PagarServicioJWT(requestPagarServicios, sendTx); /* * responseConsultaSaldo.request = ParametrosConfig() + requestPagarServicios.ObtenerParametros(); * byte[] data = UTF8Encoding.UTF8.GetBytes(ParametrosConfig() + requestPagarServicios.ObtenerParametros()); * HttpWebRequest request = initRequest(data, abonar); * * Stream postStream = request.GetRequestStream(); * postStream.Write(data, 0, data.Length); * * HttpWebResponse response = request.GetResponse() as HttpWebResponse; * StreamReader readerResponse = new StreamReader(response.GetResponseStream()); * result = readerResponse.ReadToEnd(); */ responseConsultaSaldo.response = result; if (!string.IsNullOrEmpty(result)) { new Logg().Info("xml respuesta :" + result.ToString()); ResponseAbonar responseAbonar = SerializerManager <ResponseGeneral> .DeseralizarStringXMLToObject(result).ResponseAbonar; responseConsultaSaldo.request = "Metodo: " + sendTx + ConexionAPI.ObtenerConexion() + " | " + JsonConvert.SerializeObject(requestPagarServicios); responseConsultaSaldo.ResponseAbonar = responseAbonar; responseConsultaSaldo.EstatusCmv = EstatusCMV.Ok; responseConsultaSaldo.MensajeCmv = "Ejecución exitosa del servicio de consultar saldo"; responseConsultaSaldo.Signed = Cifrado.CifradoTexto(Uri.EscapeDataString(JsonConvert.SerializeObject(requestPagarServicios))); return(responseConsultaSaldo); } } catch (FaultException <_ExceptionPagarServicios> ex) { throw ex; } catch (WebException e) { responseConsultaSaldo.request = "Metodo: " + sendTx + ConexionAPI.ObtenerConexion() + " | " + JsonConvert.SerializeObject(requestPagarServicios); responseConsultaSaldo.EstatusCmv = EstatusCMV.Error; responseConsultaSaldo.MensajeCmv = e.Message + " | " + e.StackTrace; return(responseConsultaSaldo); } catch (Exception ex) { _ExceptionPagarServicios exceptionPagarServicios = new _ExceptionPagarServicios(); exceptionPagarServicios.Codigo = -1; exceptionPagarServicios.Mensaje = ex.Message; throw new FaultException <_ExceptionPagarServicios>(exceptionPagarServicios, "Error personalizado por Exception | " + ex.Message, new FaultCode("-1")); } return(null); }
public static Object PagarServicio(ref RequestPagarServicios requestPagarServicios) { bool intento = true; try { String result = string.Empty; requestPagarServicios.request = ParametrosConfig() + requestPagarServicios.ObtenerParametros(); byte[] data = UTF8Encoding.UTF8.GetBytes(ParametrosConfig() + requestPagarServicios.ObtenerParametros()); HttpWebRequest request; string url = Path.Combine(SesionGestoPago.URL, SesionGestoPago.abonar); request = WebRequest.Create(url) as HttpWebRequest; request.Timeout = 60 * 1000; // 60 segundos request.Method = "POST"; request.ContentLength = data.Length; request.ContentType = "application/x-www-form-urlencoded; charset=utf-8"; Stream postStream = request.GetRequestStream(); postStream.Write(data, 0, data.Length); HttpWebResponse response = request.GetResponse() as HttpWebResponse; StreamReader readerResponse = new StreamReader(response.GetResponseStream()); result = readerResponse.ReadToEnd(); requestPagarServicios.response = result; if (!string.IsNullOrEmpty(result)) { Console.WriteLine(result.ToString()); switch (requestPagarServicios.TipoFront) { case 1: case 2: ResponseAbonar responseAbonar = SerializerManager <ResponseAbonar> .DeseralizarStringToObject(result); return(responseAbonar); break; case 4: ResponseConsultaSaldo esponseConsultaSaldo = SerializerManager <ResponseConsultaSaldo> .DeseralizarStringToObject(result); return(esponseConsultaSaldo); break; default: break; } } } catch (WebException e) { if (e.Status == WebExceptionStatus.Timeout) { if (intento) { intento = false; //PagarServicio(requestPagarServicios); } } else { throw e; } } catch (Exception ex) { throw ex; } return(null); }