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