public ResponseBussiness <FinalizarCompraResponse> FinalizarCompraTCMM(FinalizarCompraRequest request) { TokenDto token = new TokenService().Get(); ResponseBussiness <FinalizarCompraResponse> response = new MelodyMilanoBusiness(token).FinalizarCompraTCMM(request); return(response); }
public ActionResult <FinalizarCompraResponse> FinalizarCompra([FromBody] Carrinho carrinho, CancellationToken cancellationToken) { try { var produtoRequest = new FinalizarCompraRequest() { ProdutosCompra = carrinho.produtos, Comprador = carrinho.comprador, Endereco = carrinho.endereco }; var query = new FinalizarCompraCommand(produtoRequest, this.UserRef); var results = this.Mediator.Send(query).Result; return(Ok(results.CompraPendente)); } catch (Exception ex) { return(BadRequest(new { Mensagem = ex.Message })); } }
/// <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; })); }
public FinalizarCompraCommand(FinalizarCompraRequest finalizarCompraRequest, IUserRef userRef) { FinalizarCompraRequest = finalizarCompraRequest; UserRef = userRef; }