public async Task <Transacao> RealizarPagamentoPedido(PagamentoPedido pagamentoPedido)
        {
            var pedido = new Pedido
            {
                Id    = pagamentoPedido.PedidoId,
                Valor = pagamentoPedido.Total
            };

            var pagamento = new Pagamento
            {
                Valor           = pagamentoPedido.Total,
                NomeCartao      = pagamentoPedido.NomeCartao,
                NumeroCartao    = pagamentoPedido.NumeroCartao,
                ExpiracaoCartao = pagamentoPedido.ExpiracaoCartao,
                CvvCartao       = pagamentoPedido.CvvCartao,
                PedidoId        = pagamentoPedido.PedidoId
            };

            var transacao = _pagamentoCartaoCreditoFacade.RealizarPagamento(pedido, pagamento);

            if (transacao.StatusTransacao == StatusTransacao.Pago)
            {
                pagamento.AdicionarEvento(
                    new PagamentoRealizadoEvent(
                        pedido.Id,
                        pagamentoPedido.ClienteId,
                        transacao.PagamentoId,
                        transacao.Id,
                        pedido.Valor
                        )
                    );

                _pagamentoRepository.Adicionar(pagamento);
                _pagamentoRepository.AdicionarTransacao(transacao);

                await _pagamentoRepository.UnitOfWork.Commit();

                return(transacao);
            }

            await _mediatorHandler.PublicarNotificacao(
                new DomainNotification("pagamento", "A operadora recusou o pagamento")
                );

            await _mediatorHandler.PublicarEvento(
                new PagamentoRecusadoEvent(
                    pedido.Id,
                    pagamentoPedido.ClienteId,
                    transacao.PagamentoId,
                    transacao.Id,
                    pedido.Valor
                    )
                );

            return(transacao);
        }
Пример #2
0
 public static RecebimentoVenda CreateRecebimentoVendaByPedido(PagamentoPedido pag, Pedido.Pedido pedido)
 {
     return(new RecebimentoVenda
     {
         DataMovimento = pedido.DataPedido,
         Caixa = pedido.Caixa,
         Usuario = pedido.Usuario,
         Empresa = pedido.Empresa,
         FormaPagamento = pag.FormaPagamento,
         Historico = "RECEBIMENTO DO PEDIDO " + pag.Pedido.Id + " PARCELA " + pag.Parcela,
         Valor = pag.ValorTotal
     });
 }
Пример #3
0
        public async Task Handle(PedidoEstoqueConfirmadoEvent message, CancellationToken cancellationToken)
        {
            var pagamentoPedido = new PagamentoPedido
            {
                PedidoId        = message.PedidoId,
                ClienteId       = message.ClienteId,
                Total           = message.Total,
                NomeCartao      = message.NomeCartao,
                NumeroCartao    = message.NumeroCartao,
                ExpiracaoCartao = message.ExpiracaoCartao,
                CvvCartao       = message.CvvCartao
            };

            await _pagamentoService.RealizarPagamentoPedido(pagamentoPedido);
        }
Пример #4
0
 public static void IncluirPagamentoPedido(PagamentoPedido pagamento)
 {
 }