public async Task <ResultModel <List <DataModel> > > InitTransactionAsync(InitTransactionModel model) { var body = new StringContent(JsonConvert.SerializeObject(model, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() })); var result = await _httpClient.PostAsync("comercios/1.1/iniciar-transaccion", body); var responseString = await result.Content.ReadAsStringAsync(); return(MapResult <List <DataModel> >(responseString)); }
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; } }