NFe

então… esse ai passa batido…não pega o problema…
o problema esta ligado a tag infProt… no schema esta assim… mas não consigo fazer funcionar ainda…

<xs:sequence> <xs:element name="NFe" type="TNFe"> <xs:key name="Id_NFe"> <xs:selector xpath="NFe/*"/> //elemento que contem chave <xs:field xpath="infNFe"/> //campo que vai ser a chave </xs:key> </xs:element> <xs:element name="protNFe" type="TProtNFe"> <xs:keyref name="Id_Prot" refer="Id_NFe"> <xs:selector xpath="protNFe/*"/> //elemento que "recebe" a chave <xs:field xpath="infProt"/> //campo que vai ser a referencia da chave </xs:keyref> </xs:element> </xs:sequence>

consegui arrumar… na verdade eu estava usando o pacote de schema PL_006preC ai baixei o PL_006e e ai foi na boa…
pq no 6e não tem essa chave de referencia que tem no 6c…
acho que os caras tinham meio q se perdido com o schema e o layout…

Pessoal estou tentando fazer client pro webservice statusservico, estão sendo gerados 6 arquivos como havia lido neste tópico, mas não está sendo gerada a classe NfeStatusServicoLocator(), gostaria de saber o por que e qual a finalidade desta classe, estou seguindo um exemplo de código postado neste tópico, as classes geradas são :

NfeStatusServicoNF.java
NfeStatusServicoNFResponse.java
NfeStatusServicoSoap.java
ObjectFactory.java
package-info.java

segue o meu código


    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.10</versaoDados>" + "</cabecMsg>";
        String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<consStatServ " + " versao=\"1.10\"" + " xmlns=\"http://www.portalfiscal.inf.br/nfe\">" + "<tpAmb>2</tpAmb>" + "<cUF>15</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", "PKCS11");
        System.setProperty("javax.net.ssl.keyStore", "C:\\certificados\\RA.cer");//Aqui vem o arquivo do certificado do seu cliente
        System.setProperty("javax.net.ssl.keyStorePassword", "oagb2010");//Aqui a senha deste certificado

        System.setProperty("javax.net.ssl.trustStoreType", "JKS");
        System.setProperty("javax.net.ssl.trustStore", "C:\\certificados\\certificado.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(); <---esta não é gerada!
            System.out.println(nfeStatus.nfeStatusServicoNF(nfeCabecMsg, nfeDadosMsg));// O retorno deve ser um XML com o status do serviço
        } catch (Throwable e1) {
            e1.printStackTrace();
        }
    }

Outro jeito de vizualisar e imprimir a NFe sem ter que instalar programa algum é utilizar o WebDANFE ( http://www.webdanfe.com.br ) WebDANFE . Basta arrastar o arquivo XML para este site que ele gera o PDF da NFE.

Poderia me dar uma luz de como fazer isso?

Eu baixei os WSDL e gerei apenas o de status do serviço com o Axis2 mas acho que não foi gerado corretamente.

Foram geradas 2 classes: NfeStatusServico2CallbackHandler e NfeStatusServico2Stub

Não consigo verificar o status do serviço com essas classes, segue o código:

[code] NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
NfeStatusServico2Stub.NfeDadosMsg dados = new NfeStatusServico2Stub.NfeDadosMsg();
String cUF = “35”; // SP
String tipoAmbiente = “1”; //1=homologacao, 2=producao
String s = “”
+ "<consStatServ versao=“2.00” xmlns=“http://www.portalfiscal.inf.br/nfe">"
+ " " + tipoAmbiente + “”
+ " " + cUF + “”
+ " STATUS”
+ “”;

    OMElement el = AXIOMUtil.stringToOM(s);
    dados.setExtraElement(el);

    NfeStatusServico2Stub.NfeCabecMsg cab = new NfeStatusServico2Stub.NfeCabecMsg();
    cab.setVersaoDados("2.00");
    cab.setCUF(cUF);
    NfeStatusServico2Stub.NfeCabecMsgE cabE = new NfeStatusServico2Stub.NfeCabecMsgE();
    cabE.setNfeCabecMsg(cab);


    String status = stub.nfeStatusServicoNF2(dados, cabE).getExtraElement().toStringWithConsume(); // Erro aqui...
    System.out.println("Status: "+status);[/code]

Exception:

org.apache.axis2.AxisFault: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl) at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:203) at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at emissor.webservices.status2.NfeStatusServico2Stub.nfeStatusServicoNF2(NfeStatusServico2Stub.java:174) at emissor.lib.NFe.statusServico(NFe.java:65)

