Closed marcelonogueira closed 6 years ago
Para fazer a validação do DigestValue do XML o método isSigned() realiza uma busca no atributo @Id e o foreach retorna sempre a última tag, sendo que para gerar o DigestValue a tag a ser verificada é a infNFe.
Exemplo:
<nfeProc versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe"> <NFe xmlns="http://www.portalfiscal.inf.br/nfe"> <infNFe Id="NFe99999999999999999999999900000000000000000000" versao="3.10"> ... </infNFe> </NFe> <protNFe versao="3.10"> <infProt Id="ID999999999999999"> ... </infProt> </protNFe> </nfeProc>
Trecho que apresenta o problema:
private static function digestCheck( $xml, $tagname = '', $canonical = [true,false,null,null] ) { ... $xpath = new \DOMXPath($dom); $entries = $xpath->query('//@Id'); foreach ($entries as $entry) { $tagname = $entry->ownerElement->nodeName; } ... }
Para resolver o problema basta inserir um break no foreach para ele retornar a primeira tag:
private static function digestCheck( $xml, $tagname = '', $canonical = [true,false,null,null] ) { ... $xpath = new \DOMXPath($dom); $entries = $xpath->query('//@Id'); foreach ($entries as $entry) { $tagname = $entry->ownerElement->nodeName; break; } ... }
@marcelonogueira Obrigado ! Marcelo, corrigido na release v5.0.22
Para fazer a validação do DigestValue do XML o método isSigned() realiza uma busca no atributo @Id e o foreach retorna sempre a última tag, sendo que para gerar o DigestValue a tag a ser verificada é a infNFe.
Exemplo:
Trecho que apresenta o problema:
Para resolver o problema basta inserir um break no foreach para ele retornar a primeira tag: