예제 #1
0
        private void AtualizarVendaBilheteria(BD bd, EstruturaVenda venda)
        {
            try
            {
                string nota = string.Empty;
                if (oProcessamento.oPagamento.TipoPagamento == EstruturaPagamento.enumTipoPagamento.Adyen)
                {
                    nota = AdyenStatic.Fields.NotaFiscal;
                }
                else
                {
                    nota = oProcessamento.oPagamento.oSitef.CupomFiscal;
                }

                oVendaBilheteria.AtualizarPagamentoProcessado(bd, venda.ID, nota);
                if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                {
                    SalvarLog.Salvar("Pagamento e Nota fiscal Atualizados.", Enumeradores.TipoEntrada.Informacao, SalvarLog.Events.Transacoes);
                }
            }
            catch (Exception ex)
            {
                if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                {
                    SalvarLog.SalvarErro("Não foi possível atualizar o Pagamento e Nota Fiscal.", ex.Message, SalvarLog.Events.Transacoes);
                }
                throw ex;
            }
        }
예제 #2
0
        private void AtualizarFormaPagamento(BD bd, EstruturaVenda venda)
        {
            oVendaBilheteriaFormaPagamento.Ler(venda.FormaPagamento.VendaBilheteriaFormaPagamentoID);

            if (oProcessamento.oPagamento.TipoPagamento == EstruturaPagamento.enumTipoPagamento.Adyen)
            {
                oVendaBilheteriaFormaPagamento.CodigoRespostaVenda.Valor = oProcessamento.oPagamento.oAdyen.CodigoReferencia;
                oVendaBilheteriaFormaPagamento.NumeroAutorizacao.Valor   = oProcessamento.oPagamento.oAdyen.CodigoAutenticacao ?? oVendaBilheteriaFormaPagamento.NumeroAutorizacao.Valor;
                oVendaBilheteriaFormaPagamento.Cupom.Valor = AdyenStatic.Fields.NotaFiscal;
            }
            else
            {
                oVendaBilheteriaFormaPagamento.VendaBilheteriaFormaPagamentoTEFID.Valor = oProcessamento.oPagamento.oSitef.ID;
                oVendaBilheteriaFormaPagamento.CodigoRespostaVenda.Valor = oProcessamento.oPagamento.oSitef.CodigoRespostaSitefVenda;
                oVendaBilheteriaFormaPagamento.MensagemRetorno.Valor     = oProcessamento.oPagamento.oSitef.MensagemFinaliza;
                oVendaBilheteriaFormaPagamento.HoraTransacao.Valor       = oProcessamento.oPagamento.oSitef.HoraTransacao;
                oVendaBilheteriaFormaPagamento.DataTransacao.Valor       = oProcessamento.oPagamento.oSitef.DataTransacao;
                oVendaBilheteriaFormaPagamento.CodigoIR.Valor            = oProcessamento.oPagamento.oSitef.CodigoIR;
                oVendaBilheteriaFormaPagamento.NumeroAutorizacao.Valor   = oProcessamento.oPagamento.oSitef.NumeroAutorizacao;
                oVendaBilheteriaFormaPagamento.NSUHost.Valor             = oProcessamento.oPagamento.oSitef.NSUHost;
                oVendaBilheteriaFormaPagamento.NSUSitef.Valor            = oProcessamento.oPagamento.oSitef.NSUSitef;
                oVendaBilheteriaFormaPagamento.Cupom.Valor = oProcessamento.oPagamento.oSitef.CupomFiscal;
                oVendaBilheteriaFormaPagamento.DadosConfirmacaoVenda.Valor = oProcessamento.oPagamento.oSitef.DadosConfirmacao;
                oVendaBilheteriaFormaPagamento.Rede.Valor = oProcessamento.oPagamento.oSitef.RedeRetorno;
                oVendaBilheteriaFormaPagamento.CodigoRespostaTransacao.Valor = oProcessamento.oPagamento.oSitef.CodigoRespostaSitefFinaliza;

                if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                {
                    SalvarLog.Salvar("VendaBilheteriaFormaPagamento Atualizada\n NotaFiscal: " + oProcessamento.oPagamento.oSitef.CupomFiscal, Enumeradores.TipoEntrada.Sucesso, SalvarLog.Events.Transacoes);
                }
            }
            oVendaBilheteriaFormaPagamento.Atualizar(bd);
        }
