Ir para conteúdo
  • Cadastre-se

dev botao

Servicos utilizados sem a assinatura digital - consultarlote - Provedor SJP


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 1716 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 ...
  • Administradores
Postado

Obrigado por reportar.

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

Consultora SAC ACBr

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á 1716 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.