-
Total de ítens
10 -
Registro em
-
Última visita
Últimos Visitantes
O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.
Felipe Sachetti's Achievements
-
Erro "Tempo de espera inválido" ao obter dados pinpad
Felipe Sachetti replied to Felipe Sachetti's tópico in Dúvidas sobre TEF
Acredito ser uma otima opçao essa ideia, ja trata o padrao que é 30000. daria pra testar os entre 100 e 999 dividir por 100 pra garantir que alguma funcao ja nao esteja chamando com algum ajuste relacionado a divisao por 100 que existia exemplo, estarem passando 900 pra dividir por 100 e dar 9 segundos abaixo disso seria em segundos e 100 segundo aceita de boa a funcao if(TimeOut > 1000)then TimeOut := trunc(TimeOut/1000) else if(TimeOut > 100)then TimeOut := trunc(TimeOut/100); -
Erro "Tempo de espera inválido" ao obter dados pinpad
um tópico no fórum postou Felipe Sachetti Dúvidas sobre TEF
cliente relatou que ao chamar ObterDadoPinPad(), obtinha o retorno TEMPO DE ESPERA INVALIDO apos alguns testes e contato com suporte sitef, identificamos que o parametro 2970 na chama abaixo tem que ser informado em segundos. o padrao da funcao esta em 30000 e esta sendo dividido por 100 dando 300 segundos e retornando o erro.. nao consegui identificar alteracoes no arquivo, entao, pode ser que tenham mudado algo internamente na sitef.. com valores mais baixos esta funcionando... acredito que uma melhoria seria diminuir o padrao 30000 ou aumentar o fator 100 para 1000 por exemplo.. function TACBrTEFAPIClassCliSiTef.ObterDadoPinPad( TipoDado: TACBrTEFAPIDadoPinPad; TimeOut: integer; MinLen: SmallInt; MaxLen: SmallInt): String; Var DadoPortador: String; Ok: Boolean; begin DadoPortador := DadoPinPadToOperacao(TipoDado); if (DadoPortador = '') then begin fpACBrTEFAPI.DoException(Format(ACBrStr(sACBrTEFAPICapturaNaoSuportada), [GetEnumName(TypeInfo(TACBrTEFAPIDadoPinPad), integer(TipoDado) ), ClassName] )); end; if (MinLen = 0) and (MaxLen = 0) then CalcularTamanhosCampoDadoPinPad(TipoDado, MinLen, MaxLen); fRespostasPorTipo.ValueInfo[2967] := DadoPortador; fRespostasPorTipo.ValueInfo[2968] := IntToStr(MinLen); fRespostasPorTipo.ValueInfo[2969] := IntToStr(MaxLen); fRespostasPorTipo.ValueInfo[2970] := IntToStr(trunc(TimeOut/100)); Ok := ExecutarTransacaoSiTef(CSITEF_OP_DadosPinPadAberto, 0); if Ok then Result := fpACBrTEFAPI.UltimaRespostaTEF.LeInformacao(2971,0).AsString; end; -
aviso de transacao pendente sem servidor estar ativo
Felipe Sachetti replied to Felipe Sachetti's tópico in Dúvidas sobre TEF
entrei em contato com o sitef, pediram pra testar com SE000002 na identificacao do terminal.... parou de aparecer as pendencias.. porem fiquei com um pouco de receio com essas informacoes antigas, que nao apareciam como pendentes na versao anterior que utilizava do acbr e comecaram aparecer agora... elas era de 10/2023... e tbm a ideia de puxar os dados de pendencias mesmo com o servidor estando desativado, teria como saber de onde vem essas informacoes, pois, logs do acbr foram todos excluidos, e arquivos temp do clisitef tbm.. -
aviso de transacao pendente sem servidor estar ativo
um tópico no fórum postou Felipe Sachetti Dúvidas sobre TEF
realizei a atualizacao do componente e agora fica aparecendo 6 transacoes pendentes, uma atras da outra, mesmo o servidor local de demo do sitef estar fechado.. e mesmo executando a apos a mensagem o finalizartransacao... continua toda vez que tenta inicializar 7/03/25 17:05:21:526 - VerificarTransacoesPendentes 07/03/25 17:05:34:306 - ProcessarTransacaoPendente( Transa o Pendente. Rede: NSU: ) 07/03/25 17:05:34:306 - QuandoDetectarTransacaoPendente 07/03/25 17:05:34:319 - ResolverOperacaoPendente( tefstsSucessoManual ) 07/03/25 17:07:28:745 - *** FinalizaTransacaoSiTefInterativo. Confirma: SIM, Documento: P_759, Data: 20231016, Hora: 172210, ParametrosAdicionais: 07/03/25 17:08:23:327 - ProcessarTransacaoPendente( Transa o Pendente. Rede: NSU: ) uma parte do arquivo de log -
acabei q pra poder passar na homologacao fiz um "arranjo tecnico", como é testado somente o ultimo documento emitido, ao iniciar o processo de pagamento, salvo em registro o nr do documento e ao inicializar a aplicacao consulto se o ultimo documento esta pendente, por falta de tempo nao consegui dar sequencia no ajusto do componente, alterei algumas partes de funcoes e procedures, vou postar aqui as minhas anotacoes se ajudar, inicio do ano acredito estar mais disponivel e posso ajudar tbm nos ajustes e testes.. unit ACBrTEFAPICliSiTef; tirar de dentro e colocar fora do repeat TituloMenu := '' ; quando vinha titulo no comando 4 nao mostrava no comando 21, pois TituloMenu := '' ; eliminava o titulo ============================================================= nit ACBrTEFAPICliSiTef; funcao ContinuarRequisicaoSiTef; tratamento do comando 30, incluido ajuste para aceitar o VOLTAR no formulario perguntar campo 30: // Deve ser lido um campo cujo tamanho está entre TamMinimo e TamMaximo begin DefinicaoCampo.TipoCampo := TipoCampo; DefinicaoCampo.TituloPergunta := ACBrStr(Mensagem); DefinicaoCampo.TipoDeEntrada := tedTodos; DefinicaoCampo.TamanhoMaximo := TamanhoMaximo; DefinicaoCampo.TamanhoMinimo := TamanhoMinimo; DefinicaoCampo.MascaraDeCaptura := EmptyStr; Validado := True; TefAPI.QuandoPerguntarCampo(DefinicaoCampo, Resposta, Validado, Interromper); //ajuste para aceitar voltar nos formulario de solicitar informacao if((Interromper = False)and(Validado)and(Resposta = 'RetornarMenuAnterior'))then begin Resposta := ''; Voltar := True; end else RespCliSiTef.GravaInformacao(TipoCampo, Resposta); end; ============================================================================ na procedure quando perguntar campo passa valores quando for voltar procedure TTef.QuandoPerguntarCampo(DefinicaoCampo: TACBrTEFAPIDefinicaoCampo; var Resposta: string; var Validado, Cancelado: Boolean); //se nao for ok ou voltar trata como cancelado if((MR <> mrOK)and(MR <> mrRetry))then begin Cancelado := True; Validado := False; // Não fizemos as validações de "DefinicaoCampo.ValidacaoDado", vamos deixar o ACBrTEFAPI validar Resposta := FormObtemCampo.Resposta; end else begin if(MR = mrRetry)then begin Cancelado := False; Validado := True; Resposta := 'RetornarMenuAnterior'; end else begin Cancelado := False; Validado := False; Resposta := FormObtemCampo.Resposta; end; end; ============================================================================================= unit ACBrTEFAPICliSiTef; TACBrTEFAPIClassCliSiTef.FinalizarTransacao( // CliSiTEF não usa Rede, NSU e Finalizacao DocumentoVinculado := ''; Confirma := (AStatus in [tefstsSucessoAutomatico, tefstsSucessoManual]); i := fpACBrTEFAPI.RespostasTEF.AcharTransacao(Rede, NSU, CodigoFinalizacao); if (i >= 0) then DocumentoVinculado := fpACBrTEFAPI.RespostasTEF[i].DocumentoVinculado; //caso nao localize e tenha vindo rede sem nsu é pq foi chamado avulso com o DOCUMENTOVINCULADO no Rede if((Rede <> '')and(DocumentoVinculado = '')and(NSU = ''))then DocumentoVinculado := Rede; FinalizarTransacaoSiTef(Confirma, DocumentoVinculado); ========================================================= desculpa a forma como compartilhei sem formatacao, é que mantenho as alteracoes por escrito caso atualize o componente e tenha q ajustar os detalhes manualmente qqr coisa estou a disposicao para ajudar e testes em relacao a tratar o ultimo documento pendente, ao abrir a aplicacao faco essa validacao var ultimo := BackupDocumentoSitef_Ler; //leio registro com ultimo documento q foi inicializado o pagamento var estapendente := (TACBrTEFAPIClassCliSiTef(ObjetoTef.Acbr.TEF).TEFCliSiTefAPI.ObtemQuantidadeTransacoesPendentes(Now, AnsiString(ultimo)) > 0); if(estapendente)then begin TACBrTEFAPIClassCliSiTef(ObjetoTef.Acbr.TEF).FinalizarTransacao(ultimo, '', '', tefstsSucessoManual);
-
ao realizar a homologação com Sitef, esbarramos num teste. rotina do teste - realizar venda - credito - inserir cartao - digitar senha - quando aprovar e receber mensagem de retirar cartao (matar o processo simulando desligamento) ao iniciar novamente o componente nao valida as operacoes pendentes.. chegamos no detalhe q o arquivo que é analisado para validar as pendencias "Acbr_xxx" é salvo na chamada apos executar o FinalizarChamadaAPI porem esse somente é chamado no finally da fpTEFAPIClass.EfetuarPagamento( e essa so é concluida apos remover o cartao. percebemos tambem que existe uma funcao da sitef q retorna a quantidade de pendentes porem ainda nao implementada nao conseguimos contornar esse "detalhe", alguem ja passou por isso? conseguiu homologar? passou nesse teste? alguem com a implementacao de rotina de retornar e tratar pendentes da sitef??
-
mostrar TituloMenu (comando 4) sitef
Felipe Sachetti replied to Felipe Sachetti's tópico in Dúvidas sobre TEF
estamos fazendo mais alguns ajustes realcionados ao sitef, assim que terminarmos colocamos aqui a colaboracao -
mostrar TituloMenu (comando 4) sitef
Felipe Sachetti replied to Felipe Sachetti's tópico in Dúvidas sobre TEF
ACBrTEFAPICliSiTef.pas -
unit ACBrTEFAPICliSiTef; ideia de ajuste: tirar o TituloMenu := '': de dentro do repeat pois quando vinha titulo no comando 4 nao mostrava no comando 21, pois TituloMenu := '' ; eliminava a informacao da variavel
-
estou com o mesmo problema, sem conseguir ler os codigos impressos... ja revirei o manual da impressora e nao consegui fazer com que imprimisse e lesse uma URL de NFCE... conseguiu resolver esse problema...?