Boa noite, Atualmente tenho uma aplicação rodando NFE 100% mas utilizando um programa externo “ACBR”, vcs devem conhecer!
Mas acredito que cheguei a uma maturidade de criar meu proprio.
Li O manual do Contribuinte, e li bastantes topicos aqui no forum, e pra iniciar estou tentando Consultar o Status de serviço.
Usei como ponto inicial o Codigo (Ctrl C + Ctrl v) :
[code]public class Status {
public static void main(String[] args) {
StringBuffer soapMessage = new StringBuffer();
soapMessage.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
.append("<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\">")
.append("<soap12:Header>")
.append("<nfeCabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">")
.append("<versaoDados>1.07</versaoDados>")
.append("<cUF>52</cUF>")
.append("</nfeCabecMsg>")
.append("</soap12:Header>")
.append("<soap12:Body>")
.append("<nfeStatusServicoNF2 xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2\">")
.append("<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
.append("<consStatServ versao=\"1.07\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.portalfiscal.inf.br/nfe\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">")
.append("<versao>1.07</versao>")
.append("<tpAmb>2</tpAmb>")
.append("<cUF>52</cUF>")
.append("<xServ>STATUS</xServ>")
.append("</consStatServ>")
.append("</nfeDadosMsg>")
.append("</nfeStatusServicoNF2>")
.append("</soap12:Body>")
.append("</soap12:Envelope>");
metodo2(soapMessage.toString(), "https://nfe.sefaz.go.gov.br/nfe/services/v2/NfeStatusServico2?wsdl");
}
public static void metodo2(String envelope, String urlAddress) {
try {
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage message;
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.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", "C:\\Certificado.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "ARSOLUTI");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:\\Raiz.jks");
MimeHeaders header = new MimeHeaders();
header.addHeader("Content-Type", "application/soap+xml");
message = factory.createMessage(header, new ByteArrayInputStream(envelope.getBytes()));
SOAPConnection con = SOAPConnectionFactory.newInstance().createConnection();
URL url = new URL(urlAddress);
System.out.println("Message enviada \n"+message.toString());
SOAPMessage res = con.call(message, url);
ByteArrayOutputStream in = new ByteArrayOutputStream();
message.writeTo(in);
System.out.println("in :\n"+in.toString());
ByteArrayOutputStream out = new ByteArrayOutputStream();
res.writeTo(out);
System.out.println("out :\n"+desnormalizar(out.toString()));
} catch (IOException ex) {
System.out.println(" ERRO: " + ex.getMessage());
} finally {
}
} catch (SOAPException ex) {
System.out.println("" + ex.getMessage());
}
}
public static String desnormalizar(String texto) {
return texto.replace("<", "<").replace(">", ">").replace("''", "\"").replace(" ", "\r");
}
} [/code]
Minhas duvidas:
1-Utilizo Eclipse e dá erro nesta linha:
Security.addprovider(new com.sun.net.ssl.internal.ssl.Provider());
o erro é este :[quote] Access restriction: The type Provider is not accessible due to restriction on required library C:\Program Files\Java\jre7\lib\jsse.jar[/quote]
2-como faço para obter esse arquivo jks, li muito, mas não cheguei em lugar nenhum, se puder um exemplo facil:
System.setProperty("javax.net.ssl.trustStore", "C:\\Raiz.jks");