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); }