예제 #3
0
        public void EfetuarPagamentos(List <EstruturaVenda> listVendas, string action = "")
        {
            try
            {
                LogUtil.Debug(string.Format("##HammerHead.EfetuandoPagamentos##"));

                if (listVendas.Count == 0)
                {
                    LogUtil.Debug(string.Format("##HammerHead.EfetuandoPagamentos.FilaVazia##"));
                    return; // A fila está vazia
                }

                foreach (var venda in listVendas)
                {
                    try
                    {
                        EfetuarPagamento(venda, action);
                    }
                    catch (Exception ex)
                    {
                        LogUtil.Error(string.Format("##HammerHead.EfetuandoPagamentos.EXCEPTION## VENDA: {0}, MSG: {1}", venda.ID, ex.Message), ex);
                        SalvarLog.SalvarErro("Falha ao processar transação: " + venda.Senha, ex.Message, this.salvarlogevent);
                    }
                }
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("##HammerHead.EfetuandoPagamentos.EXCEPTION## MSG: {0}", ex.Message), ex);
                throw;
            }
        }
예제 #4
0
        private void Chageback(EstruturaVenda venda)
        {
            try
            {
                LogUtil.Info(string.Format("##HammerHead.Chageback## VENDA: {0}", venda.ID));

                oVendaBilheteria.Score.Valor = venda.Score;
                oVendaBilheteria.AtualizarStatusAntiFraude(venda.ID, VendaBilheteria.StatusAntiFraude.Aprovado, venda.Score, venda.RetornoAccertify);

                LogUtil.Info(string.Format("##HammerHead.Chageback.SUCCESS## VENDA: {0}", venda.ID));
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("##HammerHead.Chageback.EXCEPTION## VENDA: {0}, MSG: {1}", venda.ID, ex.Message), ex);
                SalvarLog.SalvarErro("Erro ao atualizar chargeback: " + venda.ID, ex.Message, SalvarLog.Events.Transacoes);
            }
        }
예제 #5
0
        private static void Salvar(bool hasEnd, DateTime inicio, DateTime fim, string mensagem, string Erro, Enumeradores.TipoEntrada tipo, Events evento)
        {
            var sw = new Stopwatch();

            sw.Start();

            LogUtil.Debug("##SalvarLog.Salvar.Started##");
            try
            {
                var source  = ConfigurationManager.AppSettings["EventViewerSource"];
                var logName = ConfigurationManager.AppSettings["EventViewerLogName"];

                LogUtil.Debug(String.Format("##SalvarLog.Salvar## SOURCE: {0}, LOG_NAME: {1}", source, logName));

                if (tipo == Enumeradores.TipoEntrada.Erro)
                {
                    mensagem = string.Format("Erro ao processar.\n\n{0}\nErro:{1}", mensagem, Erro);
                }

                if (!hasEnd)
                {
                    LogUtil.Debug(String.Format("##SalvarLog.Salvar.BeforeInsert## TEMPO_DECORRIDO: {0} ms",
                                                sw.ElapsedMilliseconds));
                    if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLogSQL.Valor)
                    {
                        BD.Executar(
                            string.Format("INSERT INTO tLogHammerHead VALUES ('{0}','{1}','{2}','{3}','{4}', '{5}')",
                                          source, logName, mensagem, tipo, evento.ToString(),
                                          DateTime.Now.ToString("yyyyMMddHHmmss")));
                    }

                    LogUtil.Debug(String.Format("##SalvarLog.Salvar.AfterInsert## TEMPO_DECORRIDO: {0} ms",
                                                sw.ElapsedMilliseconds));
                }
            }
            catch (Exception ex)
            {
                SalvarLog.EscreveLog(mensagem + "\n " + Erro + "\nException: " + ex.Message);
            }
            finally
            {
                sw.Stop();
                LogUtil.Debug(String.Format("##SalvarLog.Salvar.FINISH## TEMPO_DECORRIDO_TOTAL: {0} ms", sw.ElapsedMilliseconds));
            }
        }
