private void EfetuarPagamentos() { try { if (Vendas.Count == 0) { return; // A fila está vazia } while (Vendas.Count > 0) { EstruturaVenda venda = Vendas[0]; try { Enumeradores.RetornoProcessamento retorno = oProcessamento.ProcessarVenda(venda); switch (retorno) { case Enumeradores.RetornoProcessamento.Processado: this.Aprovar(venda); break; case Enumeradores.RetornoProcessamento.CancelarAccertify: this.Fraude(venda); break; case Enumeradores.RetornoProcessamento.AguardarAccertify: case Enumeradores.RetornoProcessamento.Timeout: this.Analisar(venda); break; case Enumeradores.RetornoProcessamento.SolicitarDocumentos: this.SolicitarDocumentos(venda); break; case Enumeradores.RetornoProcessamento.CancelarSemFraude: this.CancelarSemFraude(venda); break; default: this.AtualizarScore(venda); break; } if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor) { SalvarLog.Salvar(string.Format("Venda processada HammerHead. \n Venda: {0} \nScore:{1}\nRecommendation: {2}", venda.Senha, venda.Score.ToString(), venda.RetornoAccertify.ToString()), Enumeradores.TipoEntrada.Sucesso); } } catch (Exception ex) { SalvarLog.SalvarErro("Falha ao processar transação: " + venda.Senha, ex.Message, this.salvarlogevent); } finally { Vendas.Remove(venda); } } } catch (Exception ex) { throw ex; } }
private Enumeradores.RetornoProcessamento ProcessarAdyen() { try { var pagamentoEfetuado = Venda.FormaPagamento.NotaFiscal.Contains(AdyenStatic.Fields.NotaFiscal); LogUtil.Debug(string.Format("##ProcessamentoTEF.ProcessandoAdyen## CLIENTE: {0}, PAGAMENTO_REALIZADO: {1}", this.oPagamento.ClienteID, pagamentoEfetuado)); if (!pagamentoEfetuado) { oPagamento.oAdyen.EfetuarPagamento(); } else { oPagamento.oAdyen.CodigoReferencia = Venda.FormaPagamento.CodigoResposta; } if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor) { SalvarLog.Salvar("Cobrança Adyen (Inicial) HammerHead OK", Enumeradores.TipoEntrada.Sucesso, SalvarLog.Events.Transacoes); } this.ConsultarAccertify(); Enumeradores.RetornoProcessamento retornoProcessamento = 0; LogUtil.Info(string.Format("##ProcessamentoTEF.ProcessandoAdyen.RETORNO## CLIENTE: {0}, RETORNO_ACCERTIFY: {1}", this.oPagamento.ClienteID, RetornoAccertify)); switch (RetornoAccertify) { case Enumeradores.RetornoAccertify.Bypass: case Enumeradores.RetornoAccertify.Aceitar: if (this.oPagamento.FormaPagamentoOrigem == 0) { oPagamento.oAdyen.CapturarPagamento(); } retornoProcessamento = Enumeradores.RetornoProcessamento.Processado; break; case Enumeradores.RetornoAccertify.AcompanhamentoComCliente: retornoProcessamento = Enumeradores.RetornoProcessamento.SolicitarDocumentos; break; case Enumeradores.RetornoAccertify.AguardarReview: retornoProcessamento = Enumeradores.RetornoProcessamento.AguardarAccertify; break; case Enumeradores.RetornoAccertify.Indefinido: LogUtil.Error(string.Format("##ProcessamentoTEF.ProcessandoAdyen.ERROR## CLIENTE: {0}, RETORNO_ACCERTIFY: {1}", this.oPagamento.ClienteID, RetornoAccertify)); break; case Enumeradores.RetornoAccertify.CancelarSemFraude: retornoProcessamento = Enumeradores.RetornoProcessamento.CancelarSemFraude; break; case Enumeradores.RetornoAccertify.CancelarAltoRisco: case Enumeradores.RetornoAccertify.CancelarTempoLimiteExcedido: case Enumeradores.RetornoAccertify.CancelarVendaInvalida: oPagamento.oAdyen.CancelarPagamento(); retornoProcessamento = Enumeradores.RetornoProcessamento.CancelarAccertify; break; case Enumeradores.RetornoAccertify.Chargeback: retornoProcessamento = Enumeradores.RetornoProcessamento.Chargeback; break; case Enumeradores.RetornoAccertify.VendaJaCancelada: oPagamento.oAdyen.CancelarPagamento(); retornoProcessamento = Enumeradores.RetornoProcessamento.VendaJaCancelada; break; default: throw new ArgumentOutOfRangeException(); } return(retornoProcessamento); } catch (Exception ex) { LogUtil.Error(string.Format("##ProcessamentoTEF.ProcessandoAdyen.EXCEPTION## CLIENTE: {0}, MSG: {1}", this.oPagamento.ClienteID, ex.Message), ex); if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor) { SalvarLog.SalvarErro("Pagamento Adyen", "Não foi possível processar o pagamento.\nVenda: " + Venda.ID + "\nMotivo: " + ex.Message, SalvarLog.Events.Transacoes); } return(Enumeradores.RetornoProcessamento.CartaoInvalido); } }