Nota fiscal eletronica em java

33 respostas
E

Boa noite, galera.
Acabei de me cadastrar no forum e me perdoem se eu cometer alguma gafe.
O fato é que, terminei um curso tecnico em informatica com habilitação em desenvolvimento de sistemas e consegui o meu primeiro cliente.
O problema é que o meu cliente precisa se adequar a nota fiscal eletronica. Pesquisei sobre o funcionamento desta nota, mas a sua concepção ainda me é muito vaga.
Gostaria de saber o que preciso fazer passo a passo, pois estou meio perdido. Tenho que fazer um modulo de vendas no software que vou criar e pensei que, após gerar a venda quando necessitasse gerar a nf-e apenas recuperaria os dados desta venda no banco de dados e geraria o xml destes dados.
Será que alguém pode me ajudar.
Preciso desenvolver isto em java.

Abraços!!!

33 Respostas

L

Cara … vc tem que entrar no site da secretaria da fazenda, e procurar pelos pdfs com as regras para desenvolvimento deste módulo… vai te dar um trabalhinho…he he he
lá vc acha também um programa em java que faz o trabalho de validação e geração do xml…

A

Bem basicamente, é isso. Pode-se gerar a DANFE (Documento Auxiliar da NFe) também.

Você tem que atender a diversas restrições que a Secretaria da Fazenda impõe. Essas restrições você encontra no site da SEFAZ. Lá tem uns manuais (os chamados Manuais de Integração) que dizem quais campos devem ir no XML, o tamanho de cada campo, o tipo e se é obrigatório ou não. Apesar de ser bem formal, é fácil de entender grande parte do que tá escrito lá.

E, de uma forma ou de outra, não vai ter como escapar da leitura do manual. Para dar manutenção, por exemplo, alguns campos se tornam obrigatórios. Assim, você frequentemente vai consultar a lista de tags e o conteúdo do Manual.

Pra dar um auxílio, pode usar o validador do RS com os xmls gerados pelo seu programa.

F

A primeira coisa é ler o Manual de Integração do Contribuinte, LEITURA OBRIGATÓRIA.

Depois disso quando tu começar a implementação e estiver sofrenndo com os xml’s, certificados e assinatura dos arquivos voce pode ver alguns topicos aqui do GUJ, onde isto foi amplamente discutido, com exemplos e tudo, achei estes aqui numa busca rapida no google, deve ter mais:

http://www.guj.com.br/posts/list/83758.java
http://www.guj.com.br/posts/list/52035.java
http://www.guj.com.br/posts/list/110442.java

Estes tres acho que são os maiores, e ainda tem as API’s prontas como a da caelum que nem sei se terminaram, veja aqui: http://www.guj.com.br/posts/list/135161.java, tem um outro cara que fez uma tambem

E

valeu Fred,
Estou lendo o manual de integração e assim que eu terminar vou dar uma olhada nos links que vc me passou.

t+

F

Só por curiosidade, essa NF-e é de produtos ou serviços?

F

Produtos.

G

Não perca tempo reinventando a roda, ainda mais sendo o seu primeiro projeto. Use o Uninfe ou o ACBrNFe. Depois que já estiver rodando, caso se interesse, implemente você mesmo o que estas ferramentas fazem. Apesar da linguagem principal dos dois, C# e Delphi, você pode integrar o seu sistema usando Java sem problemas.

S

