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; } }
private void AtualizarFormaPagamento(BD bd, EstruturaVenda venda) { oVendaBilheteriaFormaPagamento.Ler(venda.FormaPagamento.VendaBilheteriaFormaPagamentoID); if (oProcessamento.oPagamento.TipoPagamento == ClientObjects.EstruturaPagamento.enumTipoPagamento.Adyen) { oVendaBilheteriaFormaPagamento.CodigoRespostaVenda.Valor = oProcessamento.oPagamento.oAdyen.CodigoReferencia; oVendaBilheteriaFormaPagamento.NumeroAutorizacao.Valor = oProcessamento.oPagamento.oAdyen.CodigoAutenticacao ?? oVendaBilheteriaFormaPagamento.NumeroAutorizacao.Valor; oVendaBilheteriaFormaPagamento.Cupom.Valor = IRLib.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); }
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; }
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); } }
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); } }
public void Executar() { if (!this.CarregarFila()) { return; } this.salvarlogevent = SalvarLog.Events.HammerHead; var transacoes = this.Vendas.Count; var inicio = DateTime.Now; this.EfetuarPagamentos(); var tempoExecucao = DateTime.Now - inicio; SalvarLog.Salvar("Fila de " + transacoes + " processada em " + tempoExecucao.TotalSeconds + ".", Enumeradores.TipoEntrada.Informacao); }
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); } }
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); } }
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; } }