예제 #6
0
        private void CancelarSemFraude(object objVenda)
        {
            if (!(objVenda is EstruturaVenda))
            {
                return;
            }

            EstruturaVenda venda = (EstruturaVenda)objVenda;

            try
            {
                oVendaBilheteria.Score.Valor = venda.Score;
                oVendaBilheteria.AtualizarStatusAntiFraude(venda.ID, VendaBilheteria.StatusAntiFraude.Cancelado, venda.Score, venda.RetornoAccertify);
            }
            catch (Exception ex)
            {
                SalvarLog.SalvarErro("Erro ao cancelar a Venda: " + venda.ID, ex.Message, SalvarLog.Events.Transacoes);
            }
        }
예제 #7
0
        private void VendaJaCancelada(EstruturaVenda venda, bool fraude = false)
        {
            try
            {
                LogUtil.Info(string.Format("##HammerHead.VendaJaCancelada## VENDA: {0}", venda.ID));

                var statusAntiFraude = fraude ? VendaBilheteria.StatusAntiFraude.Fraude : VendaBilheteria.StatusAntiFraude.Aprovado;

                oVendaBilheteria.Score.Valor = venda.Score;
                oVendaBilheteria.AtualizarStatusAntiFraude(venda.ID, statusAntiFraude, venda.Score, venda.RetornoAccertify);

                LogUtil.Info(string.Format("##HammerHead.VendaJaCancelada.SUCCESS## VENDA: {0}", venda.ID));
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("##HammerHead.VendaJaCancelada.EXCEPTION## VENDA: {0}, MSG: {1}", venda.ID, ex.Message), ex);
                SalvarLog.SalvarErro("Erro ao atualizar venda já cancelada: " + venda.ID, ex.Message, SalvarLog.Events.Transacoes);
            }
        }
예제 #8
0
        public List <EstruturaVenda> CarregarVendas(Enumeradores.Site site, string modo = "todos")
        {
            var listVendas = new List <EstruturaVenda>();

            try
            {
                listVendas = oVendaBilheteria.CarregarVendasParaPagamento(site, modo);

                LogUtil.Info(string.Format("##HammerHead.CarregandoVenda.SUCCESS## VENDAS_ENCONTRADAS: {0}", listVendas.Count));
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("##HammerHead.CarregandoVenda.EXCEPTION## MSG: {0}", ex.Message), ex);

                SalvarLog.SalvarErro("Não foi possível carregar a fila.", ex.Message, SalvarLog.Events.Fila);
            }
            finally
            {
                SalvarLog.Salvar("Foram encontrados : " + listVendas.Count + " registros para processar", Enumeradores.TipoEntrada.Informacao, SalvarLog.Events.Fila);
            }
            return(listVendas);
        }
예제 #9
0
        private void AtualizarVenda(EstruturaVenda venda)
        {
            BD bd = new BD();

            try
            {
                bd.IniciarTransacao();

                this.AtualizarVendaBilheteria(bd, venda);
                this.AtualizarFormaPagamento(bd, venda);

                bd.FinalizarTransacao();
            }
            catch (Exception ex)
            {
                bd.DesfazerTransacao();
                SalvarLog.SalvarErro("Falha ao atualizar a venda", ex.Message, SalvarLog.Events.Transacoes);
            }
            finally
            {
                bd.Fechar();
            }
        }
