Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

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

  • 4 semanas depois ...
Postado

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
  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

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"

 

Postado

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
  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

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.

 

  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

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

Postado

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

  • 1 mês depois ...
  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

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

Postado

Bom dia Ítalo,

não implementei todos os serviços fornecidos pelo Web service desse provedor,

mas testei os serviços abaixo com os fontes sincronizados do ACBr, e estão funcionando:

RecepcionarLoteRps, GerarNfse, ConsultarSituacaoLoteRps, ConsultarNfsePorRps, ConsultarLoteRps, CancelarNfse

  • 3 semanas depois ...
  • 2 anos depois...
  • Moderadores
Postado
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.

 

 

 

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