Duvidas NFe Importante

Pessoal primeiramente não sei se ja existe algum topico criado sobre isso,

Se ja existe pesso desculpas e se possivel move-lo…

Estou meio perdido,

Alguem pode me responder qual o procedimento

que preciso efetuar para começar a desenvolver

o projeto de NFe em Java?? O que a legislação pede…

Como desenvolver, Quais critérios seguir…

Webservicer, Assinaturas, etc

Essas coisas, Obrigado pela atenção

TheKill,

de uma olhada neste tópico: http://www.guj.com.br/posts/list/52035.java
no final da primeira página e no primeiro tópico da segunda página eu coloqui um mini tutotial para comunicação com o SEFAZ.

Baixe o manual da NFE no site da fazenda e siga esse tutorial… já é um bom começo

Estava lendo agora mesmo…

Ainda sim bastantes duvidas =/

Teria possibilidade de estudar seu código??

Obrigado novamente pela atenção

A primeira coisa a fazer é pegar a documentação oficial no site da receita, especificamente o “Manual de Integração do Contribuinte”.
Tudo que voce precisa saber tem nele, de resto o topico citado pelo colega.

http://www.nfe.fazenda.gov.br/portal/Default.aspx

Olha TheKill o código do projeto NFe é da empresa que eu trabalho então eu não posso te passar não… mas da uma olhada no código que coloquei no tópico que eu te falei. Tenta implementar ele por ali vc já vai ter uma boa base. e como fredferrao falou baixa o manual da receita e leia isso é muito importante.

Amigo esta parte de código é sobre o Status Serviço apenas?
Tem haver com a nota também??

[quote=rafaelbtz]Bom dia farzac, é o seguinte a ordem das coisas é:
Obter o Certificado Digital (no meu caso um arquivo .pfx que o meu cliente obteve junto a receita) - Gerar o XML - Assinar o XML (com o certificado .pfx) - Validar o XML no Schema (.XSD) - Enviar o XML pro SEFAZ.

Como eu fiz aqui:
Gerei, Assinei o XML e validei no Schema, e depois pra testar eu usei o programa Emissor de NF obtido no site http://www.nfe.fazenda.gov.br/portal/default.aspx - link downloads. Assim que eu consegui importar e enviar o meu XML via esse emissor do governo eu vi que a nota estava OK (Atenção, para conseguir importar o XML neste programa é preciso colocar o valor “3” na tag procEmi e o valor “TESTE 1.1.21” na tag verProc do XML). Ai eu parti para consumir o WebService:

Web Service (esse eu sofri, hehe), (por enquanto eu só testei a comunicação através do WebService StatusServico, ainda não enviei nenhum XML pois agora estou estruturando a aplicação inteira, mas se o StatusServiço funcionou e se eu consegui enviar a NF via o emissor do governo acho que não vou ter problemas para enviar via WebService):

