Exemplo n.º 1
0
        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));
        }
Exemplo n.º 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;
            }
        }