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