Boa tarde,
No início deste mês atualizei os fontes do ACBrNFSe (estava na revisão 7877 do dia 28/11/2014) e entao o erro "Assinatura do HASH não confere" voltou a acontecer e não consegui mais enviar (Utilizo o método ACBrNFSe1.Gerar) NFS-e para Itajaí, cujo provedor é o Pública.
Contornei o erro voltando a pasta dos fontes do ACBrNFSe para a revisão 7877 enquanto esperava por um tempo livre para encontrar a causa do erro. Hoje encontrei e vim postar para que se mais alguém passe pelo mesmo problema, possa achar uma possível solução, e para que se for mesmo erro no componente, que possa ser corrigido.
Bom, na revisão 7907, foi comentado o seguinte código na Unit pnfsNFSeW:
procedure TNFSeW.GerarXML_ABRASF_V1;
begin
//if FProvedor in [proLexsom, proPublica] then
// FIdentificador := 'id';
Isso faz com que o XML fosse primeiro assinado e só depois de assinar fosse subistituído a tag "Id" para "id" causando assim o erro de HASH (assinatura ficava inválida também na validação no site da receita), removi o comentário e não deu mais o erro pois então o XML seria assinado e enviado sem modificações posteriores.
No Log, o motivo desse código ter sido comentado:
[*] Para os provedores Lexsom e Publica o identificador estava sendo alterado para
id antes de ocorrer a assinatura.
Mas acredito que essa é a forma correta, modificar e então assinar, não o contrario, mas em fim, ficaria grato se alguém puder me informar o motivo de estar dessa forma e se eu estou equivocado, como então proceder para evitar o erro de HASH.
Obrigado.