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:
-
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:
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]