示例#1
0
        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);
                }
            }
        }
示例#2
0
        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));
        }
示例#3
0
        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);
        }