Passo a Passo:
Baixar os arquivos .WSDL junto a receita do seu estado (no meu caso SP que fica em http://www.fazenda.sp.gov.br/nfe/url_webservices/url_webservices.asp), baixe neste mesmo link o arquivo da chave pública do Web-Service em SP esses são 2 arquivos com extensão .p7b um para Homologação outro para produção.

Passo a Passo:

  1. Com os arquivos WSDL crie as classes .java para acesso ao WebService - Eu não sei como isso funciona no NetBeans já que eu uso eclipse, mas de uma procurado no Google por “WSDL to Java on NetBeans” que com certeza vc vai achar ele vai criar umas 6 classes para cada arquivo .WSDL (por enquanto eu só criei para o WSDL do StatusServico);

  2. Instale no seu Windows a chave publica (.p7b) baixada do site da receita estadual, depois de instalar vai no Internet Explorer -> Ferramentas -> Opções da internet -> (Aba) Conteúdo -> (botão) certificados -> (Aba) outras pessoas; a chave instalada deve estar ai, selecione ela e clique no botão Exportar; na tela da exportação marque o RadioButton X.509 codificado na base 64 (*.cer) informe o arquivo com extensão .cer;

  3. Importe esta chave pública que vc exportou no IE para um keystore do Java com a ferramenta Keytool: via DOS va até a pasta bin da sua JRE e execute o seguinte comando: keytool -import -alias nfe -keystore <caminho_para_um_keystore Ex: c:\certificados\nfe.keystore> -file <caminho_completo_para_o_cert_exportado_do_IE ( arquivo .cer)>, esse comando irá gerar um arquivo que no exemplo é c:\certificados\nfe.keystore

  4. Agora é só ir pro JAVA, vamos la ( o exemplo é para verificar o Status do Serviço, para cada WebService existe um layout de mensagem diferente você pode ver isso no manual de integração que você encontra em http://www.nfe.fazenda.gov.br/portal/default.aspx), classe Java para verificar o Status é essa aqui:

public static void main(String[] args) {
   
         //Esse é o layout para o cabeçalho e rodapé para o Status do Serviço conforme o manual de integração explica
        String nfeCabecMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
            + "<cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" "
            + "versao=\"1.02\">" + "<versaoDados>1.07</versaoDados>"
            + "</cabecMsg>";
        String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
            + "<consStatServ " + " versao=\"1.07\""
            + " xmlns=\"http://www.portalfiscal.inf.br/nfe\">"
            + "<tpAmb>2</tpAmb>" + "<cUF>42</cUF>"
            + "<xServ>STATUS</xServ>" + "</consStatServ>";

       
       
       
        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:\\certificados\\cert.pfx");//Aqui vem o arquivo do certificado do seu cliente
        System.setProperty("javax.net.ssl.keyStorePassword", "SENHA DO CERTIFICADO");//Aqui a senha deste certificado

        System.setProperty("javax.net.ssl.trustStoreType", "JKS");
        System.setProperty("javax.net.ssl.trustStore", "C:\\certificados\\nfe.keystore");//Aqui vem o arquivo criado através do comando keytool no passo 3

       
        // As classes abaixo são as classes geradas atavés do arquivo WSDL no passo 1
        NfeStatusServico service = new NfeStatusServicoLocator();
        try {
            NfeStatusServicoSoap nfeStatus = service.getNfeStatusServicoSoap();
            System.out.println(nfeStatus.nfeStatusServicoNF(nfeCabecMsg, nfeDadosMsg));// O retorno deve ser um XML com o status do serviço
        } catch (Throwable e1) {
            e1.printStackTrace();
        }
    }

É isso ai para enviar a nota deve ser mais ou menos o mesmo procedimento alterando obviamente o layout da mensagem que pode ser encontrado la no manual de integração.

É isso ai espero ter ajudado, qualquer coisa é só perguntar

Obs: acho que foi vc que me mandou um email, mas todo caso se não foi estou colocando a resposta aqui também)

[/quote]

Apenas Status, mas se você seguir cetinho os passos que digo ai é só vc criar as classes para os outros WEBServices (gerados a partir dos arquivos WSDL que vc baixa no site do SEFAZ), e chamar a classe proserviço que vc quiser (envio de NFE, Consulta Protocolo, etc)

Hum, acho que estou começando a entender um pouco melhor…

É que não possuo ainda chave .psx pra fazer testes… E também trabalhar com webservices é novidade para mim…

Sendo que na legislação, Manual de Integração… ta complicado de entender os exemplos com códigos XML pela metade…

Nao tem nem exemplo de XML de envioNFE… por exemplo no envioNFE tem que ter os dados completos da Nota certo?

[quote=TheKill]Hum, acho que estou começando a entender um pouco melhor…

É que não possuo ainda chave .psx pra fazer testes… E também trabalhar com webservices é novidade para mim…

Sendo que na legislação, Manual de Integração… ta complicado de entender os exemplos com códigos XML pela metade…

Nao tem nem exemplo de XML de envioNFE… por exemplo no envioNFE tem que ter os dados completos da Nota certo?[/quote]

Esquecas os exemplos XML do manual, leia todo o resto.

Sugiro que pesquise sobre JAXB, não va me gerar todos os xml na mão pelo amor de deus.
La no site da receita baixa o pacote contendo os XSD.

Estou estudando ainda sobre NF-e