[quote=mate42]Consegui resolver, segue:

  1. Baixe o Apache AXIS para gerar as classes a partir do WSDl, http://ws.apache.org/axis2/download.cgi
  2. Depois de descompactar, execute dentro da pasta BIN “/wsdl2java.sh -uri NFeStatusServico2.wsdl” (Linux)
  3. Copie os fontes para a pasta do projeto, inclua as bibliotecas do Apache AXIS no projeto
        NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
        NfeStatusServico2Stub.NfeDadosMsg dados = new NfeStatusServico2Stub.NfeDadosMsg();
        
        String s = "<consStatServ versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">"+
		    "<tpAmb>2</tpAmb>"+
                    "<cUF>43</cUF>"+
                    "<xServ>STATUS</xServ>"+
                    "</consStatServ>";

        OMElement el = AXIOMUtil.stringToOM(s);
        dados.setExtraElement(el);

        NfeStatusServico2Stub.NfeCabecMsg cab = new NfeStatusServico2Stub.NfeCabecMsg();
        cab.setVersaoDados("2.00");
        cab.setCUF("43");
        NfeStatusServico2Stub.NfeCabecMsgE cabE = new NfeStatusServico2Stub.NfeCabecMsgE();
        cabE.setNfeCabecMsg(cab);
        
        System.out.println(stub.nfeStatusServicoNF2(dados , cabE).getExtraElement());

[/quote]
Amigo tentei o seu código mas sempre me dá um java.lang.NullPointerException nessa linha que você manda imprimir o stub, o que pode ser?

Eu mudei só um pouquinho porque minha UF é 35 (SP):

[code] NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
NfeStatusServico2Stub.NfeDadosMsg dados1 = new NfeStatusServico2Stub.NfeDadosMsg();
String s1 = "<consStatServ versao=“2.00” xmlns="http://www.portalfiscal.inf.br/nfe">"
+ “1”
+ “35”
+ “STATUS”
+ “”;

    OMElement el1 = AXIOMUtil.stringToOM(s1);
    dados.setExtraElement(el1);
    NfeStatusServico2Stub.NfeCabecMsg cab1 = new NfeStatusServico2Stub.NfeCabecMsg();
    cab1.setVersaoDados("2.00");
    cab1.setCUF("35");
    NfeStatusServico2Stub.NfeCabecMsgE cabE1 = new NfeStatusServico2Stub.NfeCabecMsgE();
    cabE.setNfeCabecMsg(cab1);
    System.out.println(stub.nfeStatusServicoNF2(dados1, cabE1).getExtraElement());

[/code]

amigo
de onde veio esse arquivo pfx ???
e o wsdl, para curitiba, voce tem conhecimento ?
obrigado

pfx é o seu certificado digital (A1)
http://www.sped.fazenda.pr.gov.br/modules/conteudo/conteudo.php?conteudo=49

qual versão baixar ?

http://www.sped.fazenda.pr.gov.br/modules/noticias/article.php?storyid=191&tit=30112010-1200-NF-e-prorrogacao-do-prazo-para-o-uso-da-versao-1.10-do-xml

ainda não entendi o que fazer com esse wsdl ?
devo baixar e salvar como xml ?
importar no eclipse ?
e o pfx, o que tem a ver ?
não esta claro o que fazer

está complicado

na versão 1.10
1º link, recepção, copiando e colando no browser

https://homologacao.nfe.fazenda.pr.gov.br/NFENWebServices/services/nfeRecepcao

no internet explorer não abre
no firefox pede pra adicionar um certificado, eu adiciono, e dae da a seguinte mensagem no browser

Falha na conexão segura
Ocorreu um erro durante uma conexão com homologacao.nfe.fazenda.pr.gov.br.
O sistema remoto SSL não esperava uma mensagem do processo de handshake que recebeu.
(Código do erro: ssl_error_handshake_unexpected_alert)
* A página que você está tentando abrir não pode ser exibida porque a autenticidade dos dados recebidos não pôde ser comprovada.
* Por favor, contate os responsáveis pelo site para informá-los sobre este problema. Você também pode usar comando localizado no menu Ajuda para reportar o site como incompatível.

da uma lida ai
http://www.guj.com.br/posts/list/52035.java#581090

Amigo, por partes.

Olha só, o WSDL é o modelo das classes dos Webservices que você vai usar.

Para criar as classes a partir dos WSDL você usar o Apache CFX depois você usa a classe já pronta somente para fazer o acesso ao Webservice, passando os devidos argumentos.

Um outro exemplo é usar o próprio wsimport que já está no java 6:

[quote]=========== Gerando as classes do WebService
Para quem utiliza o Java 6, existe um utilitário chamado wsimport, muito bacana, que
já gera as classes para acessar o WebService da Sefaz.
Uma das vantagens do wsimport é que não precisa enviar outros .jars pois a tecnologia
de acesso já está no java 6.[/quote]

wsimport -keep -p nome.pacote.homologacao.status NfeStatusServico.wsdl

qual import devo dar para este metodo ?

não esta achando a linha 14

Security.addProvider( new com.sun.net.ssl.internal.ssl.Provider() );
import java.security.Security;

Use uma IDE que te ajuda nisso.

continua com erro
agora só no

new com.sun.net.ssl.internal.ssl.Provider()

Informe o erro inteiro, todo o StackTrace do Exception.

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	Access restriction: The constructor Provider() is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\jsse.jar
	Access restriction: The type Provider is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\jsse.jar

	at br.inf.portalfiscal.www.nfe.wsdl.NfeStatusServico.Iniciar.main(Iniciar.java:14)

estou usando o eclipse galileo !