예제 #1
0
        /// <summary>
        /// Metodo para obtener tarjetas bancarias Melody Milano
        /// </summary>
        /// <param name="request">Movimiento tarjeta bancaria</param>
        /// <returns>Respuesta de la operación</returns>
        public ResponseBussiness <PagoBancarioResponse> ObtenerTarjetaBancariaMelody(ProcesarMovimientoTarjetaBancariaRequest request)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                PagoBancarioResponse respuesta = new PagoBancarioResponse();
                using (TransactionScope scope = new TransactionScope())
                {
                    TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
                    var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);

                    if (funcionesCaja != null)
                    {
                        respuesta = tarjeta.ObtenerTarjeta(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada);
                        if (respuesta.CodeNumber == 0)
                        {
                            scope.Complete();
                        }
                    }
                    else
                    {
                        respuesta.CodeNumber = 103;
                        respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
                    }
                }
                return respuesta;
            }));
        }
예제 #2
0
        /// <summary>
        /// Metodo para procesar tarjetas bancarias con retiro de efectivo
        /// </summary>
        /// <param name="request">Movimiento tarjeta bancaria</param>
        /// <returns>Respuesta de la operación</returns>
        public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaCashBackAdvance(ProcesarMovimientoTarjetaBancariaRequest request)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                PagoBancarioResponse respuesta = new PagoBancarioResponse();
                using (TransactionScope scope = new TransactionScope())
                {
                    TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
                    var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);

                    if (funcionesCaja != null)
                    {
                        respuesta = tarjeta.CashBackAdvance(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Retiro.FolioOperacionAsociada, request.Retiro.ImporteCashBack, 1);
                        if (respuesta.CodeNumber == 0)
                        {
                            var movimientoVenta = repository.ProcesarMovimientoTarjetaBancariaRetiro(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request);
                            scope.Complete();
                        }
                    }
                    else
                    {
                        respuesta.CodeNumber = 103;
                        respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
                    }
                }

                return respuesta;
            }));
        }
예제 #3
0
        /// <summary>
        /// Cancela la operación de cobro
        /// </summary>
        /// <param name="url">URL del servicio de cobro</param>
        /// <returns></returns>
        public PagoBancarioResponse Cancelar(string url)
        {
            PagoBancarioResponse response = new PagoBancarioResponse();
            var httpWebRequest            = (HttpWebRequest)WebRequest.Create(url + "/api/paymentpinpad/cancelpayment");

            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method      = "GET";
            try
            {
                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var    responseText = streamReader.ReadToEnd();
                    JToken token        = JObject.Parse(responseText);
                    response.CodeNumber      = Convert.ToInt32(token.SelectToken("code"));
                    response.CodeDescription = Convert.ToString(token.SelectToken("message"));
                }
            }
            catch (WebException webException)
            {
                var httpResponse = (HttpWebResponse)webException.Response;
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var    responseText = streamReader.ReadToEnd();
                    JToken token        = JObject.Parse(responseText);
                    response.CodeNumber      = Convert.ToInt32(token.SelectToken("code"));
                    response.CodeDescription = Convert.ToString(token.SelectToken("message"));
                }
            }

            return(response);
        }