Bom dia pessoal, preciso desenvolver uma solução para gerar e transmitir notas fiscais eletrônicas,estou com algumas dúvidas, ainda não sei o que realmente fazer pois como a receita já possui um sistema para transmitir nfe (http://www.nfe.fazenda.gov.br/portal/emissor.aspx), então estava querendo somente criar um sistema para gerar o xml das notas e utilizar este da receita para transmitir, mas não sei se esta seria uma boa solução, então aí estão as dúvidas, este sistema da receita consegue validar e transmitir as notas perfeitamente? Devo utilizá-lo ou criar um outro para fazer isto?
O que devo fazer?

Se puderem me ajudar ficaria grato.

atenciosamente,

Samuel

M

Senhores, boa tarde.

Estou desenvolvendo, também, um aplicativo de NFe, e durante minhas pesquisas encontrei um blog muito legal que nos dá informações e tutoriais sobre o mesmo.

Então gostaria de compartilhar no fórum.

Abaixo segue o link.

http://www.caiooliveira.com.br

E abaixo um cronograma legal para seguir.
http://www.caiooliveira.com.br/?p=230

Att,

F

SamuelJava:
Bom dia pessoal, preciso desenvolver uma solução para gerar e transmitir notas fiscais eletrônicas,estou com algumas dúvidas, ainda não sei o que realmente fazer pois como a receita já possui um sistema para transmitir nfe (http://www.nfe.fazenda.gov.br/portal/emissor.aspx), então estava querendo somente criar um sistema para gerar o xml das notas e utilizar este da receita para transmitir, mas não sei se esta seria uma boa solução, então aí estão as dúvidas, este sistema da receita consegue validar e transmitir as notas perfeitamente? Devo utilizá-lo ou criar um outro para fazer isto?
O que devo fazer?

Se puderem me ajudar ficaria grato.

atenciosamente,

Samuel

Cara… Trabalho pra um rapaz que tem um sistema em xHarbour e ele faz simplmesmenteo seguinte, gera um arquivo .txt mesmo e importa no emissor gratuito da sefaz, lá ele assina, valida e transmite normalmente todas as notas sem problema algum a ñ ser que falte alguma informação obrigatória no próprio arquivo de texto… e quando falta, vc consegue ver o que falta pelo próprio emissor…
qualquer coisa da uns toqs aee…

F

fael.programer:
SamuelJava:
Bom dia pessoal, preciso desenvolver uma solução para gerar e transmitir notas fiscais eletrônicas,estou com algumas dúvidas, ainda não sei o que realmente fazer pois como a receita já possui um sistema para transmitir nfe (http://www.nfe.fazenda.gov.br/portal/emissor.aspx), então estava querendo somente criar um sistema para gerar o xml das notas e utilizar este da receita para transmitir, mas não sei se esta seria uma boa solução, então aí estão as dúvidas, este sistema da receita consegue validar e transmitir as notas perfeitamente? Devo utilizá-lo ou criar um outro para fazer isto?
O que devo fazer?

Se puderem me ajudar ficaria grato.

atenciosamente,

Samuel

Cara… Trabalho pra um rapaz que tem um sistema em xHarbour e ele faz simplmesmenteo seguinte, gera um arquivo .txt mesmo e importa no emissor gratuito da sefaz, lá ele assina, valida e transmite normalmente todas as notas sem problema algum a ñ ser que falte alguma informação obrigatória no próprio arquivo de texto… e quando falta, vc consegue ver o que falta pelo próprio emissor…
qualquer coisa da uns toqs aee…

Data da pergunta: 27/04/2010
Data da resposta: 06/02/2013

T

Alguém com o coração bondoso que possa ensinar o processo de negocio da NFE? Preciso implementar isso em um sistema financeiro.

F

Ja leu o manual de integração do contribuinte(agora na versao 5 chamado de: Manual de Orientacao do Contribuinte)?? A primeira coisa a se fazer quando vai implementar a NFe é ler este cara.

Feito isto tu ja vai ter idéia de quais dados e webservices devem ser usados para transmitir a NFe.

Agora vem o teu sistema, ele ja emite nota fiscal normal? Se sim entao ele ja tem todo o processo de emissão de notas, bastando agora mudar para o modelo da NFe, agora se o teu sistema não tem nada disso pronto, AI COMPLICOU, porque isto envolve varias legislações especificas de cada estado, sobre tributação, impostos, etc, etc. A melhor pessoal pra saber disto é um contator, que trabalha com isto e sabe como cada empresa se encaixa e o que e como deve ser enviado na NFe, ou então tem que ler muito a legislação pra pegar tudo.

O resto, se for dúvida técnica, volte aqui no GUJ e procure por NFe, tem uns 2 ou 3 tópicos BEM GRANDES, com tudo que vc precisa saber sobre certificação digital e como fazer a coisa toda.

L

fredferrao:
fael.programer:
SamuelJava:
Bom dia pessoal, preciso desenvolver uma solução para gerar e transmitir notas fiscais eletrônicas,estou com algumas dúvidas, ainda não sei o que realmente fazer pois como a receita já possui um sistema para transmitir nfe (http://www.nfe.fazenda.gov.br/portal/emissor.aspx), então estava querendo somente criar um sistema para gerar o xml das notas e utilizar este da receita para transmitir, mas não sei se esta seria uma boa solução, então aí estão as dúvidas, este sistema da receita consegue validar e transmitir as notas perfeitamente? Devo utilizá-lo ou criar um outro para fazer isto?
O que devo fazer?

Se puderem me ajudar ficaria grato.

atenciosamente,

Samuel

Cara… Trabalho pra um rapaz que tem um sistema em xHarbour e ele faz simplmesmenteo seguinte, gera um arquivo .txt mesmo e importa no emissor gratuito da sefaz, lá ele assina, valida e transmite normalmente todas as notas sem problema algum a ñ ser que falte alguma informação obrigatória no próprio arquivo de texto… e quando falta, vc consegue ver o que falta pelo próprio emissor…
qualquer coisa da uns toqs aee…

Data da pergunta: 27/04/2010
Data da resposta: 06/02/2013

kkkkkkk… Vindo das profundezas…ele ressuscitou…kkkkkk

R

galera alguém pode me ajudar???

Estou tentando rodar essas duas classes.

e da esse erro

Exception in thread "main" javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
	at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
	at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:98)
	at javax.xml.ws.Service.<init>(Service.java:77)
	at br.inf.portalfiscal.nfe.wsdl.nfedownloadnf.NfeDownloadNF.<init>(NfeDownloadNF.java:44)
	at br.inf.portalfiscal.nfe.wsdl.nfedownloadnf.NfeDownloadNFSoap_NfeDownloadNFSoap_Client.main(NfeDownloadNFSoap_NfeDownloadNFSoap_Client.java:48)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
	at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:100)
	at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:199)
	at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
	... 4 more
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'https://hom.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx?wsdl'.: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(Unknown Source)
	at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
	at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
	at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:262)
	at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:205)
	at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:98)
	... 6 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1902)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270)
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1338)
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:154)
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1032)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:515)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1299)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:632)
	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:799)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:237)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)
	... 12 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
	at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
	at sun.security.validator.Validator.validate(Validator.java:260)
	at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
	at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
	at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1320)
	... 30 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
	at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
	at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
	... 36 more
