Esempio n. 1
0
        public RespuestaAuthorize3pDTO ObtenerDatosPostTC(string idPagoNPS, string codigoReserva, float importe, int cantCuotas, string codigoMoneda, string codigoTarjeta, bool verifiedByVisa, float verifiedByVisaMonto, string documentoPasajero, string mailPasajero)
        {
            RequerimientoAuthorize3pDTO dtoRequest = new RequerimientoAuthorize3pDTO();
            //datos generales------
            string urlNps = NPSConfiguracion.Url;

            dtoRequest.Version          = NPSConfiguracion.Version;
            dtoRequest.TxSource         = NPSConfiguracion.TxSource;
            dtoRequest.FrmLanguage      = NPSConfiguracion.FrmLanguage;
            dtoRequest.Country          = NPSConfiguracion.Country;
            dtoRequest.ReturnURL        = $"{Consts.urlRaizSitio}{NPSConfiguracion.ReturnURL}";
            dtoRequest.FrmBackButtonURL = $"{Consts.urlRaizSitio}{NPSConfiguracion.FrmBackButtonURL}";

            dtoRequest.MerchantId = NPSConfiguracion.MerchantID;
            dtoRequest.SecretKey  = NPSConfiguracion.NPSSecretKey;
            //datos de la transacción------
            dtoRequest.MerchOrderId = codigoReserva;
            dtoRequest.MerchTxRef   = idPagoNPS;
            dtoRequest.Amount       = importe;
            dtoRequest.NumPayments  = cantCuotas;
            //dtoRequest.Plan = null; es opcional, no usado por el momento
            dtoRequest.Currency     = codigoMoneda;
            dtoRequest.Product      = codigoTarjeta;
            dtoRequest.CustomerId   = documentoPasajero != null ? documentoPasajero : string.Empty;   //dato a ingresar y persistir en PagoNPS
            dtoRequest.CustomerMail = mailPasajero != null ? mailPasajero : string.Empty;             //dato a ingresar y persistir en PagoNPS
            //dtoRequest.PurchaseDescription = pago.PagoNPS.Descripcion; //dato a ingresar y persistir en PagoNPS
            dtoRequest.PosDateTime  = DateTime.Now;
            dtoRequest.MerchantMail = NPSConfiguracion.MerchantMail;

            if (verifiedByVisa && importe >= verifiedByVisaMonto)
            {
                dtoRequest.TresDSecureAction = NPSVerifiedByVisa.AutorizarSiAutenticacion3dSecureOk;                 //si este dato no se envía en el POST por defecto NPS asume 0 (AutorizarSinAutenticacion)
            }
            //dtoLog.IdTransaccion = idTransaccion;
            //dtoLog.FechaSolicitud = DateTime.Now;
            //dtoLog.MensajeSolicitud = dtoRequest;
            //dtoLog.NombreServicio = "NPS-PayOnline3p";
            //dtoLog.IdRequest = pago.IdRequest != null ? pago.IdRequest.ToString() : null;

            var rpta = new ServiciosNPS(urlNps).Authorize_3p(dtoRequest);

            //dtoLog.MensajeRespuesta = rpta;
            //dtoLog.FechaRespuesta = DateTime.Now;

            //log.RegistrarLog(dtoLog);

            //para no mostrar mensajes de error al cliente
            if (!string.IsNullOrEmpty(rpta.ErrorMessage))
            {
                rpta.ErrorMessage = rpta.ErrorMessage.Contains("INELPOL3P") ? $"La solicitud no puede ser procesada en este momento. ID: {idPagoNPS}" : rpta.ErrorMessage;
            }

            return(rpta);
        }
Esempio n. 2
0
        public string ActualizarEstadoPago(string idPagoNPS)
        {
            string respuesta = string.Empty;

            RequerimientoSimpleQueryTxDTO dtoRequest = new RequerimientoSimpleQueryTxDTO();

            //datos generales------
            string urlNps = NPSConfiguracion.Url;

            dtoRequest.Version         = NPSConfiguracion.Version;
            dtoRequest.MerchantId      = NPSConfiguracion.MerchantID;
            dtoRequest.SecretKey       = NPSConfiguracion.NPSSecretKey;
            dtoRequest.QueryCriteria   = NPSConfiguracion.QueryCriteriaMerchTxRef;
            dtoRequest.QueryCriteriaId = idPagoNPS;             //idPago es el merchTxRef;
            dtoRequest.PosDateTime     = DateTime.Now;

            //dtoLog.IdTransaccion = idTransaccion;
            //dtoLog.FechaSolicitud = DateTime.Now;
            //dtoLog.MensajeSolicitud = dtoRequest;
            //dtoLog.NombreServicio = "NPS-SimpleQueryTx";
            //dtoLog.IdRequest = idRequest;

            RespuestaSimpleQueryTxDTO dtoResponse = new ServiciosNPS(urlNps).SimpleQueryTx(dtoRequest);

            //dtoLog.MensajeRespuesta = dtoResponse;
            //dtoLog.FechaRespuesta = DateTime.Now;

            //log.RegistrarLog(dtoLog);

            if (dtoResponse.ErrorMessage == null)
            {
                using (var Context = new WebServiceDataContext())
                {
                    //log.RegistrarLog(idPago, dtoResponse.Transaction);
                    //using (var tx = new WebServiceDataContext().Connection.BeginTransaction())
                    //{
                    PAGO_NPS pagoNPS = Context.PAGO_NPS.First(c => c.IdPagoNPS == int.Parse(idPagoNPS));
                    //si la operación de consulta fue exitosa y encontró una transacción
                    if (dtoResponse.ResponseCod.ToString() == RespuestaSimpleQueryTxNPS.Exitosa)
                    {
                        //pagoNPS.IdPago = idPago;
                        pagoNPS.IdEstadoNPS   = ObtenerIdEstadoNPS(dtoResponse.Transaction.ResponseCod);
                        pagoNPS.MotivoEstado  = dtoResponse.Transaction.ResponseMsg;
                        pagoNPS.MotivoEstado += dtoResponse.Transaction.ResponseExtended != null?string.Format(" {0}", dtoResponse.Transaction.ResponseExtended) : "";

                        pagoNPS.IdTransaccionNPS = dtoResponse.Transaction.TransactionId;
                        //pagoNPS.IdTransaccion = !string.IsNullOrEmpty(idTransaccion) ? new Guid(idTransaccion) : (Guid?)null;
                        pagoNPS.ResponseCod      = dtoResponse.ResponseCod;
                        pagoNPS.ResponseMsg      = dtoResponse.ResponseMsg;
                        pagoNPS.ResponseExtended = dtoResponse.ResponseExtended;

                        //hay que ver si el estado de la transacción no se cambia en otra parte
                        //pagoNPS.Transaccion.EstadoPago = ObtenerIdEstadoTransaccion(pagoNPS.IdEstadoNPS);

                        if (pagoNPS.IdEstadoNPS != (int)EstadoNPS.AprobadaAutorizada &&
                            pagoNPS.IdEstadoNPS != (int)EstadoNPS.PendienteEnComprador_CashPayment)
                        {
                            respuesta = pagoNPS.MotivoEstado;
                        }
                    }
                    else
                    {
                        //falta definir en qué estado quedará si no se encuentra ninguna trx con SimpleQueryTx
                        //actualmente queda en estado Iniciada
                        respuesta = dtoResponse.ResponseMsg + " - " + dtoResponse.ResponseExtended;
                    }

                    Context.SubmitChanges();
                    //tx.Commit();
                    //}
                }
            }
            else
            {
                respuesta = dtoResponse.ErrorMessage;
            }

            return(respuesta);
        }