Exemple #1
0
        private void AtualizarVendaBilheteria(BD bd, EstruturaVenda venda)
        {
            try
            {
                string nota = string.Empty;
                if (oProcessamento.oPagamento.TipoPagamento == ClientObjects.EstruturaPagamento.enumTipoPagamento.Adyen)
                {
                    nota = IRLib.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;
            }
        }
Exemple #2
0
        public bool PodeProcessar()
        {
            try
            {
                if (Single)
                {
                    return(true);
                }

                if (TimeOut && DateTime.Now.Subtract(UltimaRequisicao).Seconds < IntervaloRequisicoesTimeout)
                {
                    return(false);
                }

                if (UtilizacaoCanal >= LimiteUtilizacao && UltimaRequisicao != DateTime.MinValue && DateTime.Now.Subtract(UltimaRequisicao).Seconds < IntervaloRequisicoes)
                {
                    return(false);
                }

                UltimaRequisicao = DateTime.Now;

                return(true);
            }
            catch (Exception ex)
            {
                SalvarLog.SalvarErro("Não foi possível determinar a utilização do link.", ex.Message, SalvarLog.Events.UtilizacaoLink);
                return(false);
            }
        }
Exemple #3
0
        private Enumeradores.RetornoProcessamento ProcessarTEF()
        {
            try
            {
                this.ConsultarAccertify();

                switch (RetornoAccertify)
                {
                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);

                default:
                    return(Enumeradores.RetornoProcessamento.Processado);
                }
            }
            catch (VendaCanceladaException ex)
            {
                if (ConfiguracaoHammerHead.Instancia.Configuracao.SalvarLog.Valor)
                {
                    SalvarLog.Salvar(ex.Message, Enumeradores.TipoEntrada.Alerta, SalvarLog.Events.Listener);
                }

                return(Enumeradores.RetornoProcessamento.VendaCancelada);
            }
            catch (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);
            }
            catch (Exception ex)
            {
                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);
            }
        }
Exemple #4
0
        private Enumeradores.RetornoProcessamento Processar()
        {
            DateTime inicio = DateTime.Now;

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

                    Random rnd = new Random();
                    Thread.Sleep(rnd.Next(2000));
                    if (rnd.Next() % 2 == 0)
                    {
                        return(Enumeradores.RetornoProcessamento.Processado);
                    }
                    else
                    {
                        return(Enumeradores.RetornoProcessamento.CartaoInvalido);
                    }
                }
                else
                {
                    switch (this.oPagamento.TipoPagamento)
                    {
                    case EstruturaPagamento.enumTipoPagamento.TEF:
                        return(this.ProcessarTEF());

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

                    default:
                        return(Enumeradores.RetornoProcessamento.Processado);
                    }
                }
            }

            catch (Exception 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);
            }
            finally
            {
                DateTime fim = DateTime.Now;
                this.AtribuirProcessamento(fim.Subtract(inicio).TotalMilliseconds);
            }
        }
Exemple #5
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);
            }
        }
Exemple #6
0
        private Enumeradores.RetornoProcessamento ProcessarAdyen()
        {
            try
            {
                if (string.Compare(Venda.FormaPagamento.NotaFiscal, IRLib.AdyenStatic.Fields.NotaFiscal) != 0)
                {
                    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();

                oPagamento.oAdyen.CapturarPagamento();
                return(Enumeradores.RetornoProcessamento.Processado);
            }
            catch (Exception 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);
                }

                if (string.Compare(Venda.FormaPagamento.NotaFiscal, IRLib.AdyenStatic.Fields.NotaFiscal) == 0)
                {
                    oPagamento.oAdyen.CancelarPagamento();
                }

                return(Enumeradores.RetornoProcessamento.CartaoInvalido);
            }
        }
Exemple #7
0
        private bool CarregarFila()
        {
            try
            {
                if (Vendas.Count > 0)
                {
                    SalvarLog.Salvar("A fila não está vazia!!!!", Enumeradores.TipoEntrada.Informacao, SalvarLog.Events.HammerHead);
                    return(false);
                }

                Vendas = oVendaBilheteria.CarregarVendasParaPagamento();
                return(true);
            }
            catch (Exception ex)
            {
                SalvarLog.SalvarErro("Não foi possível carregar a fila.", ex.Message, SalvarLog.Events.Fila);
                return(false);
            }
            finally
            {
                SalvarLog.Salvar("Foram encontrados : " + Vendas.Count + " registros para processar", Enumeradores.TipoEntrada.Informacao, SalvarLog.Events.Fila);
            }
        }
Exemple #8
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();
            }
        }
Exemple #9
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;
            }
        }