Пример #1
0
        /// <summary>
        /// Permite Crear la trama que sera enviada a MQ
        /// Creado por: Ludwing Ottoniel Cano fuentes - 05/03/2019
        ///</summary>
        /// <param name="datos"></param>
        /// <returns></returns>
        private string CrearTramaPago(DatosPago datos)
        {
            OracleMethod oracle   = new OracleMethod();
            Utilidad     utilidad = new Utilidad();
            List <ParametrosMQConsulta> parametros = oracle.GetParametros(datos.MQ_BANCO, datos.TIP_OPER);
            string trama = string.Empty;

            if (parametros != null)
            {
                int inicio_trama = oracle.InicioTrama(datos.MQ_BANCO);
                if (inicio_trama == -1)
                {
                    inicio_trama = 0;
                }
                for (int i = 0; i < inicio_trama; i++)
                {
                    trama += "0";
                }
                for (int i = 0; i < parametros.Count; i++)
                {
                    trama += utilidad.ValidarDatosParaPago(parametros[i], datos);
                }
            }
            return(trama);
        }
Пример #2
0
        /// <summary>
        /// Realiza una reversion al momento de no tener una conexion con Visa
        /// Creado por: Ludwing Ottoniel Cano fuentes - 05/03/2019
        ///</summary>
        /// <param name="datos"></param>
        /// <returns></returns>
        private DatosRespuestaPago ReversionVisa(DatosPago datos, RespuestaVisa datos_visa)
        {
            RespuestaVisa resp_visa = OperacionAnulacionVisa(datos, Properties.VisaResource.VisaMessageTypeAnulacion);

            DatosRespuestaPago respuesta_datos = new DatosRespuestaPago
            {
                TIP_OPER = Properties.Resources.CodErrorConexion,
                STATUS   = "No se puedo efectuar el pago con Visa"
            };

            if (resp_visa != null)
            {
                if (resp_visa.ResponseCode.Equals("00"))
                {
                    //ENVIAR A LOG DE OPERACIONES
                    return(respuesta_datos);
                }
                else
                {
                    OracleMethod oracle = new OracleMethod();
                    oracle.RegistrarEvento(datos, resp_visa, "ERROR AL REVERSION", "");
                }
            }

            return(respuesta_datos);
        }
Пример #3
0
        /// <summary>
        /// Inicia el Pago con Visa
        /// Creado por: Ludwing Ottoniel Cano fuentes - 05/03/2019
        ///</summary>
        /// <param name="datos"></param>
        /// <param name="datos_visa"></param>
        /// <param name="messageID"></param>
        /// <returns></returns>
        private DatosRespuestaPago RealizarPago(DatosPago datos, RespuestaVisa datos_visa, string messageID)
        {
            DatosRespuestaPago respuesta_datos = new DatosRespuestaPago();
            string             trama           = CrearTramaPago(datos);

            Metodos MQ_metodos = new Metodos();
            string  tt         = "";
            bool    response   = MQ_metodos.PutMessages(trama, messageID, out tt);

            OracleMethod oracle = new OracleMethod();

            if (response == false)
            {
                //Reversion
                respuesta_datos          = ReversionVisa(datos, datos_visa);
                respuesta_datos.TIP_OPER = Properties.Resources.CodErrorConexion;
                respuesta_datos.STATUS   = "No fue posible realizar el pago.";

                oracle.RegistrarEvento(datos, datos_visa, "ANULACION", "");
                return(respuesta_datos);
            }
            else
            {
                respuesta_datos.TIP_OPER       = Properties.Resources.CodPagoExitoso;
                respuesta_datos.STATUS         = "Su pago sera procesado en las proximas 24 hrs.";
                respuesta_datos.ID_Terminal    = Properties.VisaResource.VisaTerminalID;
                respuesta_datos.N_Autorizacion = datos_visa.AuditNumber;
                oracle.RegistrarEvento(datos, datos_visa, "PAGO ENERGUATE", messageID);
                return(respuesta_datos);
            }
        }
Пример #4
0
        /// <summary>
        /// Realiza el pago con visa
        /// Creado por: Ludwing Ottoniel Cano fuentes - 05/03/2019
        ///</summary>
        /// <param name="datos"></param>
        /// <returns></returns>
        public DatosRespuestaPago PagarVisa(DatosPago datos)
        {
            RespuestaVisa resp_visa = OperacionVisa(datos, Properties.VisaResource.VisaMessageTypeVenta);

            DatosRespuestaPago respuesta_datos = new DatosRespuestaPago
            {
                TIP_OPER = Properties.Resources.CodErrorConexion,
                STATUS   = "No se puedo efectuar el pago con Visa"
            };

            if (resp_visa != null)
            {
                if (resp_visa.ResponseCode.Equals("00"))
                {
                    string messageID = datos.FECHA + DateTime.Now.ToString("HHmm") + resp_visa.ReferenceNumber;
                    respuesta_datos = RealizarPago(datos, resp_visa, messageID);
                    return(respuesta_datos);
                }
                else
                {
                    //Reversa
                    OperacionVisa(datos, Properties.VisaResource.VisaMessageTypeReversa);
                    return(respuesta_datos);
                }
            }

            return(respuesta_datos);
        }
