Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

Erro Na Geração Da Nota Fiscal Com Provedor Betha E Gi


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

Recommended Posts

Olá, estou tentando gerar uma nota fiscal para provedor Betha.

 

O componente chega a assinar o RPS, adicionar a tag <signature> do lote. porém ele não consegue assinar:

ele chama a função xmlSecDSigCtxSign e cai na excepção "raise Exception.Create('Error: signature failed');".

Já atualizei o repositório à ultima revisão, mas o problema continua.

Tentei compilando o demo em deplhi e lazarus, os mesmos caem na mesma excepção.

Percebi que isso está acontecendo também para outros provedores, por exemplo GINFES. 

 

O que posso fazer para solucionar o problema? Estou usando ACBRNFSe com OpenSSL.

 

Grato,

Matteo.

PS: Como precisamos rodar o componente em uma máquina linux, a utilização do CAPICOM não é viável.

Edited by acciarolimatteo
Link to comment
Share on other sites

Consegui gerar a nfe (RPS e Lote assinados) pelo componente ACBrNFSe mudando a criptografia dele de 2048 para 1024 mas somente usando CAPICOM.

Pelo OpenSSL ele da erro na hora de assinar o Lote. Há solução para isso? Eu procurei no forum, tem outros usuários com mesmo problema porem ninguém parece ter conseguido resolver o problema.

Link to comment
Share on other sites

  • Consultores

Bom dia Matteo,

 

Se não me falha a memória já devo ter respondido esse questionamento em outro tópico, mas vamos lá.

 

Se tratando de OpenSSL é preciso incluir no XML o DTD antes de realizar a assinatura. O componente faz isso automaticamente, mas como não existe uma padronização, alguns provedores colocam o ID como sendo "Id" outros são "id" e outros não tem o identificador.

 

A função do DTD é fazer com que o xmlsec encontre o ID no momento que vai realizar a assinatura.

 

Como o Capicom não requer o DTD para realizar a assinatura, pouco importa se tem ou não tem o ID. É por isso que funciona, ou seja a assinatura é realizada.

 

O DTD definido prevê a presença do ID no grupo <LoteRps> (quando vai assinar o lote) e <InfRps> (quando vai assinar o RPS).

 

Se não me falha a memória o provedor em questão não possui ID. Isso pode ser a origem do problema ou tem mais alguma coisa faltando.

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

Link to comment
Share on other sites

Eu estudei como o componente ACBrNFSe realiza a assinatura e vim fazendo a depuração da rotina de assinatura do módulo de vocês.

 

O problema ocorre somente na hora de assinar o Lote, os RPS são assinados sem problema nenhum.

 

Verifiquei que ele adiciona o DTD no começo do XML e depois disso coloca a tag <ns3:EnviarLoteRpsEnvio xmlns:ns3="..."> e o resto do conteúdo;

Depois disso, o componente chama a função para assinar o Lote e a mesma retorna um erro e não consegue assinar.

 

Eu realizei um script em LUA para conseguir assinar o XML que usa o binário xmlsec1 (que usa a mesma libraria do módulo ACBrOpenSSL) e,

inicialmente, ele também estava encontrando problemas na hora de assinar o Lote, dai fiz alguns experimentos e teve a ideia de substituir a tag raiz:

alterei de <ns3:EnviarLoteRpsEnvio xmlns:ns3="..."> ... </ns3:EnviarLoteRpsEnvio> para  <RootNode> ... </RootNode>, mandei assinar e o problema sumiu.

Após assinar, coloquei de volta a tag original, mandei validar pelo site da betha e o mesmo validou minha nota com sucesso.

 

Já que a tag raiz está fora do contexto da assinatura, ela não influência a validação da mesma, então poderia ser uma tentativa tentar reproduzir isso no módulo de vocês,

quem sabe que o problema seja resolvido para todos.

  • Like 1
Link to comment
Share on other sites

  • Consultores

Bom dia Matteo,

 

Esta ocorrendo uma reestruturação nos fontes de todos os componentes, e o ACBNFSe esta na lista, quando chegar a vez dele, vamos estudar a melhor solução.

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

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.