-
Total de ítens
13 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por tiagok
-
-
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
-
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).
-
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.
- 1
-
Os fontes estão atualizados até o Revision 20231 do SVN.
-
12 horas atrás, Juliomar Marchetti disse:
Estranho fiz exatamente isso e ele gerou problema já no começo, pois o mesmo não está nem criando o componente e conforme citado não atribuiu os eventos pois depois que fiz a criação começou os problemas, pois nenhum evento necessário estava programado.
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;- 1
-
9 minutos atrás, Daniel Simoes disse:
Isso me leva a crer, que você tem mudança nos fontes do ACBr, do seu lado.. ou ainda copiou alguma das Units do ACBr, para as pastas do seu projeto...
Só consigo investigar um possível problema, se eu consigo reproduzi-lo...
Outro fato que você pode observar... é que essas modificações já estão há algum tempo no SVN.. e não há relatos de problemas semelhantes ao seu, aqui no fórum...
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
-
5 minutos atrás, Daniel Simoes disse:
Prezado... não vou mais interagir no tópico... até você responder conforme o solicitado...
Pelo TEFDemoNF não consegui reproduzir..
-
O problema está aqui:
Método >>> destructor TACBrTEFD.Destroy;
>>> fTEFList.Free; // Destroi Lista de Classes TEF e Objetos internosEle 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.
-
@Daniel Simoes O problema ocorre em:
TACBrTEFD.Free
Na revision 20137 ele foi modificado >>>>> Modified : /trunk2/Fontes/ACBrTEFD/ACBrTEFD.pas
-
@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 -
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.
-
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.
O ACBr já esta preparado p receber pagamento via QrCode ?
em Dúvidas sobre TEF
Postado
@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.