Ir para conteúdo
  • Cadastre-se

nfse 3169901


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 254 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

@Italo Giurizzato Junior

Bom dia, Rapaz, é possivel a gente colocar um if ali no trecho, antes de entrar, se teve um retorno com sucesso, antes de entrar na funcao de fazer parse no json?

olha o erro

image.thumb.png.d033a3eeca62af950d5571e33ba3c699.png

 

Depois no parse, ocorre isso, pois é um json inválido.

---------------------------
GExperts Debugger Exception Notification
---------------------------
Project SisFaturamento.exe raised exception class EJsonParserException with message 'Expected "{" but found invalid symbol (1, 2)'.
---------------------------
[&Filter ...] [Ignore &All this Session] [&Break] [Additional &Info] [&Continue]
---------------------------
ThreadId=22720
ProcessId=7
ThreadName=""
ExceptionMessage="Expected "{" but found invalid symbol (1, 2)"
ExceptionName="EJsonParserException"
ExceptionDisplayName="EJsonParserException"
ExceptionAddress=7726B6E2
FileName=<not available>
LineNumber=<not available>
ExceptionObject=123360E0
Classes=[EJsonParserException,EJsonException,Exception,TObject]

---------------------------

image.thumb.png.4adb9204ac7005beeef2891008cf0023.png

Essa falha se dá por falha de certificado, porém, antes nao acusou o certificado.

 

Postado
6 horas atrás, Italo Giurizzato Junior disse:

Bom dia @Antonio Gomes,

O SERPRO estão fazendo algumas mudanças.

Esse erro ocorre quando você tenta obter o PDF da nota ou o XML?

Não, esse erro acontece se o operador tiver com certificado vencido. Achei feio o erro... so isso. Se teria como tratar antes.

  • Consultores
Postado

Mas não tem validação em seu software para o certificado usado e alertas de vencimento?

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado
10 horas atrás, Juliomar Marchetti disse:

Mas não tem validação em seu software para o certificado usado e alertas de vencimento?

tem, mas nao tenho acesso a interceptar esse erro, lembra, o componente é totalmente acoplado, ate sem o a3 dá esse erro, testa ai.

  • Consultores
Postado

Boa tarde @Antonio Gomes,

Fiz uma alteração no componente que acredito que vai resolver essa questão de certificado vencido.

Vou testar estando tudo OK, vou mandar para o SVN.

Já foi criado a tarefa  ACBR-8148 para os testes.

  • Curtir 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Consultores
  • Solution
Postado

Boa tarde @Antonio Gomes,

Na unit ACBrNFSeXWebserviceBase temos a function Executar, veja o seu conteúdo.

function TACBrNFSeXWebservice.Executar(const SoapAction, Message, SoapHeader: string;
  responseTag, namespace: array of string): string;
begin
  FPEnvio := DefinirMsgEnvio(Message, SoapAction, SoapHeader, namespace);
  SalvarEnvio(FPEnvio, FPMsgOrig);

  UsarCertificado;

  EnviarDados(SoapAction);
  SalvarRetornoWebService(FPRetorno);

  FHtmlRetorno := RetornaHTMLNota(FPRetorno);

  Result := ExtrairRetorno(FPRetorno, responseTag);
  SalvarRetornoDadosMsg(Result);
end;

Note que nela é executado a procedure UsarCertificado.

procedure TACBrNFSeXWebservice.UsarCertificado;
var
  TemCertificadoConfigurado: Boolean;
begin
  FPDFeOwner.SSL.UseCertificateHTTP := TACBrNFSeX(FPDFeOwner).Provider.ConfigGeral.UseCertificateHTTP;

  if FPDFeOwner.SSL.UseCertificateHTTP then
  begin
    TemCertificadoConfigurado := (FPConfiguracoes.Certificados.NumeroSerie <> '') or
                                 (FPConfiguracoes.Certificados.DadosPFX <> '') or
                                 (FPConfiguracoes.Certificados.ArquivoPFX <> '');

    if TemCertificadoConfigurado then
      if FPConfiguracoes.Certificados.VerificarValidade then
        if (FPDFeOwner.SSL.CertDataVenc < Now) then
          raise EACBrDFeException.Create('Data de Validade do Certificado já expirou: '+
                                            FormatDateBr(FPDFeOwner.SSL.CertDataVenc));
  end;
end;

Essa procedure verifica se na configuração Geral do provedor a propriedade UseCertificateHTTP esta com o valor True, caso afirmativo o componente vai checar a data de vencimento do certificado.

Se não esta gerando a mensagem acusado que o certificado esta vencido é porque na unit provider do provedor a propriedade mencionada acima esta com o valor false ou você deve estar usando o Try e este esta ocultado a mensagem.

Sugiro fazer um teste usando o programa exemplo do componente.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado
1 hora atrás, Italo Giurizzato Junior disse:

Boa tarde @Antonio Gomes,

Na unit ACBrNFSeXWebserviceBase temos a function Executar, veja o seu conteúdo.

function TACBrNFSeXWebservice.Executar(const SoapAction, Message, SoapHeader: string;
  responseTag, namespace: array of string): string;
begin
  FPEnvio := DefinirMsgEnvio(Message, SoapAction, SoapHeader, namespace);
  SalvarEnvio(FPEnvio, FPMsgOrig);

  UsarCertificado;

  EnviarDados(SoapAction);
  SalvarRetornoWebService(FPRetorno);

  FHtmlRetorno := RetornaHTMLNota(FPRetorno);

  Result := ExtrairRetorno(FPRetorno, responseTag);
  SalvarRetornoDadosMsg(Result);
end;

Note que nela é executado a procedure UsarCertificado.

procedure TACBrNFSeXWebservice.UsarCertificado;
var
  TemCertificadoConfigurado: Boolean;
begin
  FPDFeOwner.SSL.UseCertificateHTTP := TACBrNFSeX(FPDFeOwner).Provider.ConfigGeral.UseCertificateHTTP;

  if FPDFeOwner.SSL.UseCertificateHTTP then
  begin
    TemCertificadoConfigurado := (FPConfiguracoes.Certificados.NumeroSerie <> '') or
                                 (FPConfiguracoes.Certificados.DadosPFX <> '') or
                                 (FPConfiguracoes.Certificados.ArquivoPFX <> '');

    if TemCertificadoConfigurado then
      if FPConfiguracoes.Certificados.VerificarValidade then
        if (FPDFeOwner.SSL.CertDataVenc < Now) then
          raise EACBrDFeException.Create('Data de Validade do Certificado já expirou: '+
                                            FormatDateBr(FPDFeOwner.SSL.CertDataVenc));
  end;
end;

Essa procedure verifica se na configuração Geral do provedor a propriedade UseCertificateHTTP esta com o valor True, caso afirmativo o componente vai checar a data de vencimento do certificado.

Se não esta gerando a mensagem acusado que o certificado esta vencido é porque na unit provider do provedor a propriedade mencionada acima esta com o valor false ou você deve estar usando o Try e este esta ocultado a mensagem.

Sugiro fazer um teste usando o programa exemplo do componente.

Vou testar cara, mas o json não havendo conjunto de colchetes igual ele espera, mas sim um retorno html da pagina não processada, penso que nem parse era para acontecer, mas retornar como outro tipo de erro, mas suave, aconteceu uma vez so no cliente.

  • Este tópico foi criado há 254 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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 conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...