Cabeçalho para envio de NFE

7 respostas
C

Pessoal, estou tentando fazer o envio da NFe, o status do serviço fiz e funcionou blz, mas pra enviar está gerando um erro, segue o código e o erro para quem puder ajudar!

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\"?>" + "<enviNFe " + " versao=\"1.07\"" + " xmlns=\"http://www.portalfiscal.inf.br/nfe\">" + "<idLote>000000000000015</idLote>"+nota()+ "</enviNFe>";

        System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
        Provider p = new sun.security.pkcs11.SunPKCS11("C:\\certificados\\token.cfg");
        Security.addProvider(p);

        System.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
        System.setProperty("javax.net.ssl.keyStore", "NONE");
        System.setProperty("javax.net.ssl.keyStorePassword", "xxxxxx");
        System.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-SmartCard");

        System.setProperty("javax.net.ssl.trustStoreType", "JKS");
        System.setProperty("javax.net.ssl.trustStore", "C:\\certificados\\certificado.keystore");



        NfeRecepcao service = new NfeRecepcao();
        try {
            NfeRecepcaoSoap nfeStatus = service.getNfeRecepcaoSoap();
            System.out.println(nfeStatus.nfeRecepcaoLote(nfeCabecMsg, nfeDadosMsg));
        } catch (Throwable e1) {
            e1.printStackTrace();
        }

7 Respostas

alves.Felipe

veja no manual de integração a versão correta para colocar no cabecalho…se não me engano não eh 1.07

C

Felipe, obrigada pela atenção, mas segundo o erro que está dando não é a versão, o erro diz que a NFeRecepcaoLote não possui o parametro nfeCabecMsg, porém possui, caso alguém saiba estou no aguardo.

gilmaslima

Estou com o mesmo problema, no meu caso estava funcionando perfeitamente até o dia 23/04/2010 e ontem começou a dar esse erro:

[b]

Caused by: javax.xml.bind.JAXBException: {<a href="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico">http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico</a>}nfeCabecMsg is not a valid property on class br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServicoNF

at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:931)

at com.sun.xml.internal.ws.client.sei.BodyBuilder$DocLit.(BodyBuilder.java:188)

[/b]

alves.Felipe

gilmaslima:
Estou com o mesmo problema, no meu caso estava funcionando perfeitamente até o dia 23/04/2010 e ontem começou a dar esse erro:

[b]

Caused by: javax.xml.bind.JAXBException: {<a href="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico">http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico</a>}nfeCabecMsg is not a valid property on class br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServicoNF

at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:931)

at com.sun.xml.internal.ws.client.sei.BodyBuilder$DocLit.(BodyBuilder.java:188)

[/b]


o web service que vc esta consumindo esta usando a versão 2?

gilmaslima

alves.Felipe:

o web service que vc esta consumindo esta usando a versão 2?

A versão que eu estou consumindo é a 1.07

Minha classe de teste:

import br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServico;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServicoNF;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServicoSoap;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico.ObjectFactory;
import java.net.URL;
import java.security.Security;
import javax.xml.namespace.QName;

public class Main {