F

rafaelshock:
galera alguém pode me ajudar???

Estou tentando rodar essas duas classes.

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Teu problema esta ai, voce baixou os certificados do site? Importou eles no teu teu keystore? Configurou teu programa para ler e setar o keystore?

R

não sabia sobre esse certificados… já baixei e refiz o keysotore, mas continua o erro, mas agora não sei se estou fazendo o correto…

na parte do Keystore eu utilizei o o tutotial do pedruhenrik, que me ajudou muito, está disponivel em http://www.guj.com.br/java/237281-tutorial-tutorial-consumir-webservice-nfe-20

segui certinho tiver problemas mas o proprio pedruhenrik me ajudou muito e fiz tudo certinho…

mas após instalar o 3 certificados indicado pelo fredferrao continua acontecendo erros segue ai…

Exception in thread "main" javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
	at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
	at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:98)
	at javax.xml.ws.Service.<init>(Service.java:77)
	at br.inf.portalfiscal.nfe.wsdl.nfeconsultadest.NFeConsultaDest.<init>(NFeConsultaDest.java:44)
	at br.inf.portalfiscal.nfe.wsdl.nfeconsultadest.NFeConsultaDestSoap_NFeConsultaDestSoap_Client.main(NFeConsultaDestSoap_NFeConsultaDestSoap_Client.java:48)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
	at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:100)
	at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:199)
	at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147)
	... 4 more
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'https://www.nfe.fazenda.gov.br/NFeConsultaDest/NFeConsultaDest.asmx?wsdl'.: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(Unknown Source)
	at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
	at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
	at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:262)
	at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:205)
	at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:98)
	... 6 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1902)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270)
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1338)
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:154)
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1032)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:515)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1299)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:632)
	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:799)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:237)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300)
	... 12 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
	at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
	at sun.security.validator.Validator.validate(Validator.java:260)
	at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
	at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
	at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1320)
	... 30 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
	at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
	at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
	... 36 more

