Exemple #1
0
 /// <summary>
 /// Método para realizar un pago a una TCMM
 /// </summary>
 /// <param name="request">Objeto petición con información de Pago TCMM asociada</param>
 /// <returns></returns>
 public ResponseBussiness <OperationResponse> RealizarPago(PagoTCMMRequest request)
 {
     return(tryCatch.SafeExecutor(() =>
     {
         OperationResponse operationResponse = new OperationResponse();
         InfoService infoService = new InfoService();
         operationResponse.CodeNumber = "0";
         InformacionServiciosExternosBusiness informacionServiciosExternosBusiness = new InformacionServiciosExternosBusiness();
         //NOTA: Unicamente se manda a llamar la URL ya que en el web.config se tiene como keys, y no se esta conectando el servicio mediante vs
         infoService = informacionServiciosExternosBusiness.ObtenerCadenaServicioExterno(10);
         var cadenaURL = infoService.UrlService;
         HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(cadenaURL);
         //webrequest.Headers.Add ("Authorization","Basic dXNybW13czpNMWw0bjAqMjAxOA==");
         webrequest.Headers.Add("Authorization", credenciales.Licence);
         webrequest.Method = "POST";
         webrequest.ContentType = "application/json";
         using (var streamWriter = new StreamWriter(webrequest.GetRequestStream()))
         {
             string json = "{\"User\":\"" + credenciales.UserName + "\"," +
                           "\"Pwd\":\"" + credenciales.Password + "\"," +
                           "\"CardId\":\"" + request.NumeroTarjeta + "\"," +
                           "\"BranchId\":\"" + request.NumeroTienda + "\"," +
                           "\"TerminalNumber\":\"" + request.NumeroCaja + "\"," +
                           "\"VoucherNumber\":\"" + request.Transaccion + "\"," +
                           "\"TransactionAmount\":\"" + request.Importe + "\"," +
                           "\"EntryMode\":\"" + request.ModoEntrada + "\"}";
             streamWriter.Write(json);
             streamWriter.Flush();
             streamWriter.Close();
         }
         var httpResponse = (HttpWebResponse)webrequest.GetResponse();
         using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
         {
             var result = streamReader.ReadToEnd();
             dynamic resultadoTemporal = JsonConvert.DeserializeObject(result);
             if (resultadoTemporal.ErrorCode == 0)
             {
                 operationResponse.CodeNumber = "1";
                 operationResponse.CodeDescription = resultadoTemporal.Response;
             }
             else
             {
                 operationResponse.CodeDescription = resultadoTemporal.Message;
             }
         }
         return operationResponse;
     }));
 }
Exemple #2
0
        /// <summary>
        /// Valida primera compra de TCMM
        /// </summary>
        /// <param name="informacionTCMMRequest"></param>
        /// <returns></returns>
        public ResponseBussiness <PrimeraCompraResponse> ValidarPrimeraCompra(PlanesFinanciamientoRequest informacionTCMMRequest)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                PrimeraCompraResponse informacion = new PrimeraCompraResponse();
                InfoService infoService = new InfoService();
                InformacionServiciosExternosBusiness informacionServiciosExternosBusiness = new InformacionServiciosExternosBusiness();
                //NOTA: Unicamente se manda a llamar la URL ya que en el web.config se tiene como keys, y no se esta conectando el servicio mediante vs
                infoService = informacionServiciosExternosBusiness.ObtenerCadenaServicioExterno(9);
                var cadenaURL = infoService.UrlService;
                System.Net.HttpWebRequest webrequest = (HttpWebRequest)System.Net.WebRequest.Create(cadenaURL);//ConfigurationManager.AppSettings["servicioTxCMMPrimerCompra"].ToString());
                //webrequest.Headers.Add ("Authorization","Basic dXNybW13czpNMWw0bjAqMjAxOA==");
                webrequest.Headers.Add("Authorization", credenciales.Licence);
                webrequest.Method = "POST";
                webrequest.ContentType = "application/json";
                using (var streamWriter = new StreamWriter(webrequest.GetRequestStream()))
                {
                    string json = "{\"User\":\"" + credenciales.UserName + "\"," +
                                  "\"Pwd\":\"" + credenciales.Password + "\"," +
                                  "\"CardId\":\"" + informacionTCMMRequest.NumeroTarjeta + "\"}";
                    streamWriter.Write(json);
                    streamWriter.Flush();
                    streamWriter.Close();
                }
                var httpResponse = (HttpWebResponse)webrequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var result = streamReader.ReadToEnd();
                    dynamic resultadoTemporal = JsonConvert.DeserializeObject(result);

                    informacion.CodigoError = resultadoTemporal.ErrorCode;
                    informacion.Mensaje = resultadoTemporal.Message;
                    informacion.Respuesta = resultadoTemporal.Response;
                }
                return informacion;
            }));
        }
