Ir para conteúdo
  • Cadastre-se

Servicos utilizados sem a assinatura digital - consultarlote - Provedor SJP


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

Recommended Posts

Postado

Boa tarde, 

O Site da prefeitura de SJP(São José dos Pinhais), começou a mostrar uma mensagem em seu site:

ASSINATURA DIGITAL WEB SERVICE
Prezado usuario(a),

Caso sua empresa consulte o Sistema de Nota Fiscal Eletronica via Web Service, verifique se os servicos abaixo relacionados estão com a assinatura digital conforme orientações disponiveis na área do desenvolvedor.

Servicos utilizados sem a assinatura digital:

ConsultarSituacaoLoteRpsEnvio - 03/02/2020 16:40:36 - 191.177.199.99
ConsultarLoteRpsEnvio - 03/02/2020 16:40:36 - 191.177.199.99

Informamos que os arquivos fora dos padrães estabelecidos na documentação serão bloqueados a partir de 31/03/2020.

Mais informações sobre como assinar as consultas estão disponiveis em nossa area do desenvolvedor no link https://nfe.sjp.pr.gov.br/servicos/issOnline2/desenvolvedor

Revisando a geração do arquivo XML de consulta, constatei que o mesmo já estava com a assinatura.

Entrei em contato com a prefeitura para averiguar e me informaram que está faltando referenciar o que está assinando:

Reference URI=""

Analisando o exemplo que eles passaram esta dessa maneira 

<Reference URI="#consultar">

E no XML enviado esta

-<Reference URI="">

 

Fiz uma revisão no Acbr, e vi que ele é gerado na ACBrDFeUtil.pas

function SignatureElement(const URI: String; AddX509Data: Boolean;
  const IdSignature: String; const Digest: TSSLDgst): String;
var
  MethodAlgorithm, DigestAlgorithm: String;
begin
  case Digest of
    dgstSHA256:
      begin
        MethodAlgorithm := 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256';
        DigestAlgorithm := 'http://www.w3.org/2001/04/xmlenc#sha256';
      end;
    dgstSHA512:
      begin
        MethodAlgorithm := 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha512';
        DigestAlgorithm := 'http://www.w3.org/2001/04/xmlenc#sha512';
      end;
    else
      begin
        MethodAlgorithm := 'http://www.w3.org/2000/09/xmldsig#rsa-sha1';
        DigestAlgorithm := 'http://www.w3.org/2000/09/xmldsig#sha1';
      end;
  end;

  {(*}
  Result :=
  '<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"' + IdSignature + '>' +
    '<SignedInfo>' +
      '<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' +
      '<SignatureMethod Algorithm="'+MethodAlgorithm+'" />' +
      '<Reference URI="' + IfThen(URI = '', '', '#' + URI) + '">' +
        '<Transforms>' +
          '<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />' +
          '<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' +
        '</Transforms>' +
        '<DigestMethod Algorithm="'+DigestAlgorithm+'" />' +
        '<DigestValue></DigestValue>' +
      '</Reference>' +
    '</SignedInfo>' +
    '<SignatureValue></SignatureValue>' +
    '<KeyInfo>' +
    IfThen(AddX509Data,
      '<X509Data>' +
        '<X509Certificate></X509Certificate>'+
      '</X509Data>',
      '')+
    '</KeyInfo>'+
  '</Signature>';
  {*)}
end;

Que é chamada da function AdicionarSignatureElement na ACBrDFeSSL.pas

function TDFeSSLXmlSignClass.AdicionarSignatureElement(const ConteudoXML: String;
  AddX509Data: Boolean; const docElement, IdSignature: String;
  const IdAttr: String = ''): String;
var
  URI, TagEndDocElement: String;
  I: Integer;
begin
  URI := ExtraiURI(ConteudoXML, IdAttr);

  TagEndDocElement := '</' + docElement + '>';
  I := PosLast(TagEndDocElement, ConteudoXML);
  if I = 0 then
    raise EACBrDFeException.Create('Não encontrei final do elemento: ' + TagEndDocElement);

  Result := copy(ConteudoXML, 1, I - 1) +
            SignatureElement(URI, AddX509Data, IdSignature, FpDFeSSL.SSLDgst) +
            copy(ConteudoXML, I, Length(ConteudoXML));
end;

O que ocorre é que esse IdAttr, em determinado momento não é passado o valor para a rotina.
Então não consegui identificar uma forma de passar a configuração para alterar esta informação.

Alguém sabe como eu poderia gerar a tag Reference URI= com o valor #consultar? 

Obrigado

Rodrigo ®¿®

Curitiba-PR

Postado

Bom dia Italo,

Estou anexando um XML de consulta.

O arquivo de exemplo, entrei na página da prefeitura

Primeiro a página principal 

https://nfe.sjp.pr.gov.br/servicos/issOnline2/

Acessando a página temos a área do desenvolvedor

Citar

Nesta página

https://nfe.sjp.pr.gov.br/servicos/issOnline2/desenvolvedor/

temos a seção XML de exemplo dos métodos, nela temos o exemplo ConsultarLoteRpsV3

https://nfe.sjp.pr.gov.br/servicos/issOnline2/ws/schemes/ConsultarLoteRpsEnvio.xml

Mesmo assim vou realizar o download do exemplo deles e anexar aqui.

01-74580479-con-lot.xml (XML Gerado pelo ACBr)

ExemploSJP-ConsultarLoteRpsEnvio.xml (Exemplo do Site)

01-74580479-con-lot.xml ExemploSJP-ConsultarLoteRpsEnvio.xml

Rodrigo ®¿®

Curitiba-PR

  • 3 semanas depois ...
Postado

Boa tarde Italo,

Atualizei os fontes, gerou conforme o exemplo da prefeitura.

Vamos atualizar os clientes, e contactar a prefeitura para verificar se tudo ficou correto! 

Muito Obrigado pela ajuda,

  • Curtir 2

Rodrigo ®¿®

Curitiba-PR

  • 2 semanas depois ...
  • Consultores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultora ACBr Pro

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

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 !!

  • Este tópico foi criado há 2297 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...