alguém tem uma ideia?

R

creio que o Keystore está tudo certo!!!

agora isso não tenho ideia de como fazer!!

F

rafaelshock:

Teu Problema ESTA AI, Certificados Voce baixou Sistemas Operacionais site? Importou ELES não TEU TEU keystore?

creio que o Keystore está tudo certo!!!

agora isso não tenho ideia de como fazer!!

To vendo se acho um código meu aqui no HD externo, ja posto, outra coisa, vc tem um certificado nao tem? Alem de importar os certificados da receita no caminho do webservice, vc precisa setar o teu certificado tambem.

R

tenho o certificado a1, e setei ele certinho, com senha e tudo… vou postar o codigo aqui para ver se tem algo errado…

desde já muito obrigado fredferrao

R

então lembrando que eu utilizei o CXF para gerar as classes es os pacotes…
a partir do webService, será que fiz algo errado???

F

Segue método que setava os certificados antes de fazer a chamada aos webservices da NFe, isto foi na época que implementei a NFe no Freedom ERP. Servia tanto pra A1 como A3, arquivo ou o token, no caso funcionava para os smart card do SERASA.

private void setSecurity(boolean token) {
        System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
        System.setProperty("javax.net.ssl.trustStoreType", "JKS");
        System.setProperty("javax.net.ssl.trustStore", parametros.getProperty("nfe.certificado.keystore")); //aqui é o caminho para o teu keystore
        System.setProperty("javax.net.ssl.trustStorePassword", "senha"); //senha do keystore
        System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");

        if (token) {//se for token
            Provider p = new sun.security.pkcs11.SunPKCS11("c:\opt\freedom\nfe\certificados\token.cfg"); //este arquivo é necessário quando é token, tem o conteudo dele nos outros topicos de NFe aqui do gug
            Security.addProvider(p);

            System.setProperty("javax.net.ssl.keyStoreType", parametros.getProperty("nfe.certificado.tipo")); //PKCS12 ou PKCS11, aqui é A3, token
            System.setProperty("javax.net.ssl.keyStore", "NONE");
            System.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-SmartCard");
            System.setProperty("javax.net.ssl.keyStorePassword", parametros.getProperty("nfe.certificado.pass")); //senha do token
        } else {
            Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
            System.setProperty("javax.net.ssl.keyStoreType", parametros.getProperty("nfe.certificado.tipo"));  //pkcs11, agora vi q poderia ter fica fora do if, pois pega do arquivo :P refactoring...
            System.setProperty("javax.net.ssl.keyStore", parametros.getProperty("nfe.certificado.pfx"));  //aqui é o teu certificado A1
            System.setProperty("javax.net.ssl.keyStorePassword", parametros.getProperty("nfe.certificado.pass")); //senha do certificado
        }

    }
R

então eu segui alguns post que achei no JAVAC
que foram esses…

NF-e: Consulta Cadastro Utilizando Certificado A1 http://www.javac.com.br/jc/posts/list/124-nfe-consulta-cadastro-utilizando-certificado-a1.page