예제 #10
0
        private void Fraude(object objVenda)
        {
            if (!(objVenda is EstruturaVenda))
            {
                return;
            }

            var venda = (EstruturaVenda)objVenda;

            try
            {
                oVendaBilheteria.Score.Valor = venda.Score;
                oVendaBilheteria.AtualizarStatusAntiFraude(venda.ID, VendaBilheteria.StatusAntiFraude.Fraude, venda.Score, venda.RetornoAccertify);

                var detalheVendas = oVendaBilheteria.AcompanhamentoIngressos(venda.ID);

                LogUtil.Debug(string.Format("##HammerHead.Fraude.EnviarEmail## VENDA: {0}, MSG: {1}", venda.ID, "EnviarCancelamentoFraude"));
                email.EnviarCancelamentoFraude(venda.Cliente.ID, detalheVendas, ConfiguracaoHammerHead.Instancia.Configuracao.AmbienteDeTestes.Valor);
            }
            catch (Exception ex)
            {
                SalvarLog.SalvarErro("Erro ao cancelar a Venda: " + venda.ID, ex.Message, SalvarLog.Events.Transacoes);
            }
        }
예제 #11
0
        public void ProcessarVenda(EstruturaVenda venda, string action = "")
        {
            var sw = new Stopwatch();

            sw.Start();

            if (venda.VendaCancelada)
            {
                this.oProcessamento.RetornoAccertify = Enumeradores.RetornoAccertify.VendaJaCancelada;
            }

            var retorno = oProcessamento.ProcessarVenda(venda);

            LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));

            switch (retorno)
            {
            case Enumeradores.RetornoProcessamento.Processado:
                this.Aprovar(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.Aprovar.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.CancelarAccertify:
                this.Fraude(venda);
                //cancelar ingressos
                oVendaBilheteria.CancelarVenda(venda, true);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.CancelarVenda.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.AguardarAccertify:
            case Enumeradores.RetornoProcessamento.Timeout:
                this.Analisar(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.Analisar.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.SolicitarDocumentos:
                this.SolicitarDocumentos(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.SolicitarDocumentos.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.CancelarSemFraude:
                this.CancelarSemFraude(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.CancelarSemFraude.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.CartaoInvalido:
                LogUtil.Error(string.Format("##HammerHead.ProcessandoVenda.ERROR## VENDA: {0}, RETORNO_ACCERTIFY: {1}", venda.ID, retorno));
                break;

            case Enumeradores.RetornoProcessamento.Chargeback:
                this.Chageback(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.Chageback.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;

            case Enumeradores.RetornoProcessamento.VendaJaCancelada:
                var fraude = (action == "REJECT");
                this.VendaJaCancelada(venda, fraude);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.VendaJaCancelada.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                oVendaBilheteria.CancelarVenda(venda, fraude);
                break;

            case Enumeradores.RetornoProcessamento.Bypass:
            default:
                this.AtualizarScore(venda);
                LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.AtualizarScore.Finish## VENDA: {0}, RETORNO_ACCERTIFY: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, retorno, sw.ElapsedMilliseconds));
                break;
            }

            var saveLog = ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor;

            LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.BeforeLog## VENDA: {0}, SALVAR_LOG: {1}, TEMPO_DECORRIDO: {2} ms", venda.ID, saveLog, sw.ElapsedMilliseconds));

            if (saveLog)
            {
                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);
            }

            sw.Stop();
            LogUtil.Debug(string.Format("##HammerHead.ProcessandoVenda.FINISH## VENDA: {0}, TEMPO_DECORRIDO_TOTAL: {1} ms", venda.ID, sw.ElapsedMilliseconds));
        }
예제 #12
0
        private Enumeradores.RetornoProcessamento Processar()
        {
            try
            {
                LogUtil.Debug(string.Format("##ProcessamentoTEF.ProcessandoPagamentoEAnalise## CLIENTE: {0}", this.oPagamento.ClienteID));

                if (ConfiguracaoHammerHead.Instancia.Configuracao.AmbienteDeTestes.Valor)
                {
                    SalvarLog.Salvar("Ambiente de testes ativo!", Enumeradores.TipoEntrada.Informacao, SalvarLog.Events.AmbienteTesteAtivo);

                    var rnd = new Random();
                    Thread.Sleep(rnd.Next(2000));
                    var processamento = rnd.Next() % 2 == 0 ? Enumeradores.RetornoProcessamento.Processado : Enumeradores.RetornoProcessamento.CancelarAccertify;

                    LogUtil.Debug(string.Format("##ProcessamentoTEF.ProcessandoPagamentoEAnalise.AmbienteDeTestes## CLIENTE: {0}, RETORNO: {1}, GATEWAY: {2}", this.oPagamento.ClienteID, processamento, this.oPagamento.TipoPagamento));

                    if (this.oPagamento.TipoPagamento != EstruturaPagamento.enumTipoPagamento.Adyen)
                    {
                        return(processamento);
                    }

                    if (processamento == Enumeradores.RetornoProcessamento.Processado && this.oPagamento.FormaPagamentoOrigem == 0)
                    {
                        LogUtil.Debug(string.Format("##ProcessamentoTEF.ProcessandoPagamentoEAnalise.AmbienteDeTestes.PROCESSADO## CLIENTE: {0}, RETORNO: {1}, MSG: {2}", this.oPagamento.ClienteID, processamento, "Capturando pagamento na Adyen"));
                        oPagamento.oAdyen.CapturarPagamento();
                    }
                    else
                    {
                        LogUtil.Debug(string.Format("##ProcessamentoTEF.ProcessandoPagamentoEAnalise.AmbienteDeTestes.RECUSADO## CLIENTE: {0}, RETORNO: {1}, MSG: {2}", this.oPagamento.ClienteID, processamento, "Cancelando pagamento na Adyen"));
                        oPagamento.oAdyen.CancelarPagamento();
                    }

                    return(processamento);
                }
                else
                {
                    switch (this.oPagamento.TipoPagamento)
                    {
                    case EstruturaPagamento.enumTipoPagamento.TEF:
                        return(this.ProcessarTEF());

                    case EstruturaPagamento.enumTipoPagamento.Adyen:
                        return(this.ProcessarAdyen());

                    case EstruturaPagamento.enumTipoPagamento.Paypal:
                        RetornoAccertify = Enumeradores.RetornoAccertify.Bypass;
                        return(Enumeradores.RetornoProcessamento.Bypass);

                    default:
                        return(Enumeradores.RetornoProcessamento.Processado);
                    }
                }
            }
            catch (System.Net.WebException ex)
            {
                LogUtil.Error(string.Format("##ProcessamentoTEF.ProcessandoAdyen.EXCEPTION## CLIENTE: {0}, MSG: {1}", this.oPagamento.ClienteID, ex.Message), ex);
                throw;
            }
            catch (System.Web.Services.Protocols.SoapHeaderException ex)
            {
                LogUtil.Error(string.Format("##ProcessamentoTEF.ProcessandoAdyen.EXCEPTION## CLIENTE: {0}, MSG: {1}", this.oPagamento.ClienteID, ex.Message), ex);
                throw;
            }
            catch (System.Net.Sockets.SocketException ex)
            {
                LogUtil.Error(string.Format("##ProcessamentoTEF.ProcessandoAdyen.EXCEPTION## CLIENTE: {0}, MSG: {1}", this.oPagamento.ClienteID, ex.Message), ex);
                throw;
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("##ProcessamentoTEF.ProcessandoPagamentoEAnalise.EXCEPTION## CLIENTE: {0}, MSG: {1}", this.oPagamento.ClienteID, ex.Message), ex);

                if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                {
                    SalvarLog.SalvarErro("Transação Inválida.", "Venda: " + Venda.ID + "\nException: " + ex.Message, SalvarLog.Events.Transacoes);
                }

                return(Enumeradores.RetornoProcessamento.CartaoInvalido);
            }
        }
예제 #13
0
        private void ConsultarAccertify()
        {
            LogUtil.Debug(string.Format("##ProcessamentoTEF.ConsultandoAccertify## CLIENTE: {0}, RETURN_SINGLE: {1}, PAGAMENTO_ORIGEM: {2}", this.oPagamento.ClienteID, this.Single, this.oPagamento.FormaPagamentoOrigem));

            if (Single || this.oPagamento.FormaPagamentoOrigem > 0 || this.Venda.VendaCancelada) //Já foi preenchido!
            {
                if (this.oPagamento.FormaPagamentoOrigem > 0)
                {
                    RetornoAccertify = Enumeradores.RetornoAccertify.Bypass;
                }
                return;
            }

            if (!ConfiguracaoAccertify.Instancia.Chaves.Ativo.Valor)
            {
                LogUtil.Debug(string.Format("##ProcessamentoTEF.ConsultarAccertify.AccertifyDesativado## CLIENTE: {0}, MSG: {1}", this.oPagamento.ClienteID, "Aceitar automático"));

                RetornoAccertify = Enumeradores.RetornoAccertify.Aceitar;
                if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                {
                    SalvarLog.Salvar("Accertify inativa!. Aceitar automático!", Enumeradores.TipoEntrada.Informacao, SalvarLog.Events.Accertify);
                }

                return;
            }

            if (Venda.DataVenda.Date >= DateTime.Now.AddDays(ConfiguracaoAdyen.Instancia.Chaves.DiasProcessamento.Valor))
            {
                if (Venda.Score == 0)
                {
                    RetornoAccertify = Enumeradores.RetornoAccertify.CancelarVendaInvalida; //Aconteceu erro ao processar a venda na accertify (provavel nem ter sido enviado), se passar muito tempo, cancela por venda inválida
                }
                else if (Venda.Score <= ConfiguracaoAccertify.Instancia.Chaves.ScoreAceitarTempoExcedido.Valor)
                {
                    RetornoAccertify = Enumeradores.RetornoAccertify.Aceitar;
                }
                else
                {
                    RetornoAccertify = Enumeradores.RetornoAccertify.CancelarTempoLimiteExcedido;
                }

                LogUtil.Debug(string.Format("##ProcessamentoTEF.ConsultandoAccertify.ValidacaoData## CLIENTE: {0}, DATA_VENDA: {1} >= DATA_DIAS_PROC: {2}, RETORNO_ACCERTIFY: {3}", this.oPagamento.ClienteID, Venda.DataVenda.Date, DateTime.Now.AddDays(ConfiguracaoAdyen.Instancia.Chaves.DiasProcessamento.Valor), RetornoAccertify));

                return;
            }

            var sw = new Stopwatch();

            sw.Start();

            var xmlRetorno = new XmlDocument();

            try
            {
                LogUtil.Debug(string.Format("##ProcessamentoTEF.ConsultarAccertify.GerandoXMLVenda## CLIENTE: {0}", this.oPagamento.ClienteID));
                var xml = Accertify.GerarXMLVenda(Venda);

                LogUtil.Debug(string.Format("##ProcessamentoTEF.ConsultarAccertify.ChamandoWSAccertify## CLIENTE: {0}", this.oPagamento.ClienteID));

                var stringXml = Utilitario.HTTPPostXML(ConfiguracaoAccertify.Instancia.Chaves.URL.Valor, xml.InnerXml, ConfiguracaoAccertify.Instancia.Chaves.Usuario.Valor, ConfiguracaoAccertify.Instancia.Chaves.Senha.Valor);

                xmlRetorno.LoadXml(stringXml);
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("##ProcessamentoTEF.ConsultarAccertify.EXCEPTION## CLIENTE: {0}, MSG: {1}", this.oPagamento.ClienteID, ex.Message));
                throw ex;
            }

            var score          = Convert.ToInt32(xmlRetorno.GetElementsByTagName("total-score")[0].InnerText);
            var recommendation = xmlRetorno.GetElementsByTagName("recommendation-code")[0].InnerText;

            Venda.Score = score;

            Venda.RetornoAccertify = Accertify.ParseRetorno(recommendation);// RetornoAccertify;
            RetornoAccertify       = Venda.RetornoAccertify;

            LogUtil.Debug(string.Format("##ProcessamentoTEF.ConsultarAccertify.SUCCESS## CLIENTE: {0}, SCORE: {1}, RECOMMENDATION: {2}, TEMPO_DECORRIDO_ACCERTIFY: {3} ms", this.oPagamento.ClienteID, score, recommendation, sw.ElapsedMilliseconds));
        }
예제 #14
0
        private Enumeradores.RetornoProcessamento ProcessarTEF()
        {
            try
            {
                LogUtil.Debug(string.Format("##ProcessamentoTEF.ProcessandoTEF## CLIENTE: {0}", this.oPagamento.ClienteID));

                this.ConsultarAccertify();

                switch (RetornoAccertify)
                {
                case Enumeradores.RetornoAccertify.Bypass:
                case Enumeradores.RetornoAccertify.Aceitar:
                    return(Enumeradores.RetornoProcessamento.Processado);

                case Enumeradores.RetornoAccertify.AguardarReview:
                    return(Enumeradores.RetornoProcessamento.AguardarAccertify);

                case Enumeradores.RetornoAccertify.CancelarAltoRisco:
                case Enumeradores.RetornoAccertify.CancelarTempoLimiteExcedido:
                case Enumeradores.RetornoAccertify.CancelarVendaInvalida:
                    return(Enumeradores.RetornoProcessamento.CancelarAccertify);

                case Enumeradores.RetornoAccertify.AcompanhamentoComCliente:
                    return(Enumeradores.RetornoProcessamento.SolicitarDocumentos);

                case Enumeradores.RetornoAccertify.CancelarSemFraude:
                    return(Enumeradores.RetornoProcessamento.CancelarSemFraude);

                case Enumeradores.RetornoAccertify.Chargeback:
                    return(Enumeradores.RetornoProcessamento.Chargeback);

                case Enumeradores.RetornoAccertify.VendaJaCancelada:
                    return(Enumeradores.RetornoProcessamento.VendaJaCancelada);

                default:
                    return(Enumeradores.RetornoProcessamento.Processado);
                }
            }
            catch (Exception ex)
            {
                LogUtil.Error(string.Format("##ProcessamentoTEF.ProcessandoTEF.EXCEPTION## CLIENTE: {0}, MSG: {1}", this.oPagamento.ClienteID, ex.Message), ex);

                if (ex is VendaCanceladaException)
                {
                    if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                    {
                        SalvarLog.Salvar(ex.Message, Enumeradores.TipoEntrada.Alerta, SalvarLog.Events.Listener);
                    }

                    return(Enumeradores.RetornoProcessamento.VendaCancelada);
                }

                if (ex is TimeoutException)
                {
                    if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                    {
                        SalvarLog.SalvarErro("Ocorreu um timeout na execução do HammerHead",
                                             oPagamento.oSitef.RetornoTEF, SalvarLog.Events.Transacoes);
                    }

                    return(Enumeradores.RetornoProcessamento.Timeout);
                }

                if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                {
                    SalvarLog.SalvarErro("Transação Inválida.", oPagamento.oSitef.RetornoTEF + "\nException: " + ex.Message, SalvarLog.Events.Transacoes);
                }

                return(Enumeradores.RetornoProcessamento.CartaoInvalido);
            }
        }
예제 #15
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);
            }
        }