예제 #4
0
        /// <summary>
        /// Metodo para procesar tarjetas bancarias con pago y retiro de efectivo
        /// </summary>
        /// <param name="request">Movimiento tarjeta bancaria</param>
        /// <returns>Respuesta de la operación</returns>
        public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaCashBack(ProcesarMovimientoTarjetaBancariaRequest request)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                PagoBancarioResponse respuesta = new PagoBancarioResponse();
                using (TransactionScope scope = new TransactionScope())
                {
                    TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
                    var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);

                    if (funcionesCaja != null)
                    {
                        // Se procesan las promociones por venta
                        foreach (var item in request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados)
                        {
                            OperationResponse response = new OperationResponse();
                            response = repository.PersistirPromocionesVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.ImporteDescuento
                                                                            , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                        }
                        // Se procesan las promociones por línea de venta
                        foreach (var item in request.DescuentosPromocionalesPorLineaAplicados.DescuentoPromocionesAplicados)
                        {
                            OperationResponse response = new OperationResponse();
                            response = repository.PersistirPromocionesLineaVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento
                                                                                 , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                        }
                        if (request.Retiro.Retirar)
                        {
                            respuesta = tarjeta.CobroConCashBack(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada, request.Venta.MesesFinanciamiento, request.Venta.MesesParcialidades, request.Venta.CodigoPromocion, request.Venta.ImporteVentaTotal, request.Retiro.ImporteCashBack, request.Venta.SecuenciaFormaPagoImporte);

                            if (respuesta.CodeNumber == 0)
                            {
                                request.Venta.CodigoFormaPagoImporte = respuesta.TipoTarjeta;
                                var movimientoVenta = repository.ProcesarMovimientoTarjetaBancariaVenta(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request);
                                var movimientoCashBack = repository.ProcesarMovimientoTarjetaBancariaRetiro(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request);
                                scope.Complete();
                            }
                        }
                        else
                        {
                            respuesta = tarjeta.CobroConCashBack(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada, request.Venta.MesesFinanciamiento, request.Venta.MesesParcialidades, request.Venta.CodigoPromocion, request.Venta.ImporteVentaTotal, 0, request.Venta.SecuenciaFormaPagoImporte);
                            if (respuesta.CodeNumber == 0)
                            {
                                request.Venta.CodigoFormaPagoImporte = respuesta.TipoTarjeta;
                                var movimientoVenta = repository.ProcesarMovimientoTarjetaBancariaVenta(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request);
                                scope.Complete();
                            }
                        }
                    }
                    else
                    {
                        respuesta.CodeNumber = 103;
                        respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
                    }
                }

                return respuesta;
            }));
        }
예제 #5
0
        /// <summary>
        /// Cobro con tarjeta bancaria y retiro en efectivo
        /// </summary>
        /// <param name="url">URL del servicio de cobro</param>
        /// <param name="numeroSesion">Número de sesión</param>
        /// <param name="folio">Folio de operación</param>
        /// <param name="mesesFinanciamiento">Número de meses que se tiene antes de hacer el primer pago</param>
        /// <param name="mesesParcialidades">Número de meses parciales del pago</param>
        /// <param name="codigoPromocion">Código de promoción bancario</param>
        /// <param name="montoPagado">Monto a pagar</param>
        /// <param name="montoCashBack">Monto a retirar</param>
        /// <returns></returns>
        public PagoBancarioResponse CobroConCashBack(string url, int numeroSesion, string folio, int mesesFinanciamiento, int mesesParcialidades, int codigoPromocion, decimal montoPagado, decimal montoCashBack, int secuencia)
        {
            PagoBancarioResponse response = new PagoBancarioResponse();

            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url + "/api/paymentpinpad/paywithcashback");

            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method      = "POST";
            httpWebRequest.Timeout     = int.Parse(System.Configuration.ConfigurationManager.AppSettings.Get("tiempoEsperaWebApi"));
            var serializer = new Newtonsoft.Json.JsonSerializer();

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                using (var textWriter = new Newtonsoft.Json.JsonTextWriter(streamWriter))
                {
                    serializer.Serialize(textWriter,
                                         new
                    {
                        sessionNumber     = numeroSesion,
                        commerceReference = folio,
                        transactionAmount = montoPagado,
                        cashBackAmount    = montoCashBack,
                        financialMonths   = mesesFinanciamiento,
                        paymentsPartial   = mesesParcialidades,
                        promotion         = codigoPromocion,
                        secuenciaPos      = secuencia
                    });
                }
            }

            try
            {
                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var    responseText = streamReader.ReadToEnd();
                    JToken token        = JObject.Parse(responseText);
                    response.CodeNumber      = Convert.ToInt32(token.SelectToken("code"));
                    response.CodeDescription = Convert.ToString(token.SelectToken("message"));
                    response.Authorization   = Convert.ToString(token.SelectToken("authorization"));
                    response.CardNumber      = Convert.ToString(token.SelectToken("cardNumber"));
                    response.TipoTarjeta     = Convert.ToString(token.SelectToken("tipoTarjeta"));
                }
            }
            catch (WebException webException)
            {
                var httpResponse = (HttpWebResponse)webException.Response;
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var    responseText = streamReader.ReadToEnd();
                    JToken token        = JObject.Parse(responseText);
                    response.CodeNumber      = Convert.ToInt32(token.SelectToken("code"));
                    response.CodeDescription = Convert.ToString(token.SelectToken("message"));
                }
            }

            return(response);
        }
