Example #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);
        }
Example #2
0
        public RespuestaAuthorize3pDTO Authorize_3p(RequerimientoAuthorize3pDTO dto)
        {
            //using (var service = new PaymentServicePlatform())
            using (var service = NPSWSServiceWrapper.GetService(_UrlNPS))
            {
                try
                {
                    string secureHash = HashNPS.ObtenerHashAuthorize3p(dto);

                    var response = service.Authorize_3p(new RequerimientoStruct_Authorize_3p
                    {
                        psp_Version          = dto.Version,
                        psp_MerchantId       = dto.MerchantId,
                        psp_TxSource         = dto.TxSource,
                        psp_MerchTxRef       = dto.MerchTxRef,
                        psp_MerchOrderId     = dto.MerchOrderId,
                        psp_ReturnURL        = dto.ReturnURL,
                        psp_FrmLanguage      = dto.FrmLanguage,
                        psp_FrmBackButtonURL = dto.FrmBackButtonURL,
                        psp_Amount           = (dto.Amount == 0 ? null : Math.Truncate(dto.Amount * 100).ToString()),
                        psp_NumPayments      = dto.NumPayments.ToString(),
                        //psp_PaymentAmount = (dto.PaymentAmount == 0 ? null : Math.Truncate(dto.PaymentAmount * 100).ToString()),
                        psp_Plan     = (string.IsNullOrEmpty(dto.Plan) ? null : dto.Plan),
                        psp_Currency = dto.Currency,
                        psp_Country  = dto.Country,
                        psp_Product  = dto.Product,
                        //psp_CustomerId = dto.CustomerId,
                        psp_CustomerMail        = dto.CustomerMail,
                        psp_MerchantMail        = dto.MerchantMail,
                        psp_PurchaseDescription = dto.PurchaseDescription,
                        psp_PromotionCode       = dto.PromotionCode,
                        //psp_FirstPaymentDeferral = (dto.FirstPaymentDeferralDate.Year != 1 ? dto.FirstPaymentDeferralDate.ToString("yyyy-MM-dd") : null),
                        psp_PosDateTime    = dto.PosDateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        psp_3dSecureAction = dto.TresDSecureAction,
                        psp_SecureHash     = secureHash
                    }.AssignNullToEmptyStrings());

                    return(new DTOGenerador().ObtenerRespuestaAuthorize3pDTO(response));
                }
                catch (Exception ex)
                {
                    Tracker.WriteTrace(string.Format($"Error en metodo ServiciosNPS.Authorize_3p: {ex.Message}. Datos Enviados: {Tracker.SerializarObjeto(dto)}"), false, Tracker.TraceType.Error);
                    var response = new DTOGenerador().ObtenerRespuestaAuthorize3pDTO(null);
                    response.ErrorMessage = ex.Message + "\nINELPOL3P Inner Exception: " + (ex.InnerException != null ? ex.InnerException.Message : string.Empty);

                    return(response);
                }
            }
        }
Example #3
0
        internal static string ObtenerHashAuthorize3p(RequerimientoAuthorize3pDTO dto)
        {
            string hash = string.Empty;

            try
            {
                hash =
                    dto.TresDSecureAction +
                    (dto.Amount == 0 ? null : Math.Truncate(dto.Amount * 100).ToString()) +
                    dto.Country +
                    dto.Currency +
                    //dto.CustomerId +
                    dto.CustomerMail +
                    //(dto.FirstPaymentDeferralDate.Year != 1 ? dto.FirstPaymentDeferralDate.ToString("yyyy-MM-dd") : null) +
                    dto.FrmBackButtonURL +
                    dto.FrmLanguage +
                    dto.MerchOrderId +
                    dto.MerchTxRef +
                    dto.MerchantId +
                    dto.MerchantMail +
                    dto.NumPayments.ToString() +
                    //(dto.PaymentAmount == 0 ? null : Math.Truncate(dto.PaymentAmount * 100).ToString()) +
                    (string.IsNullOrEmpty(dto.Plan) ? null : dto.Plan) +
                    dto.PosDateTime.ToString("yyyy-MM-dd HH:mm:ss") +
                    dto.Product +
                    dto.PromotionCode +
                    dto.PurchaseDescription +
                    dto.ReturnURL +
                    dto.TxSource +
                    dto.Version +
                    dto.SecretKey;
            }
            catch (Exception)
            {
                throw;
            }

            return(CodificarHash(hash));
        }