コード例 #1
0
        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));
        }
コード例 #2
0
        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;
            }
        }