tutorial acessando web service nfe

17
Tutorial acessando WebService NFE 21/09/2010 Autor: Pedro H. B. Alves @pedruhenrik

Upload: elton-dall-agnol

Post on 04-Jul-2015

2.248 views

Category:

Documents


32 download

TRANSCRIPT

Page 1: Tutorial Acessando Web Service NFE

Tutorial acessando WebService NFE

21/09/2010

Autor: Pedro H. B. Alves

@pedruhenrik

Page 2: Tutorial Acessando Web Service NFE

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;

Page 3: Tutorial Acessando Web Service NFE

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:

Page 4: Tutorial Acessando Web Service NFE

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”.

Page 5: Tutorial Acessando Web Service NFE

Acima o arquivo .wsdl

Salve essa página na extensão .wsdl:

Page 6: Tutorial Acessando Web Service NFE

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:

Page 7: Tutorial Acessando Web Service NFE

Criar um diretório “wsdl” dentro da estrutura \webcontent\WEB-INF\

Importar o arquivo salvo anteriormente para o recém criado diretório:

Page 8: Tutorial Acessando Web Service NFE

Arquivo .wsdl aberta através do Eclipse:

Page 9: Tutorial Acessando Web Service NFE

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 :

Page 10: Tutorial Acessando Web Service NFE

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:

Page 11: Tutorial Acessando Web Service NFE

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:

Page 12: Tutorial Acessando Web Service NFE

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>

Page 13: Tutorial Acessando Web Service NFE

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:

Page 14: Tutorial Acessando Web Service NFE

Não necessário exportar a chave privada:

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

Page 15: Tutorial Acessando Web Service NFE

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

Page 16: Tutorial Acessando Web Service NFE

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:

Page 17: Tutorial Acessando Web Service NFE

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.