Clipper On Line • Ver Tópico - Problema na Assinatura do XML

Problema na Assinatura do XML

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

Moderador: Moderadores

 

Problema na Assinatura do XML

Mensagempor cleberconde » 17 Out 2019 11:30

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/NFeRetAutorizacao4"><retConsReciNFe 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 99 vezes
xml nfe.xml
o xml assinado
(3.27 KiB) Baixado 113 vezes
cleberconde
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 12
Data de registro: 03 Abr 2019 10:26
Cidade/Estado: caratinga
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Problema na Assinatura do XML

Mensagempor cleberconde » 17 Out 2019 11:37

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
cleberconde
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 12
Data de registro: 03 Abr 2019 10:26
Cidade/Estado: caratinga
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Problema na Assinatura do XML

Mensagempor JoséQuintas » 17 Out 2019 13:52

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18149
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema na Assinatura do XML

Mensagempor cleberconde » 18 Out 2019 15:55

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 ?
cleberconde
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 12
Data de registro: 03 Abr 2019 10:26
Cidade/Estado: caratinga
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Problema na Assinatura do XML

Mensagempor JoséQuintas » 18 Out 2019 16:31

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18149
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema na Assinatura do XML

Mensagempor JoséQuintas » 18 Out 2019 17:00

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18149
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema na Assinatura do XML

Mensagempor MSDN » 18 Out 2019 18:01

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.
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

Problema na Assinatura do XML

Mensagempor JoséQuintas » 18 Out 2019 21:22

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

<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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18149
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema na Assinatura do XML

Mensagempor JoséQuintas » 18 Out 2019 21:28

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.

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:

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":

   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18149
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema na Assinatura do XML

Mensagempor cleberconde » 21 Out 2019 08:34

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.
cleberconde
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 12
Data de registro: 03 Abr 2019 10:26
Cidade/Estado: caratinga
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Problema na Assinatura do XML

Mensagempor JoséQuintas » 21 Out 2019 09:10

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18149
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema na Assinatura do XML

Mensagempor JoséQuintas » 25 Out 2019 08:22

Novidades?
Resolveu o problema da assinatura?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18149
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Problema na Assinatura do XML

Mensagempor Fernando queiroz » 25 Out 2019 12:59

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
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes




Retornar para Projeto hbNFe

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro