Ir para conteúdo
  • Cadastre-se

dev botao

Validar Digest Value ao Consultar XML


Ver Solução Respondido por Kiko Fernandes,
  • Este tópico foi criado há 2254 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

essa opção esta me dando uma dor de cabeça danada, toda vez que eu deixo ela marcada, o sistema me retorna essa mensagem:

26/09/2018 14:39:35 - Nfe.CONSULTARNFE(C:\ACBrMonitorPLUS\Logs\31180916707870000135550010000010601000010604-nfe.xml)
Inicio TNFeConsulta
ERRO: 
DigestValue do documento 31180916707870000135550010000010601000010604 não confere.
26/09/2018 14:39:37 - ERRO: Autorizado o uso da NF-e

segue o log comple to: 

LOG_COMP.TXT:

Devo ou não devo deixar essa opção Marcada?

 

2046821791_DigestValue.thumb.png.bb0b66b0b2de6d12807f61f416cf1799.png

  • Moderadores
  • Solution
Postado

Boa tarde!

Será bom você fazer uma consulta sobre o tema DigestValue para você entender o que isto significa. 
Vou tentar de forma rápida e simples explicar, maiores informações procure por este tema no google. 

Você gera um XML, assina e com base em todo o conteúdo "dados" informado no arquivo, é calculado uma chave que permitirá a verificação posterior do arquivo para saber se o arquivo foi ou não alterado. Esta chave no XML estará em DigestValue. Ao ser processada e autorizada esta chave (deste XML) retorna no protocolo da autorização na tag DigVal. 

Se você teve um problema e tentou enviar outra vez o XML e qualquer alteração ocorrer neste XML (Digamos você, está montando novamente, ao invés de usar o primeiro XML gerado)  e ele já se encontra autorizado. Você tem agora o problema que está te ocorrendo.  Foi gerado outra chave que estará no teu último XML em DigestValue e a SEFAZ vai te retornar o protocolo de autorização do primeiro XML que foi autorizado aonde a chave DigVal estará diferente deste último.  (Por isto a importância de você ter o XML gerado arquivado).  (Respondi como obter o XML mesmo sem autorização em outro tópico que você questionou a respeito.) 

 

Respondendo a tua pergunta: 

1 hora atrás, João Paulo Pires disse:

Devo ou não devo deixar essa opção Marcada?

Deve. 

É obrigatório?  
Não. Pois isto é uma opção a mais desenvolvida pelo ACBr para dar confiabilidade nos XML que você está arquivando. 

Alguem pode recusar receber um XML aonde DigestValue não é o mesmo que Digval do protocolo?
Sim. Pois está indicando que algo foi alterado ou modificado do XML que recebeu. 

Porém hoje em dia muitas empresas utilizam a ciência da operação e após fazem o Download pelo servidor, nem dando importância ao XML que você enviou para o destinatário. 
Neste caso o teu cliente estaria baixando o XML correto, mesmo o teu estando com este problema. 

Portanto a decisão será sua em manter ou não, mas que você está fornecendo um XML errado, isto sem dúvida.

 

  • Curtir 2
  • Obrigado 1


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Postado
1 hora atrás, Kiko Fernandes disse:

Boa tarde!

Será bom você fazer uma consulta sobre o tema DigestValue para você entender o que isto significa. 
Vou tentar de forma rápida e simples explicar, maiores informações procure por este tema no google. 

Você gera um XML, assina e com base em todo o conteúdo "dados" informado no arquivo, é calculado uma chave que permitirá a verificação posterior do arquivo para saber se o arquivo foi ou não alterado. Esta chave no XML estará em DigestValue. Ao ser processada e autorizada esta chave (deste XML) retorna no protocolo da autorização na tag DigVal. 

Se você teve um problema e tentou enviar outra vez o XML e qualquer alteração ocorrer neste XML (Digamos você, está montando novamente, ao invés de usar o primeiro XML gerado)  e ele já se encontra autorizado. Você tem agora o problema que está te ocorrendo.  Foi gerado outra chave que estará no teu último XML em DigestValue e a SEFAZ vai te retornar o protocolo de autorização do primeiro XML que foi autorizado aonde a chave DigVal estará diferente deste último.  (Por isto a importância de você ter o XML gerado arquivado).  (Respondi como obter o XML mesmo sem autorização em outro tópico que você questionou a respeito.) 

 

Respondendo a tua pergunta: 

