public RespuestaCaptureDTO Capture3p(RequerimientoCapture3pDTO dto) { //using (var service = new PaymentServicePlatform()) using (var service = NPSWSServiceWrapper.GetService(_UrlNPS)) { try { string secureHash = HashNPS.ObtenerHashCapture(dto); var response = service.Capture(new RequerimientoStruct_Capture { psp_Version = dto.Version, psp_MerchantId = dto.MerchantId, psp_TxSource = dto.TxSource, psp_TransactionId_Orig = dto.TransactionId_Orig, psp_MerchTxRef = dto.MerchTxRef, psp_AmountToCapture = dto.AmountToCapture, psp_PosDateTime = dto.PosDateTime.ToString("yyyy-MM-dd HH:mm:ss"), psp_SecureHash = secureHash }.AssignNullToEmptyStrings()); return(new DTOGenerador().ObtenerRespuestaCaptureDTO(response)); } catch (Exception ex) { Tracker.WriteTrace(string.Format($"Error en metodo ServiciosNPS.Capture3p: {ex.Message}. Datos Enviados: {Tracker.SerializarObjeto(dto)}"), false, Tracker.TraceType.Error); var response = new DTOGenerador().ObtenerRespuestaCaptureDTO(null); response.ErrorMessage = ex.Message + "\nInner Exception: " + (ex.InnerException != null ? ex.InnerException.Message : string.Empty); return(response); } } }
internal static string ObtenerHashCapture(RequerimientoCapture3pDTO dto) { string hash = string.Empty; try { hash = dto.AmountToCapture + dto.MerchTxRef + dto.MerchantId + dto.PosDateTime.ToString("yyyy-MM-dd HH:mm:ss") + dto.TransactionId_Orig + dto.TxSource + dto.Version + dto.SecretKey; } catch (Exception) { throw; } return(CodificarHash(hash)); }
public string CapturarTrx(string idPagoNPS, string idTransaccionNPS, string idTransaccion, float importe) { string respuesta = string.Empty; RequerimientoCapture3pDTO dtoRequest = new RequerimientoCapture3pDTO(); //datos generales------ string urlNps = NPSConfiguracion.Url; dtoRequest.Version = NPSConfiguracion.Version; dtoRequest.TxSource = NPSConfiguracion.TxSource; dtoRequest.MerchantId = NPSConfiguracion.MerchantID; dtoRequest.SecretKey = NPSConfiguracion.NPSSecretKey; dtoRequest.TransactionId_Orig = idTransaccionNPS; dtoRequest.AmountToCapture = (importe == 0 ? null : Math.Truncate(importe * 100).ToString()); dtoRequest.MerchTxRef = $"{idPagoNPS}-1"; //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; RespuestaCaptureDTO dtoResponse = new ServiciosNPS(urlNps).Capture3p(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() == RespuestaSolicitudCapturaNPS.Exitosa) { //pagoNPS.IdPago = idPago; pagoNPS.IdEstadoNPS = ObtenerIdEstadoNPS(dtoResponse.ResponseCod); pagoNPS.MotivoEstado = dtoResponse.ResponseMsg; pagoNPS.MotivoEstado += dtoResponse.ResponseExtended != null?string.Format(" {0}", dtoResponse.ResponseExtended) : ""; pagoNPS.IdTransaccionNPS = dtoResponse.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); }