Ir para conteúdo
  • Cadastre-se

dev botao

Provedor Publica - Assinatura do Hash não confere.


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

Recommended Posts

Boa tarde,

Gostaria de uma ajuda se possível, estou migrando para os fontes ACBr2 e não estou conseguindo achar o problema.

Nos fontes antigos está funcionando normalmente, tanto em produção como homologação, mas quando tento validar com o ACBr2, está me retornando "Assinatura do Hash não confere."

Tentei validar no AssinaDoc e a versão antiga está OK, mas o XML da versão ACBr2 está retornando erro, já tentei de tudo para descobrir e não consegui, já pesquisei em todos tópicos relacionados com o assunto mas mesmo assim não consegui, por isso estou abrindo este tópico.

Obrigado!

Cistiano Duarte

versao_acbr_antiga_OK.xml

versao_acbr2_problema.xml

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...

Bom dia,

1) Eu estava com o mesmo problema, avalieis os novos fontes do Trunk2 e fiz as correções necessárias para que a assinatura seja realizada conforme determinado pelo provedor Pública. O que acontecia é que para assinar o XML a tag GerarNfseEnvio precisa estar no conteúdo assinado, sendo que estava assinando apenas o conteúdo da tag Rps.

2) Também alterei o provedor da cidade de Caçador/SC que agora utiliza Pública e não é mais Betha

Alterações:

- ACBrDFeSSL.pas: Precisei colocar o método "AdicionarSignatureElement" como público, para poder incluir a tag de assinatura no local correto, e fazer a assinatura na geração da NFS-e (TACBrNFSe.Gerar)

- ACBrNFSeWebServices.pas: Faço a chamada do método indicado acima, para incluir a tag de assinatura

- pnfsConversao.pas: Precisei incluir a natureza de operação 9, que é utilizada na cidade de Caçador/SC

-Cidade.ini: Mudança no provedor de Caçador/SC; Inclusão dos parâmetros: NomeURL_H e NomeURL_P, para o provedor Pública, pois é necessário já que esse provedore atende as cidades de Itajaí/SC e Caçador/SC

- Publica.ini: Precisei alterar as propriedades RpsGerar=0 LoteGerar=1, para que a assinatura fosse realizada corretamente. Adicionei a URL para cidade de Caçador/SC

Fiz os testes com os métodos: TACBrNFSe.Gerar e TACBrNFSe.Enviar, funcionaram corretamente após as alterações

Seguem arquivos em anexo com as alterações necessárias para integração com o provedor Publica

Publica.rar

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Augusto,

Você poderia anexar o XML com a assinatura na posição errada e o outro com a assinatura na posição correta, pois acredito que podemos resolver o problema se a alteração que você fez em ACBrDFeSSL.

 

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia Italo

O que acontece é que na hora fazer a assinatura o conteúdo do XML deve ter a Tag GerarNfseEnvio, caso contrário o provedor acusa erro na assinatura.

Exemplo

<GerarNfseEnvio xmlns="http://www.publica.inf.br">
  <Rps>
    <InfRps id="99991">
      ...
    </InfRps>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
      ...
    </Signature>
  </Rps>
</GerarNfseEnvio>

Ao assinar o XML com esse conteúdo funciona corretamente, perceba a presença da Tag GerarNfseEnvio,

Já ao assinar o XML dessa forma:

<Rps>
  <InfRps id="99991">
    ...
  </InfRps>
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    ...
  </Signature>
</Rps>

ocorre o erro, pois falta a tag GerarNfseEnvio

Fiz as alterações dessa forma para não afetar o envio de lote, método "TACBrNFSe.Enviar" pois o mesmo está funcionando corretamente. O problema ocorria apenas no método "TACBrNFSe.Gerar"

 

Link para o comentário
Compartilhar em outros sites

Bom dia, estou retornando de férias, eu havia feito uma alteração no fonte "ACBrNFSeWebServices.pas" na rotina "procedure TNFSeGerarNFSe.DefinirDadosMsg;" que havia resolvido o problema, atualizei os fontes do ACBr2 agora mas não estou conseguindo testar, pois parece que o servidor de homologação está fora do ar.

Alteração: (em vermelho)

procedure TNFSeGerarNFSe.DefinirDadosMsg;

...

  if (FPDadosMsg <> '') and (FDadosEnvelope <> '') then
  begin
    DefinirSignatureNode('');

    //Duarte
    case FProvedor of
      proPublica: TagGrupo := 'Rps></GerarNfseEnvio'
    end;
    //Duarte

//    case FProvedor of
//      proSP: AssinarXML(FPDadosMsg, FPrefixo3 + TagGrupo, '',
//                             'Falha ao Assinar - Gerar NFS-e: ');
//    else
      FPDadosMsg := TNFSeGerarNFSe(Self).FNotasFiscais.AssinarLote(FPDadosMsg,
                              FPrefixo3 + TagGrupo,
                              FPrefixo3 + TagElemento,
                              FPConfiguracoesNFSe.Geral.ConfigAssinar.LoteGerar,
                              xSignatureNode, xDSIGNSLote, xIdSignature);
//    end;
...

end;

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Antonio,

Eu lhe pedi para anexar os XML e não postar um resumo deles, desculpe assim não tem como eu avaliar o problema.

