You are on page 1of 17

Tutorial acessando WebService NFE

21/09/2010 Autor: Pedro H. B. Alves

@pedruhenrik

Material utilizado:
Eclipse Helios + WTP; JDK 1.6 update 21; Tomcat 7.0; Windows 7 Home Basic; Internet Explorer 8; Certificado A1 instalado no computador;

1 Passo Localizando o Servio


Acessar a lista de webservices da NFe: Homologao: http://hom.nfe.fazenda.gov.br/PORTAL/WebServices.aspx Produo: http://www.nfe.fazenda.gov.br/portal/WebServices.aspx

Escolher a URL do servio desejado relacionado ao Estado e Verso da NFe. Acesse a URL escolhida atravs do navegador:

Ser solicitado o certificado A1 conforme imagem acima.

Ao acessar a URL do servio, solicite a descrio do servio(arquivo .wsdl) no nosso exemplo s clicar em Service Description.

Acima o arquivo .wsdl Salve essa pgina na extenso .wsdl:

2 Passo Importando o .wsdl para o Eclipse


Abrir o Eclipse:

Optei por criar um novo projeto dinmico web mas no obrigatrio:

Criar um diretrio wsdl dentro da estrutura \webcontent\WEB-INF\

Importar o arquivo salvo anteriormente para o recm criado diretrio:

Arquivo .wsdl aberta atravs do Eclipse:

3 Passo - Gerando o Cliente do Servio


Clique com o boto direito em cima do arquivo .wsdl e localize o menu Web Services, selecione o sub menu Generate Client:

Altere o tipo de cliente para Install Client :

Automaticamente sero importados os .jars necessrio para o Client e tambm sero geradas as classes necessrias para a comunicao com o WebService:

4 Passo A Classe ClienteNFe


Agora crie a classe que ser a responsvel pela comunicao:

A classe j pronta com o cdigo necessrio:

E o cdigo:
import java.security.Security; import br.inf.portalfiscal.www.nfe.wsdl.NfeStatusServico.NfeStatusServicoLocator; import br.inf.portalfiscal.www.nfe.wsdl.NfeStatusServico.NfeStatusServicoSoap; public class ClienteNFE { public static void main(String[] args) { try { System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true"); System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol"); Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); System.setProperty("javax.net.ssl.keyStoreType", "PKCS12"); System.setProperty("javax.net.ssl.keyStore","C:\\NFE\\certificado.pfx"); System.setProperty("javax.net.ssl.keyStoreAlias", "AliasdoCertificado"); System.setProperty("javax.net.ssl.keyStorePassword", "SenhadoCertificado"); System.setProperty("javax.net.ssl.trustStoreType", "JKS"); System.setProperty("javax.net.ssl.trustStore","C:\\NFE\\KEYSTORE\\nfe.keystore"); NfeStatusServicoLocator locator = new NfeStatusServicoLocator(); NfeStatusServicoSoap service = locator.getNfeStatusServicoSoap(); String nfeCabecMsg = null; String nfeDadosMsg = null; System.out.println(service.nfeStatusServicoNF(nfeCabecMsg, nfeDadosMsg)); } catch (Exception e) { System.out.println(e.getMessage()+ " " + e.getCause()); } } }

Perceba que no tratei a maneira como o qual o .xml do cabealho e dos dados foram montados. Apenas com o cdigo acima j possvel obter a reposta do servio, no presente exemplo consultei apenas o status do servio para SP , verso 1.10 , ambiente de homologao: Retorno: <?xml version="1.0" encoding="UTF-8"?><retConsStatServ
xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.07"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_005e</verAplic><cStat>109</cStat><xM otivo>Servio Paralisado sem Previso</xMotivo><cUF>35</cUF><dhRecbto>2010-0921T17:17:44</dhRecbto><tMed>9999</tMed></retConsStatServ>

5 Passo Montando o Keystore


Depois de instalar o certificado A1 acesse o navegador e localize as opes para exportar.

Aps clicar no boto Exportar segue o famoso next, next, finish:

No necessrio exportar a chave privada:

Selecione o tipo X.509 codificado na base 64 (*.cer):

Informe um diretrio de fcil acesso:

Confirme as preferncias e conclua a operao:

Dentro da pasta Bin do jre ou jdk execute o comando necessrio para gerar o Keystore: keytool -import -alias aliasCertificado -keystore C:\\NFE\\KEYSTORE\\nfe.keystore -file C:\\certs\\certificado.cer

O que o que: aliasCertificado = o apelido para o certificado exportado dentro do keystore; C:\\NFE\\KEYSTORE\\nfe.keystore = diretrio aonde ser criado o keystore; C:\\certs\\certificado.cer = diretrio aonde foi salvo o certificado exportado;

Atravs do prompt de commando:

Informe e confirme a senha para o keystore:

Informe sim para confirmar a adio do certificado ao keystore:

Pronto Keystore gerado com sucesso, conforme o exemplo apresentado a classe criada anteriormente ClienteNFE deve funcionar sem problemas.