Problema na Assinatura do XML

Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour

Moderador: Moderadores

cleberconde
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 03 Abr 2019 10:26
Localização: caratinga

Problema na Assinatura do XML

Mensagem por cleberconde »

Pessoal,,

Depois de muito teste, consegui fazer funciona a SefazClass , no xHarbour com Fivewin.

To conseguindo enviar, e receber o protocolo de envio e recebimento do lote.

No retorno da aprovacao do xml, to recebendo o seguinte : Rejeicao: Falha no schema XML

Peguei o xml antes de assinar e validei ele online na http://validadornfe.tecnospeed.com.br/ e deu XML VALIDO OK

salvei o xml assinado e tentei validar ele online na http://validadornfe.tecnospeed.com.br/ me deu o seguinte erro:

O XML é inválido. Erro: "An invalid character was found in text content. Line: 1 MIIHvDCCBaSgAwIBAgIIMHkZByZUp6AwDQYJKoZI"


o Certificado Digital nao achei nada errado. Instalei a CAPICOM.

Alguem pode me dar uma ideia do que pode ser ?
Anexei os dois xml aqui

Retorno:
<erro text="*ERRO* NFeGeraAutorizado() Não autorizado" /><ns2:nfeResultMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NFeAutorizacao4" xmlns:ns2="http://www.portalfiscal.inf.br/nfe/wsdl ... onsReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00">
<tpAmb>2</tpAmb>
<verAplic>14.4.6</verAplic>
<nRec>310000067927819</nRec>
<cStat>215</cStat>
<xMotivo>Rejeicao: Falha no schema XML</xMotivo>
<cUF>31</cUF>
<dhRecbto>2019-10-17T11:10:29-03:00</dhRecbto>
</retConsReciNFe></ns2:nfeResultMsg>
Anexos
xml-Assinado-nfe.xml
O xml gerado
(6.54 KiB) Baixado 367 vezes
xml nfe.xml
o xml assinado
(3.27 KiB) Baixado 378 vezes
cleberconde
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 03 Abr 2019 10:26
Localização: caratinga

Problema na Assinatura do XML

Mensagem por cleberconde »

so para complementar a forma como estou usando a SefazClass

cDocXml -> Conteudo do xml

oSefaz := SefazClass():New()
oSefaz:cCertificado := cCertificado
oSefaz:cNFCE := "N"
oSefaz:cAmbiente := cTipoAmbiente
oSefaz:cUF := "MG"

oSefaz:NfeLoteEnvia( cDocXml, "1" )


Ate mais

Cleber
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema na Assinatura do XML

Mensagem por JoséQuintas »

Coloquei no validador RS

https://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx

Ao que parece é o fim de arquivo CTRL-Z.
Ajuste a forma de salvar, ao que parece está em formato DOS.
No Harbour: hb_MemoWrit( "arquivo", "txt" )
No XHarbour, se não me engano: MemoWrit( "arquivo", "txt", .T. )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cleberconde
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 03 Abr 2019 10:26
Localização: caratinga

Problema na Assinatura do XML

Mensagem por cleberconde »

Retirei o caracter e agora da Assinatura INVALIDA DO XML, peguei o xml e validei no site que passou e deu mesmo ASSINATURA INVALIDA
alguma coisa da CAPICON QUE INSTALEI SERA ?
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema na Assinatura do XML

Mensagem por JoséQuintas »

cleberconde escreveu:Retirei o caracter e agora da Assinatura INVALIDA DO XML, peguei o xml e validei no site que passou e deu mesmo ASSINATURA INVALIDA
alguma coisa da CAPICON QUE INSTALEI SERA ?
Vamos por partes:
nota1.png
nota2.png
No validador reclama assinatura inválida.
Conteúdo do XML ok.
Certificado ok.

Por enquanto, podemos considerar assinatura correta, e algum caractere especial do XML.
Alterei pelo bloco de notas, muitas vezes o bloco de notas NÃO mostra todos os caracteres.
E apenas olhar é complicado.
Vamos testar caracteres "diferentes".
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema na Assinatura do XML

Mensagem por JoséQuintas »

Nenhum caractere inválido.
Assinou novamente depois de remover o caractere, pra ver se ficou diferente?
De repente no XML ANTES de assinar também tinha o Chr(26).
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

Problema na Assinatura do XML

Mensagem por MSDN »

Pelo erro, quase certeza que a estrutura do XML está faltando algo, ou sobrando algo ou algo que é obrigatório constar está mal formatado, tanto pelo lado da TAG ou talvez pelo conteúdo, pesquise sobre caracteres que não são aceitos em um XML de nota.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema na Assinatura do XML

Mensagem por JoséQuintas »

Ia dizer que não achei nada errado, mas....

Código: Selecionar todos

<ICMSTot><vBC>0</vBC><vICMS>0</vICMS><vICMSDeson>0</vICMSDeson><vFCP>0</vFCP><vBCST>0</vBCST><vST>0</vST><vFCPST>0</vFCPST><vFCPSTRet>0
Se não me engano, esses valores precisam de decimais.