예제 #6
0
        /// <summary>
        /// Obtiene el número de tarjeta mediante la pin pad
        /// </summary>
        /// <param name="url">URL del servicio de cobro</param>
        /// <param name="numeroSesion">Número de sesión</param>
        /// <param name="folio">Folio de operación</param>
        /// <returns></returns>
        public PagoBancarioResponse ObtenerTarjeta(string url, int numeroSesion, string folio)
        {
            PagoBancarioResponse response = new PagoBancarioResponse();
            var httpWebRequest            = (HttpWebRequest)WebRequest.Create(url + "/api/paymentpinpad/getcard");

            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method      = "POST";
            httpWebRequest.Timeout     = int.Parse(System.Configuration.ConfigurationManager.AppSettings.Get("tiempoEsperaWebApi"));

            var serializer = new Newtonsoft.Json.JsonSerializer();

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                using (var textWriter = new Newtonsoft.Json.JsonTextWriter(streamWriter))
                {
                    serializer.Serialize(textWriter,
                                         new
                    {
                        sessionNumber     = numeroSesion,
                        commerceReference = folio
                    });
                }
            }


            try
            {
                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var    responseText = streamReader.ReadToEnd();
                    JToken token        = JObject.Parse(responseText);
                    response.CodeNumber      = Convert.ToInt32(token.SelectToken("code"));
                    response.CodeDescription = Convert.ToString(token.SelectToken("message"));
                    response.CardNumber      = Convert.ToString(token.SelectToken("cardNumber"));
                    response.TipoTarjeta     = Convert.ToString(token.SelectToken("tipoTarjeta"));
                }
            }
            catch (WebException webException)
            {
                var httpResponse = (HttpWebResponse)webException.Response;
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var    responseText = streamReader.ReadToEnd();
                    JToken token        = JObject.Parse(responseText);
                    response.CodeNumber      = Convert.ToInt32(token.SelectToken("code"));
                    response.CodeDescription = Convert.ToString(token.SelectToken("message"));
                }
            }

            return(response);
        }
예제 #7
0
 /// <summary>
 /// Metodo para cancelar la operación bancaria de cobro
 /// </summary>
 /// <param name="request">Movimiento tarjeta bancaria</param>
 /// <returns>Respuesta de la operación</returns>
 public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaCancelar(ProcesarMovimientoTarjetaBancariaRequest request)
 {
     return(tryCatch.SafeExecutor(() =>
     {
         PagoBancarioResponse respuesta = new PagoBancarioResponse();
         TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
         var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);
         if (funcionesCaja != null)
         {
             respuesta = tarjeta.Cancelar(funcionesCaja.UrlLecturaBancaria);
         }
         else
         {
             respuesta.CodeNumber = 103;
             respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
         }
         return respuesta;
     }));
 }
