public static string getdatosEncriptadosMPOS(string Amount, string Tarjeta) { // MJM 26/02/2014 INICIO Carrito_Pago objPago; // Esto se declara de nuevo, no se usa el que está definido a nivel de clase porque los WebMethods no lo ven. DLLGestionVenta.ProcesarVenta mObjVenta; mObjVenta = new DLLGestionVenta.ProcesarVenta(); Int64 idCarrito = Int64.Parse(HttpContext.Current.Session["IdCarrito"].ToString()); mObjVenta.ConexString = System.Configuration.ConfigurationManager.ConnectionStrings["MC_TDAConnectionString"].ToString(); objPago = new Carrito_Pago(); objPago.IdCarrito = idCarrito; objPago.TipoPago = System.Configuration.ConfigurationManager.AppSettings["TarjetaTipo"].ToString(); objPago.TipoPagoDetalle = Tarjeta; objPago.NumTarjeta = ""; objPago.Importe = float.Parse(Amount, NumberStyles.Currency, CultureInfo.GetCultureInfo("es-MX")); Int64 idCarritoPago = mObjVenta.PagoCarrito(objPago, false); HttpContext.Current.Session["IdCarritoPago"] = idCarritoPago; // MJM 26/02/2014 FIN string sVd = ""; string semilla = HttpContext.Current.Session[Constantes.Session.Semilla].ToString(); rc4 encripta = new rc4(); XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces(); namespaces.Add(string.Empty, string.Empty); xmlmpos oObject = getMPOSSession(Amount); XmlSerializer xmlSerializer = new XmlSerializer(oObject.GetType()); StringWriterUtf8 text = new StringWriterUtf8(); xmlSerializer.Serialize(text, oObject, namespaces); sVd = text.ToString(); sVd = sVd.Replace("\r\n", ""); // sVd = R4.Encrypt(semilla,sVd); //TODO: Comprobar que esta clase RC4 funciona correctamente. sVd = encripta.StringToHexString(encripta.Salaa(sVd, semilla)); return(sVd); }
protected void Page_Load(object sender, EventArgs e) { string sRedirectPage = "~/CarritoDetalleHERMES.aspx?IdCarrito=" + IdCarritoSession + "&urlHermes=" + UrlHermesSession + "&sessionstate=1"; // Por defecto redirigir a Login, por si llega a esta página manualmente log.Error("respuestapago.Idcarritosesion:" + IdCarritoSession); if (!Page.IsPostBack && Session["IdCarrito"] != null && Request["xml_response"] != null) { int idCarritoPago = int.Parse(HttpContext.Current.Session["IdCarritoPago"].ToString()); // Desencriptar respuesta String parameter = Request["xml_response"].ToString(); string semilla = HttpContext.Current.Session[Constantes.Session.Semilla].ToString(); rc4 encripta = new rc4(); string respuesta = encripta.Pura(encripta.hexStringToString(parameter), semilla); // Log Respuesta CapaDatos.ClsCapaDatos objDatos = new CapaDatos.ClsCapaDatos(); objDatos.ConexString = System.Configuration.ConfigurationManager.ConnectionStrings["MC_TDAConnectionString"].ToString(); objDatos.LogRespuestaPago(respuesta, "RespuestaPago.Page_Load()", Constantes.Session.IdTienda, "-1", Constantes.Session.IdEmpleado, idCarritoPago); string foliocpagos = string.Empty; string auth = string.Empty; string cc_number = string.Empty; string response = string.Empty; string cd_error = string.Empty; string nb_error = string.Empty; string cc_type = string.Empty; XmlDocument xml = new XmlDocument(); xml.LoadXml(respuesta); //Cargar los valores de la respuesta foreach (XmlNode node in xml["webpaympos_response"].ChildNodes) { switch (node.Name) { case "response": response = node.InnerText; break; case "cc_number": cc_number = node.InnerText; break; case "auth": auth = node.InnerText; break; case "foliocpagos": foliocpagos = node.InnerText; break; case "cd_error": cd_error = node.InnerText; break; case "nb_error": nb_error = node.InnerText; break; case "cc_type": cc_type = node.InnerText; break; default: break; } } // Evaluar respuesta del servicio ( approved / denied / error ) switch (response) { case "approved": ProcesarVenta mObjVenta = new ProcesarVenta(); mObjVenta.ConexString = System.Configuration.ConfigurationManager.ConnectionStrings["MC_TDAConnectionString"].ToString(); mObjVenta.ValidarPago(idCarritoPago, foliocpagos, auth, cc_number, cc_type); break; case "denied": //ScriptManager.RegisterStartupScript(this, this.GetType(), "denied_scr", string.Format("alert('Operación denegada: {0} - {1}');", cd_error, nb_error), true); break; case "error": //ScriptManager.RegisterStartupScript(this, this.GetType(), "error_scr", string.Format("alert('Error al procesar el pago: {0} - {1}');", cd_error, nb_error), true); break; } } if (sRedirectPage != string.Empty) { Response.Redirect(sRedirectPage, false); return; // Importante esto para que no se produzca una excepción desde IIS. } }