Exemple #3
0
        /// <summary>
        /// Método para consultar la información de TCMM
        /// </summary>
        /// <param name="informacionTCMMRequest">Objeto petición con información de TCMM asociada</param>
        /// <param name="imprimirTicket">Parámetro que indica si el Ticket debe imprimirse</param>
        /// <returns></returns>
        public ResponseBussiness <InformacionTCMMResponse> ConsultarInformacionTCMM(InformacionTCMMRequest informacionTCMMRequest, Boolean imprimirTicket)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                InformacionTCMMResponse informacion = new InformacionTCMMResponse();
                Inspector inspector = new Inspector();
                InfoService infoService = new InfoService();
                InformacionServiciosExternosBusiness informacionServiciosExternosBusiness = new InformacionServiciosExternosBusiness();
                //NOTA: Unicamente se manda a llamar la URL ya que en el web.config se tiene como keys, y no se esta conectando el servicio mediante vs
                infoService = informacionServiciosExternosBusiness.ObtenerCadenaServicioExterno(6);
                var cadenaURL = infoService.UrlService;
                System.Net.HttpWebRequest webrequest = (HttpWebRequest)System.Net.WebRequest.Create(cadenaURL);
                //webrequest.Headers.Add ("Authorization","Basic dXNybW13czpNMWw0bjAqMjAxOA==");
                webrequest.Headers.Add("Authorization", credenciales.Licence);
                webrequest.Method = "POST";
                webrequest.ContentType = "application/json";

                using (var streamWriter = new StreamWriter(webrequest.GetRequestStream()))
                {
                    string json = "{\"User\":\"" + credenciales.UserName + "\"," +
                                  "\"Pwd\":\"" + credenciales.Password + "\"," +
                                  "\"CardId\":\"" + informacionTCMMRequest.NumeroTarjeta + "\"}";
                    streamWriter.Write(json);
                    streamWriter.Flush();
                    streamWriter.Close();
                }

                var httpResponse = (HttpWebResponse)webrequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var result = streamReader.ReadToEnd();
                    dynamic resultadoTemporal = JsonConvert.DeserializeObject(result);

                    informacion.CodigoRespuestaTCMM = new CodigoRespuestaTCMM();
                    informacion.CodigoRespuestaTCMM.CodigoRespuesta = resultadoTemporal.ErrorCode;
                    informacion.CodigoRespuestaTCMM.MensajeRetorno = resultadoTemporal.Message;

                    if (informacion.CodigoRespuestaTCMM.CodigoRespuesta == "0")
                    {
                        informacion.SaldoEnLinea = resultadoTemporal.Response.Balance;
                        informacion.SaldoAlCorte = resultadoTemporal.Response.LastBalance;
                        if (resultadoTemporal.Response.PaymentDate.ToString() != string.Empty)
                        {
                            informacion.FechaLimitePago = DateTime.Parse(resultadoTemporal.Response.PaymentDate.ToString()).ToString();
                        }
                        informacion.PagoMinimo = resultadoTemporal.Response.PeriodAmount;
                        informacion.SaldoEnPuntos = resultadoTemporal.Response.BalancePoints;
                        informacion.EquivalenteEnPuntos = resultadoTemporal.Response.BalancePointsEq;
                        informacion.PuntosAcumuladosUltimoCorte = resultadoTemporal.Response.PeriodPoints;
                        informacion.MontoPagoSinIntereses = resultadoTemporal.Response.NoInterestPaymentAmount;
                        // Realizar el proceso de Truncado
                        informacion.SaldoEnLinea = inspector.TruncarValor(informacion.SaldoEnLinea);
                        informacion.SaldoAlCorte = inspector.TruncarValor(informacion.SaldoAlCorte);
                        informacion.PagoMinimo = inspector.TruncarValor(informacion.PagoMinimo);
                        informacion.EquivalenteEnPuntos = inspector.TruncarValor(informacion.EquivalenteEnPuntos);
                        informacion.MontoPagoSinIntereses = inspector.TruncarValor(informacion.MontoPagoSinIntereses);
                    }
                }

                if (imprimirTicket)
                {
                    // Persistencia de Consulta de Saldo
                    melodyMilanoRepository.PersistirConsultarInformacionTCMM(token.CodeBox, token.CodeStore, token.CodeEmployee, informacion.SaldoEnLinea, informacion.SaldoAlCorte, informacion.FechaLimitePago, informacion.PagoMinimo, informacion.SaldoEnPuntos, informacion.EquivalenteEnPuntos, informacion.PuntosAcumuladosUltimoCorte);

                    //Impresión de Tickets de Consulta de Saldo
                    PrintTicketConsultaSaldo printTicketConsultaSaldo = new PrintTicketConsultaSaldo(token);
                    OperationResponse operationResponse = new OperationResponse();
                    OperationResponse operation = printTicketConsultaSaldo.PrintNow(informacionTCMMRequest.NumeroTarjeta);
                }

                return informacion;
            }));
        }
