Ir para conteúdo
  • Cadastre-se

tiagok

Membros
  • Total de ítens

    13
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

tiagok's Achievements

  1. @Juliomar Marchetti Olá, você poderia adicionar estes dois campos 106 e 107, no SVN ? Acima enviei o Documento da Software Express com a presença destes campos. Já está testado.
  2. @Daniel Simoes Os campos 106 e 107 estão no manual específico que trata o módulo CardSe (carteira Digital). Anexo manual, página 19. Obs: aproveitando, pegamos um problema, ao cancelar um pagamento via carteira digital, a transação de cancelamento está ficando pendente, estamos fazendo algumas modificações pra ver se resolve, caso resolva lhe envio em seguida. CliSiTef - Interface com a aplicação - Carteiras Digitais - 1.25.pdf
  3. Olá @Daniel Simoes Gostaria de enviar mais uma contribuição, implementei para obter os campos de identificação da carteira digital, que são muito importantes para fazer a identificação da carteira que foi utilizada para o pagamento. ACBrTEFComum.pas fpIdCarteiraDigital : String; // Código de identificação da carteira digital fpNomeCarteiraDigital : String; // Nome da carteira digital property IdCarteiraDigital: String read fpIdCarteiraDigital; property NomeCarteiraDigital: String read fpNomeCarteiraDigital; ACBrTEFCliSiTefComum.pas 106: fpIdCarteiraDigital := LinStr; 107: fpNomeCarteiraDigital := LinStr; Fontes anexos. Desta forma a aplicação pode obter a identificação da carteira, no meu caso obtenho conforme exemplo abaixo: FACBrTEFD.RespostasPendentes[Contador].IdCarteiraDigital FACBrTEFD.RespostasPendentes[Contador].NomeCarteiraDigital Já testei o processo todo e funciona perfeitamente, com essas alterações é possível operacionalizar toda a parte do módulo CardSE (carteiras digitais). ACBrTEFCliSiTefComum.pas ACBrTEFComum.pas
  4. Olá, Bom dia, Eu fiz uma implementação no CliSiTef para justamente poder operar o QRCode, com o parâmetro {DevolveStringQRCode=1} Segue a contribuição anexa. 50 : begin MensagemOperador := 'QRCODE=' + ProcessaMensagemTela( Mensagem ); DoExibeMsg( opmExibirMsgOperador, MensagemOperador, (TipoCampo=584) ) ; end; 51 : begin DoExibeMsg( opmRemoverMsgOperador, '' ) ; end; Desta forma, o ACBr transfere para a aplicação os dados para poder gerar e exibir em tela o QRCode e depois solicita a remoção quando não for mais necessário. Observar que coloquei um prefixo "QRCODE=" que deve ser removido pela aplicação, o conteúdo do QRCode vem após o sinal de igual. Anexo fonte alterado. @Daniel Simoes ACBrTEFDCliSiTef.pas
  5. Os fontes estão atualizados até o Revision 20231 do SVN.
  6. Aparentemente, o problema ocorre no meu caso, porque a minha implementação das chamadas ACBR, ficam dentro de uma DLL que é carregada e utilizada pelo sistema... Talvez por ser dentro da DLL tenha alguma limitação na questão do Timer ali que não se destroi... Fiz uma aplicação de teste, com a implementação diretamente em um formulário simples, e não ocorreu o problema.. acho que só consegue simular se for por uma DLL mesmo... Podem fechar este tópico, eu acabei resolvendo pra mim de outra forma.. mas se quiserem testar, eu joguei abaixo alguns trechos para montagem de um exemplo: Exemplo: >>>> Criar uma DLL e exportar o método com uma implementação como esta: uses ACBrTEFD, ACBrTEFDClass, ACBrTEFDCliSiTef; private FACBrTEFD: TACBrTEFD; FEstadoECF: String; FACBrTEFD := TACBrTEFD.Create(nil); FACBrTEFD.TEFCliSiTef.EnderecoIP := 'localhost'; FACBrTEFD.TEFCliSiTef.CodigoLoja := '00000000'; FACBrTEFD.TEFCliSiTef.NumeroTerminal := 'SE000001'; FACBrTEFD.TEFCliSiTef.PortaPinPad := 3; FACBrTEFD.TEFCliSiTef.NumVias := 2; FACBrTEFD.SuportaSaque := False; FACBrTEFD.SuportaDesconto := False; FACBrTEFD.OnExibeMsg := Sitef_ExibirMensagem; FACBrTEFD.OnAguardaResp := AguardaResposta; FACBrTEFD.OnInfoECF := InfoECF; FACBrTEFD.OnComandaECF := ComandaECF; FACBrTEFD.OnComandaECFAbreVinculado := ComandaECFAbreVinculado; FACBrTEFD.OnComandaECFImprimeVia := ComandaECFImprimeVia; FACBrTEFD.OnBloqueiaMouseTeclado := BloqueiaMouseTeclado; FACBrTEFD.TEFCliSiTef.OnExibeMenu := Sitef_ExibirMenu; FACBrTEFD.TEFCliSiTef.OnObtemCampo := Sitef_ObterCampo; FEstadoECF := 'V'; FACBrTEFD.Inicializar(gpCliSiTef); FACBrTEFD.DesInicializar(gpCliSiTef); // Aqui vai ocorrer o problema (aparentemente apenas se isso tudo estiver dentro de uma DLL) FACBrTEFD.Free; ------------ Métodos para testar assinatura: procedure Sitef_ExibirMensagem(Operacao: TACBrTEFDOperacaoMensagem; aMensagem: string; var AModalResult: TModalResult); begin // teste end; procedure Sitef_ExibirMenu(aTitulo: string; aOpcoes: TStringList; var aItemSelecionado: Integer; var aVoltarMenu: Boolean); begin // teste end; procedure Sitef_ObterCampo(aTitulo: string; aTamanhoMinimo, aTamanhoMaximo, aTipoCampo: Integer; aOperacao: TACBrTEFDCliSiTefOperacaoCampo; var aResposta: AnsiString; var aDigitado, aVoltarMenu: Boolean); begin // teste end; procedure ComandaECF(Operacao: TACBrTEFDOperacaoECF; Resp: TACBrTEFDResp; var RetornoECF: Integer); begin // teste end; procedure AguardaResposta(Arquivo: string; SegundosTimeOut: Integer; var Interromper: Boolean); begin // teste end; procedure ComandaECFAbreVinculado(COO, IndiceECF: string; Valor: Double; var RetornoECF: Integer); begin // teste end; procedure ComandaECFImprimeVia(TipoRelatorio: TACBrTEFDTipoRelatorio; Via: Integer; ImagemComprovante: TStringList; var RetornoECF: Integer); begin // teste end; procedure InfoECF(Operacao: TACBrTEFDInfoECF; var RetornoECF: string); begin // Simula o tempo de resposta da impressora Sleep(100); case Operacao of ineEstadoECF: begin RetornoECF := FEstadoECF; end; ineSubTotal: begin RetornoECF := '999999'; end; ineTotalAPagar: begin RetornoECF := '0'; end; end; end; procedure BloqueiaMouseTeclado(Bloqueia: Boolean; var Tratado: Boolean); begin // teste end;
  7. Olá Daniel, Não tenho modificações nos fontes ACBr, apenas baixei o trunk2, última versão e executei o ACBrInstall_Trunk2.exe para compilar e instalar, nada além disso. Como falei, o meu software ele instancia a classe: var FACBrTEFD: TACBrTEFD; begin FACBrTEFD.Inicializar(gpCliSiTef); FACBrTEFD.Free; end; se você fizer isso já vai conseguir simular... Se quiser pode fechar o tópico, como eu não uso o PayGoWeb, eu comentei o carregamento dele e pronto, pra mim resolveu.. só quis comentar a solução, pois acredito que possa contribuir com outras pessoas que venham a ter o mesmo problema. Abraço e obrigado pela atenção
  8. Pelo TEFDemoNF não consegui reproduzir..
  9. @Daniel Simoes O problema está aqui: Método >>> destructor TACBrTEFD.Destroy; >>> fTEFList.Free; // Destroi Lista de Classes TEF e Objetos internos Ele sai destruindo todos os objetos da lista, e quando chega no fTimerOcioso.Free, do pacote (ACBrTEFPayGoWebComum.pas) trava. destructor TACBrTEFPGWebAPI.Destroy; >>> fTimerOcioso.Free; Comentei a linha acima e recompilei o ACBR e resolveu.
  10. @Daniel Simoes O problema ocorre em: TACBrTEFD.Free Na revision 20137 ele foi modificado >>>>> Modified : /trunk2/Fontes/ACBrTEFD/ACBrTEFD.pas
  11. @Daniel Simoes O problema ocorreu no commit da revision 20137 (no revision 20136 funciona corretamente o .Free, e quando atualizo para a versão 20137 ocorre problema). Revision: 20137 Author: dopi Date: sábado, 20 de junho de 2020 10:53:48 Message: -- ACBrTEFD, ACBrTEFDClass -- [+] Adicionado novo modelo de TEF Dedicado, para suportar "TEF PayGo Web Libc" Modelo: gpPayGoWeb, Classe: TEFPayGoWeb: TACBrTEFDPayGoWeb; -- ACBrTEFDClass -- [-] Correção para preencher a Segunda Via, quando apenas a Via Completa é informada -- TACBrTEFDPayGoWeb -- [+] Nova classe, para suportar TEF Dedicado, "TEF PayGo Web Libc" - Necessita da Biblioteca 'PGWebLib.dll' (Windows) ou 'PGWebLib.so' (Linux) - Download da Biblioteca e Manuais em: https://www.paygo.com.br/links-e-manuais/ [*] Projeto "TEFDDemoNF", modificado para suportar e demonstrar o novo Modelo de TEF -- ACBrTEFPayGo -- [+] Mapeamento do campo "729" para "Resp.Confirmar" [-] Correção para que Resp.NFCeSAT.UltimosQuatroDigitos contenha apenas os 4 últimos digitos do BIN -- ACBrTEFComum -- [+] Classe "TACBrTEFResp". Adição de comentários nos fontes, para melhor descrição de algumas propriedades [+] Classe "TACBrTEFResp". Adição das propriedades: Confirmar: Boolean -> Se True, a Resposta requer uma Confirmação (CNF) QRCode: String -> Com Conteúdo do QRCode a ser exibido, quando usando carteiras Digitais (por: DSA) ---- Modified : /trunk2/Fontes/ACBrTEFD/ACBrTEFDClass.pas Modified : /trunk2/Fontes/ACBrTEFD/ACBrTEFDPayGo.pas Modified : /trunk2/Fontes/ACBrTEFD/ACBrTEFComum.pas Modified : /trunk2/Fontes/ACBrTEFD/ACBrTEFD.pas
  12. Oi Daniel, Eu fiz isso, já tinha baixado em uma nova pasta.. Retornei da Revision 20214 para a revision 20052 e o problema parou. Então limpei tudo e atualizei para revision 20137 e o problema no .Free já ocorre. Então limpei tudo e atualizei para revision 20052 novamente e não ocorre o problema no .Free Com certeza algum commit entre a revision 20052 e 20137 está ocasionando o problema. Sobre o método de inicialização, na review 20052 continua mais lento do que a versão de 2018.. parece que foi adicionado algo que pesou.. mas não chega a ser um grande problema, o problema maior mesmo é no .Free que trava e demora minutos. FACBrTEFD.Inicializar(gpCliSiTef); >>>>>>> Este método Demorava cerca de 5,8 a 6 segundos, passou a levar 11,8 a 12 segundos para executar.
  13. Olá Pessoal, Estava com meus fontes do ACBr sem atualizar desde 2018, então resolvi atualizar para pegar as últimas atualizações. Exclui todo o trunk e baixei novamente (Agora estou na Revision 20214), fiz a compilação e reinstalação de todos os componentes ACBR (Uso Delphi XE 10) Crio via Fonte, o componente "TACBrTEFD" conforme exemplo abaixo FACBrTEFD: TACBrTEFD; Fui executar meu roteiro de testes com esta build citada e a aplicação está demorando mais em alguns pontos e outros chega a trava, conforme abaixo: FACBrTEFD.Inicializar(gpCliSiTef); >>>>>>> Este método Demorava cerca de 5,8 a 6 segundos, passou a levar 11,8 a 12 segundos para executar. FACBrTEFD.Free; >>>>>>> Este método, levava alguns milisegundos, agora está demorando mais de 5 minutos ou até travando as vezes. Alguém já tinha percebido esse problema? Conhece alguma solução? Achei inviável utilizar tendo esses problemas, a princípio acho que vou retornar para a versão que estava anteriormente.
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.