    public static void main(String... args) {
        try {

            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.trustStoreType", "JKS");
            System.setProperty("javax.net.ssl.trustStore", "c:\\homologa_SP");  // Arquivo gerado com o InstallCert

            System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
            System.setProperty("javax.net.ssl.keyStore", "c:\\NFe emissao _2 _2011.pfx");  // o arquivo com o certificado do emitente
            System.setProperty("javax.net.ssl.keyStorePassword", "senhaCertificado");  // a senha do arquivo


            

            NfeStatusServicoNF status = new ObjectFactory().createNfeStatusServicoNF();
            

            status.setNfeCabecMsg("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.02\"><versaoDados>1.07</versaoDados></cabecMsg>");
            status.setNfeDadosMsg("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.07\"><tpAmb>2</tpAmb><cUF>35</cUF><xServ>STATUS</xServ></consStatServ>");
            NfeStatusServico service = new NfeStatusServico(new URL("https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico.asmx "), new QName("http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico", "NfeStatusServico"));
            NfeStatusServicoSoap soap = service.getNfeStatusServicoSoap();
            String result = soap.nfeStatusServicoNF(status.getNfeCabecMsg(), status.getNfeDadosMsg());

            System.out.println(result);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

A Exception:

javax.xml.ws.WebServiceException: class br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServicoNF do not have a property of the name {http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico}nfeCabecMsg
        at com.sun.xml.internal.ws.client.sei.BodyBuilder$DocLit.<init>(BodyBuilder.java:191)
        at com.sun.xml.internal.ws.client.sei.SEIMethodHandler.<init>(SEIMethodHandler.java:105)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.<init>(SyncMethodHandler.java:73)
        at com.sun.xml.internal.ws.client.sei.SEIStub.<init>(SEIStub.java:71)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:628)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:331)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:313)
        at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:295)
        at javax.xml.ws.Service.getPort(Service.java:92)
        at br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServico.getNfeStatusServicoSoap(NfeStatusServico.java:58)
        at Main.main(Main.java:41)
Caused by: javax.xml.bind.JAXBException: {http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico}nfeCabecMsg is not a valid property on class br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServicoNF
        at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getElementPropertyAccessor(JAXBContextImpl.java:931)
        at com.sun.xml.internal.ws.client.sei.BodyBuilder$DocLit.<init>(BodyBuilder.java:188)
        ... 10 more

Estou testando no ambiente de homologação de São Paulo, será que eles mudaram alguma coisa?

gilmaslima

Resolvi o problema da seguinte forma:

Baixei novamente os WSDL e gerei minhas classes pra consumir o serviço novamente e funcionou.

T

Gilmar, será que você poderia me dar uma ajuda? Estou tentando comunicar com o webservice de SP, utilizando os wsdl’s versao 2 do manual de integração 4.01. Utilizando o código abaixo

import br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeCabecMsg;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeDadosMsg;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServico2Soap12;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.NfeStatusServicoNF2Result;
import br.inf.portalfiscal.nfe.wsdl.nfestatusservico2.ObjectFactory;
import java.security.Security;

/**
 *
 * @author Thiago
 */

public class Principal {
    public static void main(String args[]){

        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:\\NFE\\MEUCLIENTE.CER");
        //System.setProperty("javax.net.ssl.keyStorePassword", "senhadomeucertificado");

        System.setProperty("javax.net.ssl.trustStoreType", "JKS");
        System.setProperty("javax.net.ssl.trustStore", "C:\\NFE\\SP.jks");
        System.setProperty("javax.net.ssl.trustStorePassword", "JKSPASSWORD");


        NfeStatusServico2 service = new NfeStatusServico2();

        NfeCabecMsg cabecMsg = new ObjectFactory().createNfeCabecMsg();
        cabecMsg.setCUF("35");
        cabecMsg.setVersaoDados("2.0");


        NfeDadosMsg dadosMsg = new ObjectFactory().createNfeDadosMsg();
        dadosMsg.getContent().add(cabecMsg);

        try {
            NfeStatusServico2Soap12 nfeStatus = service.getNfeStatusServico2Soap12();
            NfeStatusServicoNF2Result nfeResult = new ObjectFactory().createNfeStatusServicoNF2Result();
            
            System.out.println("Status: " + nfeStatus.toString());


        } catch (Throwable e1) {
            e1.printStackTrace();
        }

    }
}

Porém, sempre recebo a mensagem no final:

Status: JAX-WS RI 2.1.6 in JDK 6: Stub for https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx

Não sei se está correto ou não… Preciso de qualquer dica.
Agradeço desde já a atenção.

Abraços…

Criado 19 de abril de 2010
Ultima resposta 6 de jun. de 2010
Respostas 7
Participantes 4