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
TheKill
Estava lendo agora mesmo…
Ainda sim bastantes duvidas =/
Teria possibilidade de estudar seu código??
Obrigado novamente pela atenção
fredferrao
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.
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.
TheKill
Amigo esta parte de código é sobre o Status Serviço apenas?
Tem haver com a nota também??
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:
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);
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;
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
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:
publicstaticvoidmain(String[]args){//Esse é o layout para o cabeçalho e rodapé para o Status do Serviço conforme o manual de integração explicaStringnfeCabecMsg="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+"<cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" "+"versao=\"1.02\">"+"<versaoDados>1.07</versaoDados>"+"</cabecMsg>";StringnfeDadosMsg="<?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(newcom.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 clienteSystem.setProperty("javax.net.ssl.keyStorePassword","SENHA DO CERTIFICADO");//Aqui a senha deste certificadoSystem.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 1NfeStatusServicoservice=newNfeStatusServicoLocator();try{NfeStatusServicoSoapnfeStatus=service.getNfeStatusServicoSoap();System.out.println(nfeStatus.nfeStatusServicoNF(nfeCabecMsg,nfeDadosMsg));// O retorno deve ser um XML com o status do serviço}catch(Throwablee1){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)
rafaelbtz
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)
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?
fredferrao
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?
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.