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); }
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); } } }
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)); }