Пример #5
0
        /// <summary>
        /// Devuelve el valor del dato que corresponde segun el parametro enviado para pago
        /// Creado por: Ludwing Ottoniel Cano fuentes - 05/03/2019
        ///</summary>
        /// <param name="tipo"></param>
        /// <param name="pago"></param>
        /// <returns></returns>
        public string ValidarDatosParaPago(ParametrosMQConsulta tipo, DatosPago pago)
        {
            string valor = "";

            try
            {
                switch (tipo.OPERACION)
                {
                case "FILLER":
                    return(ValidarTamaño(Int32.Parse(tipo.LONGITUD), ""));

                case "TIP_OPER":
                    return(ValidarTamaño(Int32.Parse(tipo.LONGITUD), pago.TIP_OPER));

                case "NIR/NIS":
                    return(ValidarTamaño(Int32.Parse(tipo.LONGITUD), pago.NIS_NIR));

                case "EMPRESA":
                    return(ValidarTamaño(Int32.Parse(tipo.LONGITUD), pago.EMPRESA));    // DEORSA = 1 , DEOCSA =2

                case "TIPO_PAGO":
                    return(ValidarTamaño(Int32.Parse(tipo.LONGITUD), "2"));    //Deuda = 2 Factura = 1

                case "CODIGO_BANCO":
                    return(ValidarTamaño(Int32.Parse(tipo.LONGITUD), pago.CODIGO_BANCO));

                case "AGENCIA":
                    return(ValidarTamaño(Int32.Parse(tipo.LONGITUD), pago.AGENCIA));

                case "CAJERO":
                    return(ValidarTamaño(Int32.Parse(tipo.LONGITUD), pago.CAJERO));

                case "FECHA":
                    return(ValidarTamaño(Int32.Parse(tipo.LONGITUD), pago.FECHA));

                case "HORA":
                    return(DateTime.Now.ToString("HHmmss"));

                case "EFECTIVO":
                    return(ValidarTamañoMonto(Int32.Parse(tipo.LONGITUD), pago.MONTO));

                case "CHEQUES_BI":
                    return(ValidarTamañoMonto(Int32.Parse(tipo.LONGITUD), pago.CHEQUES_BI));

                case "NO_CHEQUE":
                    return(ValidarTamañoMonto(Int32.Parse(tipo.LONGITUD), pago.NO_CHEQUE));

                case "TOTAL_OPER":
                    return(ValidarTamañoMonto(Int32.Parse(tipo.LONGITUD), pago.MONTO));
                }
            }
            catch (Exception)
            {
                return(string.Empty);
            }

            return(valor);
        }
Пример #6
0
        /// <summary>
        /// Envia la información a Visa
        /// Creado por: Ludwing Ottoniel Cano fuentes - 05/03/2019
        ///</summary>
        /// <param name="datos"></param>
        /// <param name="tipoPago"></param>
        /// <returns></returns>
        public RespuestaVisa OperacionVisa(DatosPago datos, string tipoPago)
        {
            RespuestaVisa respuestaVisa = new RespuestaVisa();

            WSVisa.PaymentGWServices    services  = new WSVisa.PaymentGWServices();
            WSVisa.AuthorizationRequest metodosWS = new WSVisa.AuthorizationRequest
            {
                AuthorizationRequest1 = new WSVisa.Request()
            };

            metodosWS.AuthorizationRequest1.posEntryMode = Properties.VisaResource.VisaposEntryMode; //012 - TARJETA  022- LECTOR DE BANDA

            metodosWS.AuthorizationRequest1.pan     = datos.TARJETA;                                 //NO TARJETA
            metodosWS.AuthorizationRequest1.expdate = datos.FECHA_EXPIRACION;                        // FECHA EXPIRACION YYMM
            metodosWS.AuthorizationRequest1.amount  = datos.MONTO;                                   //MONTO DE CONSUMO

            //OPCIONAL
            //metodosWS.AuthorizationRequest1.track2Data = ""; //022 SI ES LECTURA DE BANDA
            metodosWS.AuthorizationRequest1.cvv2 = datos.CVV2;   // CODIGO DE SEGURIDAD

            metodosWS.AuthorizationRequest1.paymentgwIP = Properties.VisaResource.VisapaymentgwIP;

            //metodosWS.AuthorizationRequest1.shopperIP = "192.168.100.4";
            //metodosWS.AuthorizationRequest1.merchantServerIP = "";

            metodosWS.AuthorizationRequest1.merchantUser   = Properties.VisaResource.UserVisa;       //USUARIO
            metodosWS.AuthorizationRequest1.merchantPasswd = Properties.VisaResource.UserVisaPass;   //CONTRASEÑA
            metodosWS.AuthorizationRequest1.terminalId     = Properties.VisaResource.VisaTerminalID; //ID TERMINAL
            metodosWS.AuthorizationRequest1.merchant       = Properties.VisaResource.VisaMerchant;   //AFILICION

            metodosWS.AuthorizationRequest1.messageType = tipoPago;                                  // 0200 VENTA 0400 REVERSA  0202 ANULACION
            metodosWS.AuthorizationRequest1.auditNumber = Properties.VisaResource.VisaAuditNumber;   //NO. TRANSACCION

            //OPCIONAL
            metodosWS.AuthorizationRequest1.additionalData = "";
            WSVisa.AuthorizationResponse respuestaWS = null;

            //add timeout to 60 seconds
            services.Timeout = 60000;
            respuestaWS      = services.AuthorizationRequest(metodosWS);

            respuestaVisa = null;
            if (respuestaWS != null)
            {
                respuestaVisa = new RespuestaVisa
                {
                    MessageType         = respuestaWS.response.messageType,
                    AuditNumber         = respuestaWS.response.auditNumber,
                    AuthorizationNumber = respuestaWS.response.authorizationNumber,
                    ResponseCode        = respuestaWS.response.responseCode,
                    ReferenceNumber     = respuestaWS.response.referenceNumber
                };
            }

            return(respuestaVisa);
        }