Пример #1
0
        private void ConsultarAccertify()
        {
            if (Single) //Já foi preenchido!
            {
                return;
            }

            if (!ConfiguracaoAccertify.Instancia.Chaves.Ativo.Valor)
            {
                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(IRLib.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;
                }

                return;
            }

            XmlDocument xml        = null;
            XmlDocument xmlRetorno = new XmlDocument();

            try
            {
                xml = Accertify.GerarXMLVenda(Venda);

                xmlRetorno.LoadXml(Utilitario.HTTPPostXML(ConfiguracaoAccertify.Instancia.Chaves.URL.Valor, xml.InnerXml, ConfiguracaoAccertify.Instancia.Chaves.Usuario.Valor, ConfiguracaoAccertify.Instancia.Chaves.Senha.Valor));
            }
            catch (Exception ex)
            {
                throw ex;
            }

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

            Venda.Score = score;

            var retorno = (IRLib.Paralela.RetornoAccertify.Recommendation)Enum.Parse(typeof(IRLib.Paralela.RetornoAccertify.Recommendation), recomendation);

            Venda.RetornoAccertify = Accertify.ParseRetorno(recomendation);// RetornoAccertify;
            RetornoAccertify       = Venda.RetornoAccertify;
        }
Пример #2
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));
        }