Esempio n. 1
0
        public async Task <List <string> > ProcessarPagamento(CartaoParam cartao)
        {
            var pagamento = cartao.ConvertTo <PagamentoEntity>();
            var erros     = pagamento.Validar();

            if (erros.Count > 0)
            {
                return(erros);
            }

            pagamento.StatusPagamento = StatusPagamentoEnum.Pendente;
            await _pagamentoRepository.AddUsingRef(pagamento);

            var confirmacaoPagamento = await _gatewayExternalService.EfetuaPagamento(pagamento);

            await _deliveryExternalService.SinalizaStatusPagamento(confirmacaoPagamento);

            var retornoPagamento = await _pagamentoRepository.GetByIDWithLoadRef(pagamento.Id.GetValueOrDefault());

            retornoPagamento.StatusPagamento = confirmacaoPagamento.StatusPagamento;
            await _pagamentoRepository.AddUsingRef(retornoPagamento);

            return(erros);
        }