tutorial acessando web service nfe
TRANSCRIPT
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 Serviço Acessar a lista de webservices da NFe:
Homologação: http://hom.nfe.fazenda.gov.br/PORTAL/WebServices.aspx
Produção: http://www.nfe.fazenda.gov.br/portal/WebServices.aspx
Escolher a URL do serviço desejado relacionado ao Estado e Versão da NFe.
Acesse a URL escolhida através do navegador:
Será solicitado o certificado A1 conforme imagem acima.
Ao acessar a URL do serviço, solicite a descrição do serviço(arquivo .wsdl) no nosso exemplo é só clicar em “Service Description”.
Acima o arquivo .wsdl
Salve essa página na extensão .wsdl:
2° Passo – Importando o .wsdl para o Eclipse Abrir o Eclipse:
Optei por criar um novo projeto dinâmico web mas não é obrigatório:
Criar um diretório “wsdl” dentro da estrutura \webcontent\WEB-INF\
Importar o arquivo salvo anteriormente para o recém criado diretório:
Arquivo .wsdl aberta através do Eclipse:
3° Passo - Gerando o Cliente do Serviço Clique com o botão 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 serão importados os .jars necessário para o Client e também serão geradas as classes necessárias para a comunicação com o WebService:
4° Passo – A Classe ClienteNFe Agora crie a classe que será a responsável pela comunicação:
A classe já pronta com o código necessário:
E o código:
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 não tratei a maneira como o qual o .xml do cabeçalho e dos dados foram montados.
Apenas com o código acima já é possível obter a reposta do serviço, no presente exemplo consultei apenas o status do serviço para SP , versão 1.10 , ambiente de homologação:
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><xMotivo>Serviço Paralisado sem Previsão</xMotivo><cUF>35</cUF><dhRecbto>2010-09-21T17:17:44</dhRecbto><tMed>9999</tMed></retConsStatServ>
5° Passo – Montando o Keystore Depois de instalar o certificado A1 acesse o navegador e localize as opções para exportar.
Após clicar no botão Exportar segue o famoso next, next, finish:
Não necessário exportar a chave privada:
Selecione o tipo X.509 codificado na base 64 (*.cer):
Informe um diretório de fácil acesso:
Confirme as preferências e conclua a operação:
Dentro da pasta “Bin” do jre ou jdk execute o comando necessário 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 = diretório aonde será criado o keystore;
C:\\certs\\certificado.cer = diretório aonde foi salvo o certificado exportado;
Através do prompt de commando:
Informe e confirme a senha para o keystore:
Informe “sim” para confirmar a adição do certificado ao keystore:
Pronto Keystore gerado com sucesso, conforme o exemplo apresentado a classe criada anteriormente ClienteNFE deve funcionar sem problemas.