Deve. 

É obrigatório?  
Não. Pois isto é uma opção a mais desenvolvida pelo ACBr para dar confiabilidade nos XML que você está arquivando. 

Alguem pode recusar receber um XML aonde DigestValue não é o mesmo que Digval do protocolo?
Sim. Pois está indicando que algo foi alterado ou modificado do XML que recebeu. 

Porém hoje em dia muitas empresas utilizam a ciência da operação e após fazem o Download pelo servidor, nem dando importância ao XML que você enviou para o destinatário. 
Neste caso o teu cliente estaria baixando o XML correto, mesmo o teu estando com este problema. 

Portanto a decisão será sua em manter ou não, mas que você está fornecendo um XML errado, isto sem dúvida.

 

ok, só mais uma dúvida, eu devo enviar o xml novamente que esta na pasta DFe ou na pasta Logs do acbr?

Pq assim posso verificar se o xml existe na pasta, se caso existir, vou somente enviar ele novamente com o comando Nfe.EnviarNFe.

o meu erro é que eu estava fazendo o seguinte, toda vez que dava algum erro, eu enviava o comando Nfe.CriarEnviarNFe novamente e isso auterava o DigestValue, com isso se a nota estiver no Sefaz aguardando processamento, vai dar um erro.

 

  • Moderadores
Postado
16 horas atrás, João Paulo Pires disse:

Pq assim posso verificar se o xml existe na pasta, se caso existir, vou somente enviar ele novamente com o comando Nfe.EnviarNFe.

Bom dia @Joao Paulo Pires 
Quando a gente diz enviar novamente o XML é pelo comando consultar e não pelo EnviarNFe. 

Procedimento:
- Quando ocorre o problema que você comentou, tipo ficou em processamento ou caiu a conexão, ou os servidores da SEFAZ estava lento e deu timeout, o próximo passo será uma consulta com o envio do XML.   (Veja que diante do processo que já falamos aqui, você tem a chave da nota gravada, você tem o XML sem a autorização. Agora basta só a consulta.
 

Citar

Exemplo:
NFE.CONSULTARNFE("c:\35XXXXXXXXXXXXXXXX550010000000050000000058-nfe.xml")

Quando você informa o caminho e o arquivo XML, nesta consulta o XML é enviado e se a nota estiver lá na SEFAZ, ao voltar o protocolo de autorização já vai estar acrescentado ao XML que você enviou.

- Caso você receba o status 217 - NFe não consta na base de dados da SEFAZ, neste caso você envia pelo NFe.EnviarNFe() ou NFe.CriarEnvairNFe(), pois mesmo que venha ser gerado outro XML, não existirá nada lá para ser confrontado, como está ocorrendo hoje que você já tinha e com um DigestValue diferente do último arquivo que você envia. 

  • Curtir 2


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Postado
1 hora atrás, Kiko Fernandes disse:

Bom dia @Joao Paulo Pires 
Quando a gente diz enviar novamente o XML é pelo comando consultar e não pelo EnviarNFe. 

Procedimento:
- Quando ocorre o problema que você comentou, tipo ficou em processamento ou caiu a conexão, ou os servidores da SEFAZ estava lento e deu timeout, o próximo passo será uma consulta com o envio do XML.   (Veja que diante do processo que já falamos aqui, você tem a chave da nota gravada, você tem o XML sem a autorização. Agora basta só a consulta.
 

Quando você informa o caminho e o arquivo XML, nesta consulta o XML é enviado e se a nota estiver lá na SEFAZ, ao voltar o protocolo de autorização já vai estar acrescentado ao XML que você enviou.

- Caso você receba o status 217 - NFe não consta na base de dados da SEFAZ, neste caso você envia pelo NFe.EnviarNFe() ou NFe.CriarEnvairNFe(), pois mesmo que venha ser gerado outro XML, não existirá nada lá para ser confrontado, como está ocorrendo hoje que você já tinha e com um DigestValue diferente do último arquivo que você envia. 

ok, vou fazer conforme suas dicas, e atualizar nos clientes. obrigado.

  • Curtir 1
  • Moderadores
Postado

Creio que quanto a sua dúvida já foi esclarecida, cumprindo o objetivo da abertura do tópico.
Portanto estou fechando ele, se surgir nova dúvida, abra novo tópico.  

  • Curtir 2


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

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

The popup will be closed in 10 segundos...