Пример #1
0
        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);
        }
Пример #2
0
        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.
            }
        }