예제 #8
0
        /// <summary>
        /// Metodo para procesar tarjetas bancarias VISA/MASTERCARD
        /// </summary>
        /// <param name="request">Movimiento tarjeta bancaria</param>
        /// <returns>Respuesta de la operación</returns>
        public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaVisaMaster(ProcesarMovimientoTarjetaBancariaRequest request)
        {
            try
            {
                //return tryCatch.SafeExecutor(() =>
                //{
                PagoBancarioResponse respuesta = new PagoBancarioResponse();
                using (TransactionScope scope = new TransactionScope())
                {
                    TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
                    var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);

                    s.LogEntry(this.token.ToString(), 3);
                    s.LogEntry(token.CodeBox.ToString(), 3);
                    s.LogEntry(token.CodeStore.ToString(), 3);
                    s.LogEntry(" vaciado token", 3);

                    if (funcionesCaja != null)
                    {
                        s.LogEntry(" Entro a funciones caja diferente de nulo", 3);
                        //s.LogEntry(" DescuentoPromocionesAplicados: " + request.Venta.ToString(), 1);

                        if (request == null)
                        {
                            s.LogEntry(" request null", 3);
                        }
                        else
                        {
                            s.LogEntry(" request no  null", 3);
                        }


                        if (request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados == null)
                        {
                            s.LogEntry(" Las promiciones son nulas", 3);
                        }
                        else
                        {
                            s.LogEntry(" Las promiciones son NO es nulo", 3);

                            s.LogEntry($" TTTTT Las promiciones son NO es nulo {request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados.Length}", 3);
                        }

                        if (request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados.Length > 0)
                        {
                            s.LogEntry(" Las promiciones son cero", 3);
                        }
                        else
                        {
                            s.LogEntry($"es mayor a 0: {request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados.Length}", 1);
                        }

                        // Se procesan las promociones por venta
                        foreach (var item in request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados)
                        {
                            OperationResponse response = new OperationResponse();
                            response = repository.PersistirPromocionesVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.ImporteDescuento
                                                                            , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                        }
                        // Se procesan las promociones por línea de venta
                        foreach (var item in request.DescuentosPromocionalesPorLineaAplicados.DescuentoPromocionesAplicados)
                        {
                            OperationResponse response = new OperationResponse();
                            response = repository.PersistirPromocionesLineaVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento
                                                                                 , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                        }
                        s.LogEntry(" antes de tarjeta.CobroVisaMasterCard", 3);

                        s.LogEntry($"  funcionesCaja.UrlLecturaBancaria: { funcionesCaja.UrlLecturaBancaria}", 3);
                        s.LogEntry($"  token.CodeStore: {  token.CodeStore}", 3);
                        s.LogEntry($"  request.Venta.FolioOperacionAsociada: {  request.Venta.FolioOperacionAsociada}", 3);
                        s.LogEntry($"  request.Venta.MesesFinanciamiento: { request.Venta.MesesFinanciamiento}", 3);
                        s.LogEntry($"  request.Venta.MesesParcialidades: { request.Venta.MesesParcialidades}", 3);
                        s.LogEntry($"  request.Venta.CodigoPromocion: {request.Venta.CodigoPromocion}", 3);
                        s.LogEntry($"  request.Venta.ImporteVentaTotal: {request.Venta.CodigoPromocion}", 3);
                        s.LogEntry($"  request.Venta.SecuenciaFormaPagoImporte: {request.Venta.SecuenciaFormaPagoImporte}", 3);



                        respuesta = tarjeta.CobroVisaMasterCard(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada, request.Venta.MesesFinanciamiento, request.Venta.MesesParcialidades, request.Venta.CodigoPromocion, request.Venta.ImporteVentaTotal, request.Venta.SecuenciaFormaPagoImporte);
                        s.LogEntry(" despues de tarjeta.CobroVisaMasterCard", 3);
                        if (!respuesta.SePuedePagarConPuntos && !respuesta.SePuedeRetirar)
                        {
                            if (respuesta.CodeNumber == 0)
                            {
                                request.Venta.CodigoFormaPagoImporte = respuesta.TipoTarjeta;
                                var repuestaLocal = repository.ProcesarMovimientoTarjetaBancariaVenta(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request);
                                scope.Complete();
                            }
                        }
                    }
                    else
                    {
                        respuesta.CodeNumber      = 103;
                        respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
                    }
                }
                s.LogEntry("Sin errores", 1);
                return(respuesta);
                //});
            }
            catch (Exception ex)
            {
                s.LogEntry(ex.Message, 3);
                s.LogEntry(ex.InnerException.Message, 3);
                return(null);
            }
        }
