Nfe v2 - tutorial 1

5 respostas
K

Pessoal,

Como não sou membro com "moral" para colocar tópico na seção de tutoriais, vou deixar por enquanto aqui,
se alguém quiser, podem mover pra lá. :D
A ideia aqui é ajuda e ser ajudado.
Até este ponto já está 100% funcionando, então vou postar um passo a passo (bem mastigado) pra quem tiver enfrentando problemas.
Espero que alguma alma possa contribuir com este roteiro também.

Escopo deste tutorial:
- instalação dos certificados
- criação do repositório de chaves (keystore)
- consulta do web service NfeStatusServico2

Arquivos/Classes que fazem parte deste tutorial:

Arquivo 1) Arquivo com o certificado digital do ambiente de homologação da Sefaz Virtual:
https://homologacao.nfe.sefaz.rs.gov.br/Certificado_AC_NFE.SEFAZ.RS.p7b

Arquivo 2) PFX2JKSProgram.java - classe que importa as chaves para dentro do repositório de chaves (keystore)

Bom vamos lá:

Instalação do certificado da sefaz:
Abra o IE (Internet Explorer) -> Ferramentas -> Opções de Internet -> Conteúdo -> Certificados
Importar e escolha o arquivo que você baixou do site da SEFAZ (Arquivo 1)
** Por padrão será armazenado na aba "Outras Pessoas" (pelo menos no meu aqui :D )

Exportação dos certificados:
Agora vamos exportar os certificados, inclusive de toda a cadeia.
Vai na aba Outras Pessoas e exporte os três certificados (escolha X.509 codificado na base 64(*.cer)):
"Autoridade Certificadora do SERPRO Final v2" para um arquivo em c:\certificados\nf1.cer
"Autoridade Certificadora Raiz Brasileira v1" para um arquivo em c:\certificados\nf2.cer
"Autoridade Certificadora SERPRO v2" para um arquivo em c:\certificados\nf3.cer

Criação do nosso keystore:
Saia para o prompt do MS-DOS (para os antigos) ou Prompt de Comando para os novatos:
keytool -genkey -alias nfe -keyalg RSA -keypass 123456 -storepass 123456 -keystore c:/certificados/nfe.jks -dname "cn=NOMEDASUAEMPRESA, ou=Desenvolvimento, o=EMPRESA, l=Cidade, S=DF, c=BR" -validity 365

Agora importar os certificados para dentro do seu keystore:
Ainda no prompt de comando:
keytool -importcert -alias nfe1 -keystore c:/certificados/nfe.jks -file c:/certificados/nf1.cer -storepass 123456
keytool -importcert -alias nfe2 -keystore c:/certificados/nfe.jks -file c:/certificados/nf2.cer -storepass 123456
keytool -importcert -alias nfe3 -keystore c:/certificados/nfe.jks -file c:/certificados/nf3.cer -storepass 123456

Agora os certificados estão instalados.

Agora vamos importar os certificados/chaves que estão dentro do seu arquivo A1 (.PFX) para dentro do seu
keystore:

Para isso basta executar a classe PFX2JKSProgram.java que está anexo neste tutorial.
Antes de executar a classe, abra o arquivo e altere algumas informações, pois dentro desta classe,
no método main, voce terá que informar os dados do seu certificado, como por exemplo:

Considerando que seu arquivo PFX chama-se JUREMA.PFX e está em c:\certificados
altere as variaveis:

certificadoPFX = "c:\certificados\JUREMA.PFX"
passwordPFX = "123456"

Após rodar esta classe, seu keystore estará com todas as informações pra rodar seu primeiro webservice (NfeStatusServico2)

Testando o webservice:

Agora basta rodar a classe NfeStatusServico2Soap e sair para o abraço, o resultado deverá ser:

Message enviada 
com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl@201f9
in :
<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"><soap12:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><versaoDados>2.00</versaoDados><cUF>42</cUF></nfeCabecMsg></soap12:Header><soap12:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><cUF>42</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></soap12:Body></soap12:Envelope>
out :
<?xml
version="1.0"
encoding="utf-8"?><soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><nfeCabecMsg
xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><cUF>42</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeStatusServicoNF2Result
xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><retConsStatServ
versao="2.00"
xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><verAplic>SVRS20110111103240</verAplic><cStat>107</cStat><xMotivo>Servico
em
Operacao</xMotivo><cUF>42</cUF><dhRecbto>2011-03-03T17:36:43</dhRecbto><tMed>1</tMed></retConsStatServ></nfeStatusServicoNF2Result></soap:Body></soap:Envelope>

Note que no final do XML de retorno, tem uma MSG "Servico em Operacao", isso significa que deu certo e que o serviço está em operação

Bom,

Espero logo postar mais novidades.
Agora vou para o NfeRecepcao2

5 Respostas

P

mto bom, gostei da ideia

D

o que mudaria se no lugar do certificado A1 , fosse um A3 Token??

V

Cara o meu da esse erro aqui:

Message enviada
com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl@201f9
java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
08/06/2011 15:53:37 com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
SEVERE: SAAJ0009: Message send failed

K

valkkefast:
Cara o meu da esse erro aqui:

Message enviada
com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl@201f9
java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
08/06/2011 15:53:37 com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
SEVERE: SAAJ0009: Message send failed

Essas msgs da nfe são muito boas né?!

Eu já tive isso ai com o cabeçalho do meu xml errado!
Me matei pra descobrir isso quase 2 dias. :smiley:

P

Estou começando a idealizar uma implementação para NFe e cheguei a este tutorial, desculpe minha ignorancia e meu atraso rs, mas qual é o arquivo PFX?

Criado 3 de março de 2011
Ultima resposta 27 de mar. de 2014
Respostas 5
Participantes 5