NF-e: Consulta da NF-e - WebService 2.0 http://www.javac.com.br/jc/posts/list/16-nfe-consulta-da-nfe-webservice-20.page

e os dois rodaram certinho creio que não seja problema no certificado…

a ideia do trabalho que estou desenvolvendo é fazer um consulta igual é feita em http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=

tanto a consulta resumida como a consulta inteira

a ideia é fazer um sistema desktop e se comunica com o webservice e mostrar os resultados na tela…

R

Essa é a classe… alguém para ajudar?

package br.inf.portalfiscal.nfe.wsdl.nfedownloadnf;

 * Please modify this class to meet your needs

import java.io.File;

/**
 * This class was generated by Apache CXF 2.7.4
 * 2013-04-16T17:44:25.758-03:00
 * Generated source version: 2.7.4
 * 
 */
public final class NfeDownloadNFSoap_NfeDownloadNFSoap12_Client {

    private static final QName SERVICE_NAME = new QName("http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF", "NfeDownloadNF");

    private NfeDownloadNFSoap_NfeDownloadNFSoap12_Client() {
    }

    public static void main(String args[]) throws java.lang.Exception {
        URL wsdlURL = NfeDownloadNF.WSDL_LOCATION;
        if (args.length > 0 && args[0] != null && !"".equals(args[0])) { 
            File wsdlFile = new File(args[0]);
            try {
                if (wsdlFile.exists()) {
                    wsdlURL = wsdlFile.toURI().toURL();
                } else {
                    wsdlURL = new URL(args[0]);
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
        }
      
        NfeDownloadNF ss = new NfeDownloadNF(wsdlURL, SERVICE_NAME);
        NfeDownloadNFSoap port = ss.getNfeDownloadNFSoap12();  
        
        {
        System.out.println("Invoking nfeDownloadNF...");
        br.inf.portalfiscal.nfe.wsdl.nfedownloadnf.NfeDadosMsg _nfeDownloadNF_nfeDadosMsg = new br.inf.portalfiscal.nfe.wsdl.nfedownloadnf.NfeDadosMsg();
        java.util.List<java.lang.Object> _nfeDownloadNF_nfeDadosMsgContent = new java.util.ArrayList<java.lang.Object>();
        java.lang.Object _nfeDownloadNF_nfeDadosMsgContentVal1 = null;
        _nfeDownloadNF_nfeDadosMsgContent.add(_nfeDownloadNF_nfeDadosMsgContentVal1);
        _nfeDownloadNF_nfeDadosMsg.getContent().addAll(_nfeDownloadNF_nfeDadosMsgContent);
        br.inf.portalfiscal.nfe.wsdl.nfedownloadnf.NfeDownloadNFResult _nfeDownloadNF__return = port.nfeDownloadNF(_nfeDownloadNF_nfeDadosMsg);
        System.out.println("nfeDownloadNF.result=" + _nfeDownloadNF__return);


        }

        System.exit(0);
    }

}
F

Sugiro que volte a minha primeira resposta, o erro é claro que o problema é com certificado, vc insiste que esta tudo correto com keystore e tudo mais, mas o stacktrace é claro em dizer que algo nao esta certo:

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Use o keytool e de um list para ver os servificados que tem dentro do seu keystore, bem como suas validades e etc.

Não sei como vc fez, mas vc tem que entrar neste caminho pelo navegador: https://www.nfe.fazenda.gov.br/NFeConsultaDest/NFeConsultaDest.asmx?wsdl, exportar o certificado da receita, e entao importar para o teu keystore usando o keytool

R

valeu fredferrao vou ver aqui, esse procedimento que vc está falando…
kkkkkkkk

sou leigo nisso então vou refazer isso… Obrigado!

R

como isso?

eu fiz a parte de que vc falou de gerar o nfe.keystore

F

Entra neste site com teu navegador: https://www.nfe.fazenda.gov.br/NFeConsultaDest/NFeConsultaDest.asmx?wsdl
Se teu certificado nao estiver instalado nem entrar tu vai conseguir.
Feito isto pelo navegador vc vai nas opções de certificados(Firefox no linux: preferencias > avançado > criptografia > servidores) encontra la no certificado da receita e manda exporta-lo.
De posse do certificado da receita vc usa o keytool para importa-lo no teu keystore, como no exemplo abaixo que peguei aqui mesmo no guj

keytool -importcert -trustcacerts -alias nfe -file CertificadoDaReceita.cer -keystore teuKeyStore.jks
R

fredferrao obrigado pela ajuda agora tenho certeza que consegui fazer essa parte a qual vc me falou, utilizei esse post aqui para isso… http://www.guj.com.br/java/235046-nfe-v2—tutorial-1

mas continuo tendo o erro ainda, não sei mais o que fazer… :x

desde de já muito obrigado!

F

Vc postou uma classe ali em cima, tudo que vc faz esta ali? Onde vc esta setando a segurança para a conexao? Os código que postei acima.

R

bem vou ver se estou no caminho certo, isso aqui é tudo novo para mim!

primeiro de tudo instalei o certificado…

ai logo depois eu entrei no site onde fica as url dos web service, ai fiz aquele esquema de salva .wsdl

instalei aqueles 3 certificados e gerei o nfe.keystore

logo depois joguei no eclipse com o botão direito web services> Generate Client ai rodo ele com o JAXB ele criar uma pacote com umas classes sozinho…

ai eu tento rodar aquelas duas classes e da aquele erro…

R

Galera estou enviando Nfe Download e está me devolvendo essa msg, alguém pode me ajudar???

Message enviada 
com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl@5fda3acc
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="https://www.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></soap12:Header><soap12:Body><nfeDadosMsg xmlns="https://www.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx"><downloadNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>1</tpAmb><cUF>35</cUF><xServ>DOWNLOAD NFE</xServ><CNPJ>(numero do CNPJ)</CNPJ><chNFe>(Numero  da chave de acesso)</chNFe></downloadNFe></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:Body><soap:Fault><soap:Code><soap:Value>soap:Sender</soap:Value></soap:Code><soap:Reason><soap:Text
xml:lang="en">System.Web.Services.Protocols.SoapException:
Unable
to
handle
request
without
a
valid
action
parameter.
Please
supply
a
valid
soap
action.



at
System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest()



at
System.Web.Services.Protocols.SoapServerProtocol.Initialize()



at
System.Web.Services.Protocols.ServerProtocol.SetContext(Type
type,
HttpContext
context,
HttpRequest
request,
HttpResponse
response)



at
System.Web.Services.Protocols.ServerProtocolFactory.Create(Type
type,
HttpContext
context,
HttpRequest
request,
HttpResponse
response,
Boolean&
abortProcessing)</soap:Text></soap:Reason><soap:Detail
/></soap:Fault></soap:Body></soap:Envelope>
R

o problema do anterior eu consegui resolver era url trocada…

agora estou tendo outro erro:

Message enviada 
com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl@5fda3acc
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="https://www.sefazvirtual.fazenda.gov.br/NfeDownloadNF/NfeDownloadNF.asmx"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></soap12:Header><soap12:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF"><downloadNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><cUF>35</cUF><xServ>DOWNLOAD NFE</xServ><CNPJ>*********************</CNPJ><chNFe>***************************</chNFe></downloadNFe></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:Body><nfeDownloadNFResult
xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeDownloadNF"><retDownloadNFe
versao="1.00"
xmlns="http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><verAplic>AN_1.0.0</verAplic><cStat>242</cStat><xMotivo>Rejeicao:
Elemento
nfeCabecMsg
inexistente
no
SOAP
Header</xMotivo><dhResp>2013-04-23T14:43:20</dhResp></retDownloadNFe></nfeDownloadNFResult></soap:Body></soap:Envelope>
Criado 2 de fevereiro de 2010
Ultima resposta 23 de abr. de 2013
Respostas 33
Participantes 11