예제 #9
0
        /// <summary>
        /// Cobro con tarjeta bancaria
        /// </summary>
        /// <param name="url">URL del servicio de cobro</param>
        /// <param name="numeroSesion">Número de sesión</param>
        /// <param name="folio">Folio de operación</param>
        /// <param name="mesesFinanciamiento">Número de meses que se tiene antes de hacer el primer pago</param>
        /// <param name="mesesParcialidades">Número de meses parciales del pago</param>
        /// <param name="codigoPromocion">Código de promoción bancario</param>
        /// <param name="montoPagado">Monto a pagar</param>
        /// <returns></returns>
        public PagoBancarioResponse CobroVisaMasterCard(string url, int numeroSesion, string folio, int mesesFinanciamiento, int mesesParcialidades, int codigoPromocion, decimal montoPagado, int secuencia)
        {
            s.LogEntry("  Entrando a PagoBancarioResponse CobroVisaMasterCard", 2);

            PagoBancarioResponse response = new PagoBancarioResponse();

            var httpWebRequest = (HttpWebRequest)WebRequest.Create(url + "/api/paymentpinpad/payvisamaster");

            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method      = "POST";
            httpWebRequest.Timeout     = int.Parse(System.Configuration.ConfigurationManager.AppSettings.Get("tiempoEsperaWebApi"));

            s.LogEntry("  Entrando a PagoBancarioResponse Paso el request", 3);
            s.LogEntry($"    httpWebRequest.ToString:{  httpWebRequest.ToString() }", 3);



            var serializer = new Newtonsoft.Json.JsonSerializer();

            using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
            {
                using (var textWriter = new Newtonsoft.Json.JsonTextWriter(streamWriter))
                {
                    serializer.Serialize(textWriter,
                                         new
                    {
                        sessionNumber     = numeroSesion,
                        commerceReference = folio,
                        transactionAmount = montoPagado,
                        financialMonths   = mesesFinanciamiento,
                        paymentsPartial   = mesesParcialidades,
                        promotion         = codigoPromocion,
                        secuenciaPos      = secuencia
                    });
                }
            }
            s.LogEntry("  Salio del serializer", 3);
            try
            {
                s.LogEntry(" --Pagina: " + httpWebRequest.Address.ToString(), 3);
                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

                s.LogEntry(" Genero instancia de httpResponse ", 3);

                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var    responseText = streamReader.ReadToEnd();
                    JToken token        = JObject.Parse(responseText);
                    response.CodeNumber = Convert.ToInt32(token.SelectToken("code"));
                    s.LogEntry("   response.CodeNumber: " + response.CodeNumber, 3);
                    response.CodeDescription       = Convert.ToString(token.SelectToken("message"));
                    response.Authorization         = Convert.ToString(token.SelectToken("authorization"));
                    response.CardNumber            = Convert.ToString(token.SelectToken("cardNumber"));
                    response.TipoTarjeta           = Convert.ToString(token.SelectToken("tipoTarjeta"));
                    response.SePuedeRetirar        = Convert.ToBoolean(token.SelectToken("isCashBack"));
                    response.SePuedePagarConPuntos = Convert.ToBoolean(token.SelectToken("isSaleWithPoints"));
                }
            }
            catch (WebException webException)
            {
                s.LogEntry("Fallo el TRY: " + webException.Message, 2);
                s.LogEntry("Fallo el TRY2: " + webException.InnerException.Message, 2);

                var httpResponse = (HttpWebResponse)webException.Response;
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var    responseText = streamReader.ReadToEnd();
                    JToken token        = JObject.Parse(responseText);
                    response.CodeNumber      = Convert.ToInt32(token.SelectToken("code"));
                    response.CodeDescription = Convert.ToString(token.SelectToken("message"));
                }
            }

            return(response);
        }