Outra coisa a TAG <GerarNfseEnvio> é um grupo que contem a o XML do RPS assinado e a assinatura é feita com base no conteúdo do grupo <InfRps>.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia

DuartRS, realmente o servidor de homologação está off, assim que voltar vou testar para ver se a sua alteração funciona aqui para mim, pois ela está mais simples que a alteração que fiz.

Ítalo, o XML não tem alteração a estrutura é a mesma, a única coisa que muda é o momento da assinatura, que deve ser realizada somente quando a Tag GerarNfseEnvio, estiver no conteúdo assinado. Ou seja, a assinatura deve ser realizada somente no método TNFSeGerarNFSe.DefinirDadosMsg.

Entendo que o grupo InfRps está contido dentro da TAG GerarNfseEnvio e concordo que a forma como foi implementada está correta, mas o provedor não aceita dessa forma.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia a todos,

Analisando ambos os XMLs (anexados pelo Duarte), notei que o problema é a posição da assinatura.

Pois bem, notem que o arquivo INI possui dois campos referentes a assinatura: RpsGerar e LoteGerar.

Para a maioria dos provedores que possuem o método GerarNFSe devemos configurar esses dois campos da seguinte forma:

RpsGerar=1 ou 0
LoteGerar=0

para que o RPS seja assinado ou não.

Para os provedores que admitem um lote (com 2 ou 3 RPS) no Gerar devemos configurar da seguinte forma:

RpsGerar=0
LoteGerar=1 ou 0

para que o Lote seja assinado ou não.

Notem que o XML dito como correto (anexado pelo Duarte) a assinatura esta dentro do grupo <Rps>, isso significa que é o RPS que esta sendo assinado.

Por outro lado o XML dito como errado, a assinatura esta dentro do grupo <GerarNfseEnvio>, isso significa que é o Lote que esta sendo assinado.

Peço que desfaçam as alterações realizadas nos fontes do componente e altere a configuração no arquivo INI do provedor de:

RpsGerar=0
LoteGerar=1

para

RpsGerar=1
LoteGerar=0

E realizam novos testes.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia, Ítalo

Já havia feitos esses testes e com os fontes atuais ocorre o erro relacionado a assinatura. Seguem testes:

TESTE 1: RpsGerar=1; LoteGerar=0, Assinatura inválida

TESTE 2: RpsGerar=0; LoteGerar=1, Arquivo fora da estrutura, assim o arquivo fica inválido

TESTE 3: RpsGerar=0; LoteGerar=1; Com as últimas alterações na unit ACBrNFSeWebServices.pas, SUCESSO NA GERAÇÃO DA NFS-E

Seguem XMLs com os testes realizados, estou anexando também os schemas. Permite apenas um RPS no método GerarNfseEnvio

Att

schema_nfse_v03.xsd

XMLs.rar

Link para o comentário
Compartilhar em outros sites

Bom dia, no momento estou fora da empresa, mas se não me engano, o problema do TESTE 1 da assinatura inválida é porque o XML é alterado após a assinatura digital, o fechamento do grupo "</RPS>" é feito após a assinatura, por esse motivo a única forma de correção que encontrei foi utilizar o "RpsGerar=0" e "LoteGerar=1" com aquela alteração que postei, pois nesse caso o XML está completo no momento da assinatura.

Att

Cristiano Duarte

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • Consultores

Boa tarde a todos,

Augusto, muito obrigado pela colaboração, já esta disponível.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Augusto,

Não entendo a necessidade dessa alteração, uma vez que logo no inicio dessa rotina é dito que o TagGrupo é GerarNfseEnvio.

E essa Tag é unica no XML.

Como que fica o XML assinando sem e com essa alteração?

A assinatura fica fora do lugar, dai fica invalida para o provedor?

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia Ítalo,

a tag de assinatura deve ficar abaixo da tag InfRps, atualmente está ficando abaixo da tag Rps.

Mas é importante que a assinatura seja feita no método: TNFSeGerarNFSe.DefinirDadosMsg,

pois quando for assinar o XML a Tag GerarNfseEnvio precisa estar no conteúdo assinado,

caso contrário  aparece a mensagem de erro: "Assinatura do Hash não confere".

Segue XMLs em anexo

232-ger-nfse-CORRETO-ALTERADO.xml

232-ger-nfse-ERRO-ATUAL.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Augusto,

Entendido.

Muito obrigado pela colaboração, já esta disponível no repositório.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Augusto,

Então podemos dizer que o provedor Publica agora esta funcionando 100% ?

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Consultores

Bom dia Augusto,

Muito obrigado pelo retorno, sendo assim vou incluir o provedor Publica na lista dos provedores que estão funcionando 100% no Trunk2.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
  • Moderadores
1 hora atrás, Rejane Lingner disse:

Bom dia. 

Estou com esse problema de "Assinatura do hash não confere" para o método de Cancelar a nota de serviço. Mais alguém teve esse problema?

201800000006012-ped-can.xml

Bom dia, Rejane Lingner.

Tópico é antigo e por isso será fechado. Peço para que crie um novo.

  • Curtir 1
Equipe ACBr

Felipe Eduardo Resende Mesquita

Ajude o Projeto ACBr crescer - Assine o SAC

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

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1901 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.