webservice harbour nfe status servico

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

athayde
Colaborador
Colaborador
Mensagens: 166
Registrado em: 14 Fev 2007 16:54

webservice harbour nfe status servico

Mensagem por athayde »

aqui segue um exemplo de verificar o status do servico com harbour
estou usando o ServerXMLHTTP pois é o que deu certo, só que nao sei selecionar o certificado ele seleciona sozinho, isso é um problema quando se tem varios
o XMLHTTP nao consegui dar o send sempre demorava e dava argument error
se alguem souber como melhorar esse código seria interessante pois é um passo para os WS da vida

hbmk2 nome do prg -lhbwin -lhbct

Código: Selecionar todos

#include "common.ch"
#include "hbclass.ch"
#include "hbwin.ch"
#include "hbcompat.ch"

FUNCTION MAIN()
xmldom = win_oleCREATEOBJECT("MSXML2.DOMDocument")
xmldom:async = .F.
xmldom:validateOnParse  = .T.
xmldom:resolveExternals := .F.
xmldom:preserveWhiteSpace = .T.
  Texto := '<?xml version="1.0" encoding="utf-8"?>'
  Texto := Texto + '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">'
  Texto := Texto +   '<soap12:Header>'
  Texto := Texto +     '<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">'
  Texto := Texto +       '<cUF>35</cUF>'
  Texto := Texto +       '<versaoDados>2.00</versaoDados>'
  Texto := Texto +     '</nfeCabecMsg>'
  Texto := Texto +   '</soap12:Header>'
  Texto := Texto +   '<soap12:Body>'
  Texto := Texto +     '<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">'
  Texto := Texto +       '<consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">'
  Texto := Texto +         '<tpAmb>1</tpAmb>'
  Texto := Texto +         '<cUF>35</cUF>'
  Texto := Texto +         '<xServ>STATUS</xServ>'
  Texto := Texto +       '</consStatServ>'
  Texto := Texto +     '</nfeDadosMsg>'
  Texto := Texto +   '</soap12:Body>'
  Texto := Texto +'</soap12:Envelope>'

xmldoc = win_oleCREATEOBJECT("MSXML2.ServerXMLHTTP.6.0")
url = "https://nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico2.asmx"
xmldoc:open("POST", url, .F.)
xmldoc:setRequestHeader("SOAPAction", "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2")
xmldoc:setRequestHeader("Content-Type", "application/soap+xml; charset=utf-8")
xmldom:LoadXML(Texto)
IF xmldom:parseError:errorCode = 0
   ? "XML Carregado"
ELSE
  lcErrorMsg = "Não foi possível carregar o documento pois ele não corresponde ao seu Schema"
  lcErrorMsg = lcErrorMsg + " Linha: " + STR(xmldom:parseError:line)
  lcErrorMsg = lcErrorMsg + " Caractere na linha: " + STR(xmldom:parseError:linepos)
  lcErrorMsg = lcErrorMsg + " Causa do erro: " + xmldom:parseError:reason;
               +"code: "+STR(xmldom:parseError:errorCode)
  ? lcErrorMsg
ENDIF
lerro = .F.
TRY
   xmldoc:send(xmldom:xml)
CATCH oError
  ? "Falha envio de email"+HB_OsNewLine()+ ;
	 "Error: "  + Transform(oError:GenCode, nil) + ";" +HB_OsNewLine()+ ;
	 "SubC: "   + Transform(oError:SubCode, nil) + ";" +HB_OsNewLine()+ ;
	 "OSCode: "  + Transform(oError:OsCode,  nil) + ";" +HB_OsNewLine()+ ;
	 "SubSystem: " + Transform(oError:SubSystem, nil) + ";" +HB_OsNewLine()+ ;
	 "Mensangem: " + oError:Description
	 lerro = .T.
END
IF !lerro
  ?
  do while xmldoc:readyState <> 4
    ?? ALLTRIM(STR(xmldoc:readyState))
  
    millisec(500)
  enddo
endif
? "TEXT "+xmldoc:responseText
? "XML "+ xmldoc:responseXML:xml
quit
[]s
Fernando
projeto hbNFe NFe para [x]Harbour venha fazer parte do time http://www.pctoledo.com.br/forum/viewforum.php?f=54
Harbour 3.2 + Hwgui (HBIDE)
athayde
Colaborador
Colaborador
Mensagens: 166
Registrado em: 14 Fev 2007 16:54

webservice harbour nfe status servico

Mensagem por athayde »

colocar esse código abaixo antes de
xmldoc:open("POST", url, .F.)

Código: Selecionar todos

xmldoc:setOption( 3, "CURRENT_USER\MY\NOME DO CERTIFICADO O CN= das propriedades" )
aparentemente então resolvido o problema de selecionar certificados

[]s
Fernando
projeto hbNFe NFe para [x]Harbour venha fazer parte do time http://www.pctoledo.com.br/forum/viewforum.php?f=54
Harbour 3.2 + Hwgui (HBIDE)
athayde
Colaborador
Colaborador
Mensagens: 166
Registrado em: 14 Fev 2007 16:54

webservice harbour nfe status servico

Mensagem por athayde »

para consultar situação de uma nfe (chave)

usar
URL do webservice

Código: Selecionar todos

url = "https://nfe.fazenda.sp.gov.br/nfeweb/services/nfeconsulta2.asmx"
xmldoc:open("POST", url, .F.)
XML

Código: Selecionar todos

  Texto := '<?xml version="1.0" encoding="utf-8"?>'
  Texto := Texto + '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">'
  Texto := Texto +   '<soap12:Header>'
  Texto := Texto +     '<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2">'
  Texto := Texto +       '<cUF>35</cUF>'
  Texto := Texto +       '<versaoDados>2.00</versaoDados>'
  Texto := Texto +     '</nfeCabecMsg>'
  Texto := Texto +   '</soap12:Header>'
  Texto := Texto +   '<soap12:Body>'
  Texto := Texto +     '<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2">'
  Texto := Texto +       '<consSitNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">'
  Texto := Texto +         '<tpAmb>1</tpAmb>'
  Texto := Texto +         '<xServ>CONSULTAR</xServ>'
  Texto := Texto +         '<chNFe>43100391250902000131550010001128780001128786</chNFe>'
  Texto := Texto +       '</consSitNFe>'
  Texto := Texto +     '</nfeDadosMsg>'
  Texto := Texto +   '</soap12:Body>'
  Texto := Texto +'</soap12:Envelope>'
SOAPAction

Código: Selecionar todos

xmldoc:setRequestHeader("SOAPAction", "http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeConsultaNF2")
vamos ver se algum dia dessa semana descubro como assinar, o que deve ser facil creio eu, duro é arrumar tempo para essas coisas hehehe
[]s
Fernando
projeto hbNFe NFe para [x]Harbour venha fazer parte do time http://www.pctoledo.com.br/forum/viewforum.php?f=54
Harbour 3.2 + Hwgui (HBIDE)
Avatar do usuário
momente
Usuário Nível 3
Usuário Nível 3
Mensagens: 496
Registrado em: 03 Mar 2005 11:53
Localização: São Carlos-SP
Contato:

webservice harbour nfe status servico

Mensagem por momente »

Poxa cara que legal,

Acho que se todo mundo se unir, vamos chegar lá.

valeu pela contribuição
Rogerio L. Momenté
Nada é tão perfeito que não possamos melhorar.
Nunca se explique. Seus amigos não precisam e seus inimigos não vão acreditar.
www.looksystem.com.br
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

webservice harbour nfe status servico

Mensagem por marcos.gurupi »

Mas isso somente em harbour ? Se for possivel em xhb qual a versao?

Marcos Roberto.
Marcos Roberto
NetService Software
athayde
Colaborador
Colaborador
Mensagens: 166
Registrado em: 14 Fev 2007 16:54

webservice harbour nfe status servico

Mensagem por athayde »

fiz em harbour pq eu uso ele
mas o xharbour suporta OLE tambem voce deu uma olhada no código?

[]s
Fernando
projeto hbNFe NFe para [x]Harbour venha fazer parte do time http://www.pctoledo.com.br/forum/viewforum.php?f=54
Harbour 3.2 + Hwgui (HBIDE)
Responder