Algumas rotinas de assinatura, ao usarem schemma podem colocar 0.00 nesses lugares, corrigindo automaticamente.
Esse tipo de coisa é que dá diferença de assinatura: algumas correções automáticas.
Mesmo assim, fica estranho não mostrar erro na validação do XML.

Por enquanto é uma possibilidade, mas depende de confirmação.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema na Assinatura do XML

Mensagem por JoséQuintas »

MSDN escreveu:pesquise sobre caracteres que não são aceitos em um XML de nota.
Testei isso, e aproveitei pra melhorar um pouco a validação simples dentro da sefazclass.

Código: Selecionar todos

PROCEDURE Main

   LOCAL cTxt, oSefaz

   SetMode( 40, 100 )
   cTxt := MemoRead( "d:\temp\xml-assinado-nfe.xml" )
   oSefaz := SefazClass():New()
   ? oSefaz:ValidaXml( cTxt )
   Inkey(0)

   RETURN
Ainda preciso melhorar mais com outros caracteres de outros XMLs, mas vai ser questão de tempo.

Tá na sefazclass, não precisa copiar daqui.
Era só esta parte, pra testar o abre/fecha:

Código: Selecionar todos

STATIC FUNCTION SingleXmlValidate( cXml )

   LOCAL nPos, aTagsAbre := {}, cTmp, oElement, cLetra, cTxtErro := ""

   DO WHILE .T.
      nPos := hb_At( "<", cXml, nPos )
      IF nPos < 1
         EXIT
      ENDIF
      IF Substr( cXml, nPos + 1, 1 ) == "/"
         IF ! ProcFecha( Substr( cXml, nPos, hb_At( ">", cXml, nPos ) - nPos ), aTagsAbre )
            EXIT
         ENDIF
      ELSE
         cTmp := Substr( cXml, nPos, hb_At( ">", cXml, nPos ) - nPos + 1 )
         IF ! "/>" $ cTmp .AND. ! "/ >" $ cTmp
            AAdd( aTagsAbre, cTmp )
            //? "Abriu " + Atail( aTagsAbre )
         ENDIF
      ENDIF
      nPos := nPos + 3
   ENDDO
   IF Len( aTagsAbre ) != 0
      cTxtErro += "Em aberto" + Space(3)
      FOR EACH oElement IN aTagsAbre
         cTxtErro += oElement + Space(3)
      NEXT
      RETURN "*ERRO* " + cTxtErro
   ENDIF
   RETURN "OK"
Acrescentei esta parte hoje, pra testar caracteres "diferentes":

Código: Selecionar todos

   FOR EACH cLetra IN cXml
      DO CASE
      CASE cLetra $ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
      CASE cLetra $ "abcdefghijklmnopqrstuvwxyz"
      CASE cLetra $ "0123456789"
      CASE cLetra $ " <>=:/.,-+#"
      CASE cLetra == ["]
      OTHERWISE
         RETURN "*ERRO* Caractere " + cLetra + " posição " + Ltrim( Str( cLetra:__EnumIndex ) ) + ;
            " aproximadamente aqui " + Substr( cXml, Max( 0, cLetra:__EnumIndex - 10 ), 20 )
      ENDCASE
   NEXT
   IF " <" $ cXml .OR. "> " $ cXml
      RETURN "*ERRO* espaços em branco antes de < ou depois de >"
   ENDIF
Conforme for testando mais XMLs, vou acrescentando mais caracteres.
É só uma pequena ajuda.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
cleberconde
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 03 Abr 2019 10:26
Localização: caratinga

Problema na Assinatura do XML

Mensagem por cleberconde »

Nossa ta ajudando demais.
Tem alguma coisa no aplicativo que ta gerando esse caracter no final do arquivo.

Quando mando gravar com MemoWrite() ou com FWrite() e gera o caracter no final no arquivo.
Eu usei a funcao TTxtFile e nao gravou o caracter .

Vou testar com as modificacoes e dou retorno

Te agradeço ao Jose e ao Marcelo pelas dicas. to chegando la.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema na Assinatura do XML

Mensagem por JoséQuintas »

Já comentei o que usar hb_memoWrit() no harbour ou memowrit() do xharbour com .T.

Talvez tenha faltado dizer isto:

Control-Z é o fim de arquivo para o DOS.
TODO arquivo em formato DOS tem isso no final.
Pra ficar compatível com Clipper, o default das gravações Harbour/XHarbour é o arquivo sendo gerado com isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Problema na Assinatura do XML

Mensagem por JoséQuintas »

Novidades?
Resolveu o problema da assinatura?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Problema na Assinatura do XML

Mensagem por Fernando queiroz »

Eu estou retirando os carácteres especiais nos cadastros , para não dar dor de cabeça na hora da NFE
Em alguns caso como D’angelo faço a troca já na entrada
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Responder