Boa tarde pessoal,
tenho um sistema de emissão de NFe que foi desenvolvido aqui na empresa,
estou com o seguinte erro ao tentar enviar a NFe para a receita do PR:
java.security.PrivilegedActionException: com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Message send failed
21/11/2012 16:05:40 com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnection post
GRAVE: SAAJ0009: Message send failed
entrei em contato com o pessoal da receita e me disseram que eu precisava atualizar a cadeia de certificados no qual me passaram um link para download dos mesmos … atualizei a cadeia de certificados e estou com o mesmo problema ainda…
segue o código que uso para o envio:
public synchronized void sendNFe(File file, File pfx, String senha){
String versao = "";
try{
FileReader fr = new FileReader(new File(file.getAbsolutePath().replace(".xml", "-assin.xml")));
BufferedReader br = new BufferedReader(fr);
String strAux = "";
String dados = "";
while ((strAux = br.readLine()) != null){
dados += strAux;
}
br.close();
// dados = dados.replace(" xmlns=\"http://www.portalfiscal.inf.br/nfe\"", "");
dados = dados.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "");
// dados = dados.replace("ns2:", "");
// dados = dados.replace(":ns2", "");
versao = dados.substring(dados.indexOf("versao=\"")+8, dados.indexOf("versao=\"")+12);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
if(!Var.isA3){
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", pfx.getAbsolutePath());
System.setProperty("javax.net.ssl.keyStorePassword", senha);
}else{
Provider p = new SunPKCS11("token.cfg");
Security.addProvider(p);
KeyStore ks = KeyStore.getInstance("PKCS11");
ks.load(null, senha.toCharArray());
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.keyStoreType",ks.getType());
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStorePassword", senha);
}
String enviNFe = "<enviNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\""+versao+"\"><idLote>000000000000001</idLote>"+dados+"</enviNFe>";
cabecMsg = "<cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" "
+ "versao=\"2.00\">" + "<versaoDados>"+versao+"</versaoDados>"
+ "</cabecMsg>";
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\"")
.append(" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"")
.append(" 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>2.00</versaoDados>")
.append("<cUF>41</cUF>")
.append("</nfeCabecMsg>")
.append("</soap12:Header>")
.append("<soap12:Body>")
// soapMessage.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
// .append("<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"")
// .append(" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"")
// .append(" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">")
// .append("<soap12:Header>")
// .append(cabecMsg)
// .append("</soap12:Header>")
// .append("<soap12:Body>")
.append(enviNFe)
.append("</soap12:Body>")
.append("</soap12:Envelope>");
String response = metodo2(soapMessage.toString(), "https://nfe2.fazenda.pr.gov.br/nfe/NFeRecepcao2");
try{
FileWriter fw = new FileWriter(file.getAbsolutePath().replace(".xml", "-retEnviNFe.xml"));
BufferedWriter bw = new BufferedWriter(fw);
bw.write(response);
bw.flush();
bw.close();
}catch(Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
e.printStackTrace();
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
e.printStackTrace();
}
}
public static String metodo2(String envelope, String urlAddress) {
try {
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage message;
try {
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);
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()));
return desnormalizar(out.toString());
} catch (IOException ex) {
System.out.println("" + ex.getMessage());
return null;
}
} catch (SOAPException ex) {
System.out.println("" + ex.getMessage());
return null;
}
}
public static String desnormalizar(String texto) {
return texto.replace("<", "<").replace(">", ">").replace("''", "\"").replace("\n", "\r");
}
public synchronized void sendNFe(File file, File pfx, String senha){
String versao = "";
try{
FileReader fr = new FileReader(new File(file.getAbsolutePath().replace(".xml", "-assin.xml")));
BufferedReader br = new BufferedReader(fr);
String strAux = "";
String dados = "";
while ((strAux = br.readLine()) != null){
dados += strAux;
}
br.close();
// dados = dados.replace(" xmlns=\"http://www.portalfiscal.inf.br/nfe\"", "");
dados = dados.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "");
// dados = dados.replace("ns2:", "");
// dados = dados.replace(":ns2", "");
versao = dados.substring(dados.indexOf("versao=\"")+8, dados.indexOf("versao=\"")+12);
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
if(!Var.isA3){
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", pfx.getAbsolutePath());
System.setProperty("javax.net.ssl.keyStorePassword", senha);
}else{
Provider p = new SunPKCS11("token.cfg");
Security.addProvider(p);
KeyStore ks = KeyStore.getInstance("PKCS11");
ks.load(null, senha.toCharArray());
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
System.setProperty("javax.net.ssl.keyStoreType",ks.getType());
System.setProperty("javax.net.ssl.keyStore", "NONE");
System.setProperty("javax.net.ssl.keyStorePassword", senha);
}
String enviNFe = "<enviNFe xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\""+versao+"\"><idLote>000000000000001</idLote>"+dados+"</enviNFe>";
cabecMsg = "<cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" "
+ "versao=\"2.00\">" + "<versaoDados>"+versao+"</versaoDados>"
+ "</cabecMsg>";
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\"")
.append(" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"")
.append(" 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>2.00</versaoDados>")
.append("<cUF>41</cUF>")
.append("</nfeCabecMsg>")
.append("</soap12:Header>")
.append("<soap12:Body>")
// soapMessage.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
// .append("<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"")
// .append(" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"")
// .append(" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">")
// .append("<soap12:Header>")
// .append(cabecMsg)
// .append("</soap12:Header>")
// .append("<soap12:Body>")
.append(enviNFe)
.append("</soap12:Body>")
.append("</soap12:Envelope>");
String response = metodo2(soapMessage.toString(), "https://nfe2.fazenda.pr.gov.br/nfe/NFeRecepcao2");
try{
FileWriter fw = new FileWriter(file.getAbsolutePath().replace(".xml", "-retEnviNFe.xml"));
BufferedWriter bw = new BufferedWriter(fw);
bw.write(response);
bw.flush();
bw.close();
}catch(Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
e.printStackTrace();
}
}catch(Exception e){
JOptionPane.showMessageDialog(null, e.getMessage());
e.printStackTrace();
}
}
public static String metodo2(String envelope, String urlAddress) {
try {
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage message;
try {
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);
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()));
return desnormalizar(out.toString());
} catch (IOException ex) {
System.out.println("" + ex.getMessage());
return null;
}
} catch (SOAPException ex) {
System.out.println("" + ex.getMessage());
return null;
}
}
public static String desnormalizar(String texto) {
return texto.replace("<", "<").replace(">", ">").replace("''", "\"").replace("\n", "\r");
}
alguém pode me dar uma luz de como resolver esse problema por favor
desde já grato