Nfe v2 - tutorial 1

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á. :smiley:
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 :smiley: )

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:

[code]Message enviada
com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl@201f9
in :

<?xml version="1.0" encoding="utf-8"?>2.0042242STATUS

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:Header422.00</soap:Header>soap:Body2SVRS20110111103240107Servico
em
Operacao422011-03-03T17:36:431</soap:Body></soap:Envelope>
[/code]

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

1 curtida

mto bom, gostei da ideia

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

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

[quote=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[/quote]

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:

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?