Exemplo n.º 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;
            }
        }
Exemplo n.º 2
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;
            }
        }
Exemplo n.º 3
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);
            }
        }
Exemplo n.º 4
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);
            }
        }
Exemplo n.º 5
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);
            }
        }
Exemplo n.º 6
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);
        }
Exemplo n.º 7
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();
            }
        }
Exemplo n.º 8
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);
            }
        }
Exemplo n.º 9
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);
            }
        }
Exemplo n.º 10
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);
            }
        }
Exemplo n.º 11
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);
            }
        }