Felipe Sachetti Postado 10 Abril Postado 10 Abril 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;
Moderadores Juliomar Marchetti Postado 10 Abril Moderadores Postado 10 Abril 41 minutos atrás, Felipe Sachetti disse: 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; no caso na sua chamada tu deve passar por exemplo valor 300 isso tem relatos no discord e no fórum e com a solução para sitef 1 Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br
Fundadores Daniel Simoes Postado 10 Abril Fundadores Postado 10 Abril @Felipe Sachetti, veja o que acha dessa sugestão de correção 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); if (TimeOut > 1000) then TimeOut := trunc(TimeOut/1000); // SiTef espera o tempo em Segundos.. convertendo de milisegundos fRespostasPorTipo.ValueInfo[2967] := DadoPortador; fRespostasPorTipo.ValueInfo[2968] := IntToStr(MinLen); fRespostasPorTipo.ValueInfo[2969] := IntToStr(MaxLen); fRespostasPorTipo.ValueInfo[2970] := IntToStr(TimeOut); Ok := ExecutarTransacaoSiTef(CSITEF_OP_DadosPinPadAberto, 0); if Ok then Result := fpACBrTEFAPI.UltimaRespostaTEF.LeInformacao(2971,0).AsString; end; o valor Default, é utilizado em todas as demais classes de TEF, então não podemos mudar ele... Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
Felipe Sachetti Postado 10 Abril Autor Postado 10 Abril 42 minutos atrás, Daniel Simoes disse: @Felipe Sachetti, veja o que acha dessa sugestão de correção 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); if (TimeOut > 1000) then TimeOut := trunc(TimeOut/1000); // SiTef espera o tempo em Segundos.. convertendo de milisegundos fRespostasPorTipo.ValueInfo[2967] := DadoPortador; fRespostasPorTipo.ValueInfo[2968] := IntToStr(MinLen); fRespostasPorTipo.ValueInfo[2969] := IntToStr(MaxLen); fRespostasPorTipo.ValueInfo[2970] := IntToStr(TimeOut); Ok := ExecutarTransacaoSiTef(CSITEF_OP_DadosPinPadAberto, 0); if Ok then Result := fpACBrTEFAPI.UltimaRespostaTEF.LeInformacao(2971,0).AsString; end; o valor Default, é utilizado em todas as demais classes de TEF, então não podemos mudar ele... 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); 1
Fundadores Solution Daniel Simoes Postado 10 Abril Fundadores Solution Postado 10 Abril Boa.. já no SVN... https://sourceforge.net/p/acbr/code/38509/ 1 Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976.
Recommended Posts
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora