Página 1 de 1

WebService NFSe

Enviado: 12 Mai 2011 21:30
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

WebService NFSe

Enviado: 14 Mai 2011 18:38
por Mário Isa
isso é em xharbour?
dá prá acessar qualquer prefeitura ? ou é só a de Penápolis ?
:-o

WebService NFSe

Enviado: 16 Mai 2011 11:10
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

WebService NFSe

Enviado: 14 Jan 2013 19:12
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

WebService NFSe

Enviado: 14 Jan 2013 19:14
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.

WebService NFSe

Enviado: 30 Jul 2014 17:09
por Mário Isa
Isso funcionou prá vocês ??
:-o

WebService NFSe

Enviado: 30 Jul 2014 18:17
por zazibr
uma outra solução é utilizar a dll da flexdocs