Os documentos se referem a diferentes objetos. Os digest são diferentes.

715 views
Skip to first unread message

Igor

unread,
Sep 8, 2018, 6:52:22 AM9/8/18
to NFePHP
Bom dia pessoal, estou implementando o sistema e estou com o seguinte problema, ao tentar protocolar o xml algumas vezes eu recebo o erro  "Os documentos se referem a diferentes objetos. Os digest são diferentes.", a resposta da sefaz está com um delay bem grande, talvez possa ser isso que está causando o erro? estou usando o seguinte codigo.

$tools = new NFePHP\NFe\Tools($jsonConfig, NFePHP\Common\Certificate::readPfx($certificado, 'lee001'));
try
{
$xmlAssinado = $tools->signNFe($xml);
} catch (\Exception $e) {
exit($e->getMessage());
}

try
{
$idLote = str_pad(100, 15, '0', STR_PAD_LEFT);
$resp = $tools->sefazEnviaLote([$xmlAssinado], $idLote);

$st = new NFePHP\NFe\Common\Standardize();
$std = $st->toStd($resp);
if ($std->cStat != 103)
{
exit("[$std->cStat] $std->xMotivo");
}
$recibo = $std->infRec->nRec;
} catch (\Exception $e) {
exit($e->getMessage());
}
try
{
$protocolo = $tools->sefazConsultaRecibo($recibo);
} catch (\Exception $e) {
exit($e->getMessage());
}
$req = $xmlAssinado;
$res = $protocolo;
try
{
$xmlProtocolado = Complements::toAuthorize($req, $res);
header('Content-type: text/xml; charset=UTF-8');
echo $xmlProtocolado;

} catch (\Exception $e)
{
echo "Erro: " . $e->getMessage();
}

marss...@gmail.com

unread,
Mar 20, 2021, 10:19:51 AM3/20/21
to NFePHP
Olá amigo olha eu sei que não é a melhor solução mais eu consegui resolver isso da seguinte forma :


try{
    
    $xml = Complements::toAuthorize($xmlAssinado, $protocolo);

    $filename = "../".$linha_patch3['caminho']."{$chave}-nfce.xml"; 

}catch (\Exception $e){


$erro = $e->getMessage();


if($erro == "Os documentos se referem a diferentes objetos. Os digest são diferentes."){
    
    
    
    
}else{



$_SESSION['msg'] = "
   <div class='alert alert-danger' role='alert'>Erro : ".$erro."<button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden='true'>&times;</span></button></div>";
  
     $s = "UPDATE lote_nf SET sta = 1 WHERE id_lote = '$nomejson'";
     $query = mysqli_query($conn, $s);
   
   header("Location: ../cad_venda.php?id_ped=$id_pedido");
   exit();

}



colocando um if ai e tratando esse erro infelizmente fica uma "gambiarra" mais é oque eu consegui fazer aqui pra solucionar 
pois infelizmente vai ficar retornando mesmo o erro esporadicamente 

Max Berkeuer

unread,
Mar 21, 2021, 7:58:21 AM3/21/21
to nfe...@googlegroups.com

Bom dia

Esse erro, acontece devido a alguma alteração no xml.

ex, vc envia o xml pra sefaz com um conteúdo, no processo de assinatura, é gerado o hash na tag DigestValue.

No processo de protocolar o xml, esse valor e conferido novamente, ou seja, gerado novo hash e comparado com o que foi gerado na assinatura.

Verifique se vc esta executando algum update na nfe, nesse intervalo entre assinatura e protocolo.

Eu estava recebendo esse erro por que estava atualizando a data de emissao, então mudava os segundos e o hash calculado era diferente, dai o erro.

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/nfephp/32e23669-06d7-41e3-9401-aa6dd2895d53n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages