WebService NFSe

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 NFSe

Mensagem por athayde »

Para aqueles que tem clientes com prefeituras como a de Penápolis/SP que utilizam o issonline da "assessor publico"
WebService sem SSL, e sem Certificado, apenas com XML, usuario e senha

Código: Selecionar todos

xmldom = win_oleCREATEOBJECT("MSXML2.DOMDocument.5.0")
xmldom:async = .T.
xmldom:validateOnParse  = .T.
xmldom:resolveExternals := .T.
xmldom:preserveWhiteSpace = .T.

url := "http://189.1.164.238:8080/issonline/servlet/anfse"  //webservice de Penápolis
xmldoc = win_oleCREATEOBJECT("MSXML2.XMLHTTP.6.0")
xmldoc:open("POST", url, .F.)
xmldoc:setrequestheader("Content-Type","application/x-www-form-urlencoded")
xmldoc:setRequestHeader("SOAPAction", "nfseaction/ANFSE.Execute" )

  Texto := '<?xml version="1.0" encoding="ISO-8859-1"?>'
  Texto += '<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"';
                                   + ' xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="nfse" xmlns:wsdlns="nfse" xmlns:tns1="ISS">'
  Texto += '<SOAP-ENV:Body>'
  Texto +=  '<wsdlns:Nfse.Execute xmlns:wsdlns="nfse">'
  Texto +=    '<wsdlns:Operacao>'+cOperacao+'</wsdlns:Operacao>'
  Texto +=    '<wsdlns:Usuario>'+cCNPJ+'</wsdlns:Usuario>'           
  Texto +=    '<wsdlns:Senha>'+cSenha+'</wsdlns:Senha>'
  Texto +=    '<wsdlns:Webxml>'
  Texto +=       '<NFSE>'                                       // para quem não sabe usa-se < para < e > para >, pois é um xml dentro de outro 
  Texto +=          '<IDENTIFICACAO>                     // então usa-se dessa maneira para não terminar a tag prematuramente
  Texto +=             '<INSCRICAO>76337</INSCRICAO>'
  Texto +=             '<LOTE>18</LOTE>'
  Texto +=             '<SEQUENCIA>9</SEQUENCIA>'
  Texto +=          '</IDENTIFICACAO>'
  Texto +=       '</NFSE>'
  Texto +=    '</wsdlns:Webxml>'
  Texto +=  '</wsdlns:Nfse.Execute>'
  Texto += '</SOAP-ENV:Body>'
  Texto += '</SOAP-ENV:Envelope>'

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
? "text "+xmldom:text
? "XML1 "+xmldom:xml
xmldoc:send(xmldom:xml)
?
do while xmldoc:readyState <> 4
  ?? ALLTRIM(STR(xmldoc:readyState))
  millisec(50)
enddo
? "Resposta"
? "TEXT "+xmldoc:responseText
? "XML "+ xmldoc:responseXML:xml
ps: quem puder ajudar na seleção do certificado digital ajude no outro tópico meu sobre webservice com certificado e ssl, falta pouco e vai ajudar bastante nos casos de nfse com layout abrasf
[]s
Fernando Athayde
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)
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

WebService NFSe

Mensagem por Mário Isa »

isso é em xharbour?
dá prá acessar qualquer prefeitura ? ou é só a de Penápolis ?
:-o
athayde
Colaborador
Colaborador
Mensagens: 166
Registrado em: 14 Fev 2007 16:54

WebService NFSe

Mensagem por athayde »

Cada prefeitura é um esquema, tem algumas empresas que prestam o serviço do sistema de NFSe para eles
então existem alguns padrões esse por exemplo é o assessor publico
mas com esse exemplo é possivel utilizar para outras que não requetem SSL e certificado digital
para as que requerem voce vai ter que usar o exemplo do webservice status nfe que postei no forum também

eu uso o harbour mas da para usar o xharbour também vide que é tudo OLE

[]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)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

WebService NFSe

Mensagem por alxsts »

Olá!

Alguém poderia informar quais includes / libs são necessárias para que o código do exemplo acima funcione?

Tentei compilar com xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 9448) mas estou com o erro:

Código: Selecionar todos

d:\bcc55\BIN\ilink32 @makefile.lnk
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_WIN_OLECREATEOBJECT' referenced from D:\TESTEXHB\TESTHTTPS.OBJ
Includes que utilizei:

Código: Selecionar todos

#include "common.ch"
#include "hbclass.ch"
#include "hbwin.ch"
#include "hbcompat.ch"
Grato
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

WebService NFSe

Mensagem por alxsts »

Olá!

Outra coisa: isso funciona com HTTPS? ou só com HTTP? Em caso negativo, qual objeto deve ser usado?

Grato mais uma vez.
[]´s
Alexandre Santos (AlxSts)
Mário Isa
Usuário Nível 4
Usuário Nível 4
Mensagens: 907
Registrado em: 07 Jul 2004 13:54
Localização: Ilha Solteira-sp

WebService NFSe

Mensagem por Mário Isa »

Isso funcionou prá vocês ??
:-o
Avatar do usuário
zazibr
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 11 Set 2004 17:07
Localização: Campo Grande/MS

WebService NFSe

Mensagem por zazibr »

uma outra solução é utilizar a dll da flexdocs
Responder