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