Exemple #4
0
        /// <summary>
        /// Método para finalizar la compra por tarjeta de MM
        /// </summary>
        /// <param name="request">Objeto petición con información de TCMM asociada</param>
        /// <returns></returns>
        public ResponseBussiness <FinalizarCompraResponse> FinalizarCompraTCMM(FinalizarCompraRequest request)
        {
            //request.PlanFinanciamiento: ID del plan de financiamiento
            //request.ImporteVentaTotal: Monto autorizado con la TCMM
            string mesesFinanciados;
            string montoMensualidad;

            //OCG: Recuparar número de meses para el financiamiento
            mesesFinanciados = request.MesesFinanciados.ToString();

            return(tryCatch.SafeExecutor(() =>
            {
                FinalizarCompraResponse response = new FinalizarCompraResponse();
                InfoService infoService = new InfoService();
                InformacionServiciosExternosBusiness informacionServiciosExternosBusiness = new InformacionServiciosExternosBusiness();
                infoService = informacionServiciosExternosBusiness.ObtenerCadenaServicioExterno(7);
                var cadenaURL = infoService.UrlService;
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(cadenaURL + "/getPurchaseAuthorization");
                httpWebRequest.Headers.Add("Authorization", credenciales.Licence);
                httpWebRequest.Method = "POST";
                httpWebRequest.ContentType = "application/json";
                var serializer = new Newtonsoft.Json.JsonSerializer();

                // Inicia la Transaccion
                using (TransactionScope scope = new TransactionScope())
                {
                    // Se procesan las promociones por venta
                    foreach (var item in request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados)
                    {
                        repository.PersistirPromocionesVenta(request.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)
                    {
                        repository.PersistirPromocionesLineaVenta(request.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento
                                                                  , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                    }

                    //OCG:
                    // Se procesa la persistencia localmente
                    var movimientoVenta = repository.ProcesarMovimientoTarjetaMelodyMilano(token.CodeStore, token.CodeBox, token.CodeEmployee, "", request.NumeroTarjeta, request);

                    // Se invoca el Servicio de Milano
                    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                    {
                        using (var textWriter = new Newtonsoft.Json.JsonTextWriter(streamWriter))
                        {
                            serializer.Serialize(textWriter,
                                                 new
                            {
                                User = credenciales.UserName,
                                Pwd = credenciales.Password,
                                CardId = request.NumeroTarjeta,
                                BranchId = token.CodeStore,
                                TerminalNumber = token.CodeBox,
                                VoucherNumber = movimientoVenta.Transaccion,
                                TransactionAmount = request.ImporteVentaTotal,
                                EntryMode = 12,
                                FinancingSchemeId = request.PlanFinanciamiento
                            });
                        }
                    }
                    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                    {
                        var responseText = streamReader.ReadToEnd();
                        JToken responseJObject = JObject.Parse(responseText);
                        response.CodigoRespuestaTCMM = new CodigoRespuestaTCMM();
                        response.CodigoRespuestaTCMM.CodigoRespuesta = Convert.ToString(responseJObject.SelectToken("ErrorCode"));
                        response.CodigoRespuestaTCMM.MensajeRetorno = Convert.ToString(responseJObject.SelectToken("Message"));

                        //OCG: Recuperar los valores del financiamiento para poder actualizar la tabla
                        UpdatePlanFinanciamientoTCMM planesFinanciamiento = new UpdatePlanFinanciamientoTCMM();

                        planesFinanciamiento.folioOperacion = request.FolioOperacionAsociada;
                        planesFinanciamiento.montoMensualidad = Convert.ToString(responseJObject.SelectToken("Response.MonthlyPayment"));
                        planesFinanciamiento.financiamientoId = request.MesesFinanciados.ToString();
                        planesFinanciamiento.codigoFormaPago = request.CodigoFormaPagoImporte;
                        planesFinanciamiento.codigoTienda = token.CodeStore;
                        planesFinanciamiento.fechaActualizacion = DateTime.Now;
                        planesFinanciamiento.codigoCaja = token.CodeBox;

                        repository.spMilano_ActualizaPlazoFinanciamiento(planesFinanciamiento);
                        //--


                        if (response.CodigoRespuestaTCMM.CodigoRespuesta == "0")
                        {
                            // Actualizar la autorización regresada por WS Milano
                            response.Authorization = Convert.ToString(responseJObject.SelectToken("Response").SelectToken("AuthorizationNumber"));
                            repository.ActualizarMovimientoTarjetaMelodyMilano(token.CodeStore, token.CodeBox, movimientoVenta.Transaccion, response.Authorization, request);
                            scope.Complete();
                        }
                    }
                }
                // Finalizar la Transacción

                return response;
            }));
        }
Exemple #5
0
        /// <summary>
        /// Método para consultar los planes de financiamiento
        /// </summary>
        /// <param name="planesFinanciamientoRequest">Objeto petición con información de TCMM asociada</param>
        /// <returns></returns>
        public ResponseBussiness <PlanesFinanciamientoResponse> ConsultarPlanesFinanciamientoDescuentoPrimeraCompra(PlanesFinanciamientoRequest planesFinanciamientoRequest)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                descuentosPromocionesRepository = new DescuentosPromocionesRepository();
                PlanesFinanciamientoResponse response = new PlanesFinanciamientoResponse();
                InfoService infoService = new InfoService();
                InformacionServiciosExternosBusiness informacionServiciosExternosBusiness = new InformacionServiciosExternosBusiness();
                //NOTA: Unicamente se manda a llamar la URL ya que en el web.config se tiene como keys, y no se esta conectando el servicio mediante vs
                infoService = informacionServiciosExternosBusiness.ObtenerCadenaServicioExterno(8);
                var cadenaURL = infoService.UrlService;
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(cadenaURL);//ConfigurationManager.AppSettings["servicioTxCMMEsquemas"]);
                httpWebRequest.Headers.Add("Authorization", credenciales.Licence);
                httpWebRequest.Method = "POST";
                httpWebRequest.ContentType = "application/json";
                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
                        {
                            User = credenciales.UserName,
                            Pwd = credenciales.Password,
                            CardId = planesFinanciamientoRequest.NumeroTarjeta
                        });
                    }
                }

                var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var responseText = streamReader.ReadToEnd();
                    JToken token = JObject.Parse(responseText);
                    response.CodigoRespuestaTCMM = new CodigoRespuestaTCMM();
                    response.CodigoRespuestaTCMM.CodigoRespuesta = Convert.ToString(token.SelectToken("ErrorCode"));
                    response.CodigoRespuestaTCMM.MensajeRetorno = Convert.ToString(token.SelectToken("Message"));

                    if (response.CodigoRespuestaTCMM.CodigoRespuesta == "0")
                    {
                        response.PlanesFinanciamiento = new List <PlanFinanciamientoResponse>();
                        var array = token.SelectToken("Response").Value <JArray>();

                        foreach (JObject jObject in array.Children <JObject>())
                        {
                            PlanFinanciamientoResponse planFinanciamiento = new PlanFinanciamientoResponse();
                            planFinanciamiento.Id = Convert.ToInt32(jObject.SelectToken("FinancingSchemeId"));
                            planFinanciamiento.Descripcion = Convert.ToString(jObject.SelectToken("Description"));
                            planFinanciamiento.Periodo = Convert.ToInt32(jObject.SelectToken("PaybackPeriod"));

                            response.PlanesFinanciamiento.Add(planFinanciamiento);
                        }
                    }
                }

                // Validar si existe promoción primera compra con TCMM
                DescuentoPromocionalVenta[] descuentoPromocionalEncontrado = descuentosPromocionesRepository.ObtenerDescuentoMMPrimeraCompra(planesFinanciamientoRequest.FolioOperacionAsociada, token.CodeStore, token.CodeBox);
                if (descuentoPromocionalEncontrado != null && descuentoPromocionalEncontrado.Length > 0)
                {
                    // Si existe la promoción se valida si se trata de la primera compra TCMM
                    // Respuesta = T ES Primera compra
                    // Respuesta = F NO es primera compra
                    PrimeraCompraResponse validar = this.ValidarPrimeraCompra(planesFinanciamientoRequest).Data;
                    if (validar.Respuesta == "T")
                    {
                        response.DescuentoPromocionalPrimeraCompra = descuentoPromocionalEncontrado[0];
                    }
                }
                return response;
            }));
        }