nfephp-org/sped-nfe

signNFe(string $xml) mesmo com xml invalido com base no schema, nao retorna exceção

GlauberF opened this issue · 3 comments

  • Estou enviando um ...
    • bug
    • requisição de funcionalidade
    • requisição de suporte => Por favor, não envie solicitação de suporte aqui, veja a nota no topo deste modelo.

Comportamento esperado

Utilizar o signNFe para assinar o XML e na assinatura, já faz a validação do XML com base no schema.

Comportamento Atual

Estou chamando signNFe($xml) porem mesmo que o xml não seja válido não retorna um exceção.

Descrição detalhada

Dentro do método signNFe tem $this->isValid($this->versao, $signed, 'nfe'); e conforme o descritivo da biblioteca.

//exception will be throw if NFe is not valid

Ou seja o xml não é valido, entao teria que ter gerado uma exceção

pois o mesmo xml que ali passa sem exceção, no validator https://www.sefaz.rs.gov.br/nfe/nfe-val.aspx
recebo o erro de schema.

Captura-de-Tela_selecionar-area_20220721185006

Em resumo pelo que vejo a função signNFe(string $xml) mesmo com xml inválido com base no schema, nao retorna exceção.
acaba retornando sempre o $signed fazendo com que o processo de emissão siga e estore erro mais para frente de forma generica
o xml em questão que nao gerou exceção em signNFe (https://gist.github.com/GlauberF/47769cac47586ed6251111574e38dc1b), porem gerou/mostrou o erro de forma correta aqui https://www.sefaz.rs.gov.br/nfe/nfe-val.aspx

Não sei como você está usando esses métodos para poder lhe dar uma resposta.
Provavelmente não localizou o xsd e nesse caso retorna TRUE na validação !

Meu processo de emissão utilizando essa forma, ja faço uso a um bom tempo, porem depois das ultimas atualizações começou esse comportamento para min.
Mas em resumo o que eu faço é, na minha função que monto o xml e transmito, chamo o signNFe($xml).

Passos:
1 -> monto o xml($xml)
2 -> xml montado, assino com signNFe passando para ela o xml montado acima $xml_assinado = signNFe($xml);.
3 -> segue o fluxo de transmitir com o $xml_assinado

No passo 2, quando eu chamo e passo o xml, no passado acusava erro no schema e parava por ali o processo.
E como o metodo signNFe é da biblioteca e ele chama $this->isValid($this->versao, $signed, 'nfe');, não passo o caminho do xsd.

Meu amigo, eu testei aqui na minha maquina fazendo o xCpl exceder o limite de 60 caracteres e isso foi detectado e disparada a exception.
Não é um problema no código mas alguma coisa ai na sua maquina !!! ou na forma que está usando os recursos.