public async Task <IActionResult> InitPayment() { var model = new PagoParInitTransactionModel { MontoTotal = 20000, Comprador = { Ciudad = "1", Email = "*****@*****.**", Nombre = "Andoni Zubizarreta", RazonSocial = "Andoni Zubizarreta", Ruc = "4178924-5", Documento = "4178924", Telefono = "0981158883", TipoDocumento = "CI" }, DescripcionResumen = "Compra virtual", FechaMaximaPago = DateTime.Now.AddDays(2), IdPedidoComercio = "252635", ComprasItems = new List <PagoParItemModel> { new PagoParItemModel { Cantidad = 1, Categoria = "909", Ciudad = "1", Descripcion = "IPhone 8", IdProducto = 1, Nombre = "IPhone 8", PrecioTotal = 20000, UrlImagen = "https://store.storeimages.cdn-apple.com/4982/as-images.apple.com/is/image/AppleInc/aos/published/images/i/ph/iphone8/plus/iphone8-plus-gold-select-2018?wid=470&hei=556&fmt=png-alpha&.v=1550795417455" } } }; var result = await _pagoParService.InitTransactionAsync(model); if (!result.Respuesta) { return(Ok(result.Error)); } return(Redirect(result.Resultado.RedirectUrl)); }
public async Task <PagoParResult <(string Hash, string RedirectUrl)> > InitTransactionAsync(PagoParInitTransactionModel model) { try { _logger.LogInformation("Starting transaction", JsonConvert.SerializeObject(model)); var content = new InitTransactionModel { DescripcionResumen = model.DescripcionResumen, FechaMaximaPago = model.FechaMaximaPago.ToString("yyyy-MM-dd HH:mm:ss"), TipoPedido = "VENTA-COMERCIO", // TODO: Enum this shit MontoTotal = model.MontoTotal, IdPedidoComercio = model.IdPedidoComercio, PublicKey = _pagoParConfig.PublicKey, Token = $"{_pagoParConfig.PrivateKey}{model.IdPedidoComercio}{model.MontoTotal}".Sha1(), Comprador = { Ciudad = model.Comprador.Ciudad, Coordenadas = model.Comprador.Coordenadas, Direccion = model.Comprador.Direccion, DireccionReferencia = model.Comprador.DireccionReferencia, Documento = model.Comprador.Documento, Email = model.Comprador.Email, Nombre = model.Comprador.Nombre, RazonSocial = model.Comprador.RazonSocial, Ruc = model.Comprador.Ruc, Telefono = model.Comprador.Telefono, TipoDocumento = model.Comprador.TipoDocumento } }; foreach (var compraItem in model.ComprasItems) { var item = new ItemModel { Cantidad = compraItem.Cantidad, Categoria = compraItem.Categoria, Ciudad = compraItem.Ciudad, Descripcion = compraItem.Descripcion, IdProducto = compraItem.IdProducto, Nombre = compraItem.Nombre, PrecioTotal = compraItem.PrecioTotal, UrlImagen = compraItem.UrlImagen, VendedorDireccion = compraItem.VendedorDireccion, VendedorDireccionCoordenadas = compraItem.VendedorDireccionCoordenadas, VendedorDireccionReferencia = compraItem.VendedorDireccionReferencia, VendedorTelefono = compraItem.VendedorTelefono, PublicKey = _pagoParConfig.PublicKey }; content.ComprasItems.Add(item); } var apiResult = await _httpClient.InitTransactionAsync(content); var result = new PagoParResult <(string Hash, string RedirectUrl)> { Respuesta = apiResult.Respuesta, Error = apiResult.Error }; var resultado = apiResult.Resultado.FirstOrDefault(); if (apiResult.Respuesta && resultado != null) { var hash = resultado.Data; result.Resultado = ( Hash : hash, RedirectUrl : GenerateRedirectUrl(hash) ); } return(result); } catch (Exception ex) { _logger.LogError(ex, "Error in InitTransactionAsync"); throw; } }