Página 1 de 1
Problema na Assinatura do XML
Enviado: 17 Out 2019 11:30
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>
Problema na Assinatura do XML
Enviado: 17 Out 2019 11:37
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
Problema na Assinatura do XML
Enviado: 17 Out 2019 13:52
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. )
Problema na Assinatura do XML
Enviado: 18 Out 2019 15:55
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 ?
Problema na Assinatura do XML
Enviado: 18 Out 2019 16:31
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:
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".
Problema na Assinatura do XML
Enviado: 18 Out 2019 17:00
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).
Problema na Assinatura do XML
Enviado: 18 Out 2019 18:01
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.
Problema na Assinatura do XML
Enviado: 18 Out 2019 21:22
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.
Problema na Assinatura do XML
Enviado: 18 Out 2019 21:28
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.
Problema na Assinatura do XML
Enviado: 21 Out 2019 08:34
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.
Problema na Assinatura do XML
Enviado: 21 Out 2019 09:10
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.
Problema na Assinatura do XML
Enviado: 25 Out 2019 08:22
por JoséQuintas
Novidades?
Resolveu o problema da assinatura?
Problema na Assinatura do XML
Enviado: 25 Out 2019 12:59
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