NFE V2.00 - Veja como consumir o WS

34 respostas
alves.Felipe

Etnão como o AGAraujo comentou.. vou postar aqui um código feito por ele,
que corrige o problema de namespace que muitos estão tendo com o WS, acho que principalmento com o PR.

1 - Criar um novo projeto 2- Criar uma interface SefazServiceConfig
package br.com.mysoft.mynfe.ws.application;

public interface SefazServiceConfig {
	void setProperties();
	String getWebServiceURL();
	String getDefinitionsTargetNamespaceURI();
	String getSchemaTargetNamespaceURI();
	String getSoapActionURI();
	String getServiceName();
	String getPortName();
}
3- Criar uma classe abstrata que implemente a interface acima
package br.com.mysoft.mynfe.ws.application.impl;
/**
 * Classe abstrata responsável por setar as propriedades dos certificados 
 * Arquivo: AbstractSefazServiceConfig.java
 * Data   : 16/02/2011
 * Hora   : 13:34:43
 */
public abstract class AbstractSefazServiceConfig implements SefazServiceConfig 
{
	
	@SuppressWarnings("unused")
	private void setPropertiesA3(){
		Provider p = new SunPKCS11("{config for SUNPKCS 11 in config.cfg}");
		Security.addProvider(p);
		Properties properties = System.getProperties();
		properties.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
		properties.setProperty("javax.net.ssl.keyStoreType", "PKCS11");
		properties.setProperty("javax.net.ssl.keyStore","NONE");
		properties.setProperty("javax.net.ssl.keyStoreProvider", "SunPKCS11-SCR3310");     
		properties.setProperty("javax.net.ssl.keyStorePassword", "1234");
		properties.setProperty("javax.net.ssl.trustStoreType", "JKS");  
		properties.setProperty("javax.net.ssl.trustStore", "{seu key store path}");
		//
		try{
			KeyStore ks = KeyStore.getInstance("PKCS11");
			ks.load(null, "1234".toCharArray()); //TODO password for keystore
		} catch (KeyStoreException e) {
			e.printStackTrace();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		} catch (CertificateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	private void setPropertiesA1(){
		//preparar as propriedades
		Properties properties = System.getProperties();
		properties.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
		properties.setProperty("javax.net.ssl.keyStoreType", "PKCS12");  
		properties.setProperty("javax.net.ssl.keyStore","cliente.pfx");//Aqui vem o arquivo do certificado do seu cliente  
		properties.setProperty("javax.net.ssl.keyStorePassword", "123456");//Aqui a senha deste certificado
		properties.setProperty("javax.net.ssl.trustStoreType", "JKS");  
		properties.setProperty("javax.net.ssl.trustStore", "nfe.keystore");//Aqui vem o arquivo criado através do comando keytool no passo 3
		properties.setProperty("javax.net.ssl.trustStorePassword", "123456");
		properties.setProperty("com.sun.xml.ws.transport.http.client.HttpTransportPipe.dump", "true");
		//properties.setProperty("javax.net.debug", "all"); - for debug
	}

	@Override
	public final void setProperties() {	setPropertiesA1();}
4- Criar uma classe concreta que herde a classe abstrata AbstractSefazServiceConfig e implemente os métodos da interface SefazServiceConfig
package br.com.mysoft.mynfe.ws.application.impl;

/**
 * Classe concreta que implementa os métodos da interface SefazServiceConfig
 * Os dados de retorno de cada método, pode ser obtido do WSDL de cada WS.
 * Neste caso, estou usando o serviço NfeRecepcao2 (Enviar Lote) do WS do PR
 * Arquivo: SefazServiceReceptionConfig.java
 * Data   : 16/02/2011
 * Hora   : 13:55:03
 */
public class SefazServiceReceptionConfig extends AbstractSefazServiceConfig {

	@Override
	public String getWebServiceURL() {return "https://homologacao.nfe2.fazenda.pr.gov.br/nfe/NFeRecepcao2";}

	@Override
	public String getDefinitionsTargetNamespaceURI() {return "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2";}

	@Override
	public String getSchemaTargetNamespaceURI() {	return "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2";}

	@Override
	public String getSoapActionURI() {return "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2/nfeRecepcaoLote2";}

	@Override
	public String getServiceName() {	return "NfeRecepcao2";}

	@Override
	public String getPortName() {return "NfeRecepcaoServicePort";}
}
5- Agora a classe mais importante, criar a classe que vai consumir o WS
package br.com.mysoft.mynfe.ws.application;

/**
 * Classe responsável por criar um Message e consumir o Web Service.
 * 
 * Arquivo: SefazService.java
 * Data   : 16/02/2011
 * Hora   : 14:01:27
 */
public class SefazService 
{
	private final String webServiceURL;
	private String definitionsTargetNamespaceURI;
	private String schemaTargetNamespaceURI;
	private String soapActionURI;
	private String serviceName;
	private String portName;
	
	/**
	 * Construtor que recebe a interface SefazServiceConfig como parametro
	 * @param config
	 */
	public SefazService(SefazServiceConfig config) 
	{
		if (config == null) throw new IllegalArgumentException();
		config.setProperties();
		webServiceURL = config.getWebServiceURL();
		definitionsTargetNamespaceURI = config.getDefinitionsTargetNamespaceURI();
		schemaTargetNamespaceURI = config.getSchemaTargetNamespaceURI();
		soapActionURI = config.getSoapActionURI();
		serviceName = config.getServiceName();
		portName = config.getPortName();
	}
	
	/**
	 * Método que envia o xml para o WS
	 * @param xml
	 * @return
	 */
	public OutputStream sendXML(InputStream xml,String uf)throws SOAPException,Exception {
			//preparar as propriedades
			Provider provider = new Provider();
			Security.addProvider(provider);
			//Cria um serviço a partir do endereço do WS  
			Service service = Service.create(new URL(webServiceURL+"?wsdl"),new QName(definitionsTargetNamespaceURI, serviceName));
			
			//Cria um Dispatch, que é responsável por invocar o serviço
			Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName(schemaTargetNamespaceURI, portName),SOAPMessage.class,Service.Mode.MESSAGE);
			
			//Configura o RequestContext para a Message solicitada
			Map<String, Object> rc = dispatch.getRequestContext();  
	        rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);  
	        rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, soapActionURI);  
	        rc.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, webServiceURL);
	        
	        // Cria um SOAPMessage Request, passando a especificação SOAP 1.2  
	        MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
	        SOAPMessage soapMessage = factory.createMessage();
	        
	        // Optional
	        soapMessage.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "false");
	        soapMessage.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "utf-8");	
	        
	        // Cria o Header da mensagem 
	        SOAPHeader header = soapMessage.getSOAPHeader();
	        SOAPElement nfeCabecMsg = header.addChildElement("nfeCabecMsg", XMLConstants.DEFAULT_NS_PREFIX, definitionsTargetNamespaceURI);
	        nfeCabecMsg.addChildElement("versaoDados").setValue("2.00");
	        nfeCabecMsg.addChildElement("cUF").setValue(uf);
	        
	        // Cria o Body
	        SOAPBody body = soapMessage.getSOAPBody();
	        
	        // Cria um elemento que vai ter os dados do XML    
	        SOAPBodyElement nfeDadosMsg = body.addBodyElement(new QName(schemaTargetNamespaceURI, "nfeDadosMsg", XMLConstants.DEFAULT_NS_PREFIX));
	        
	        // Converte o stream (seu xml) para um Objeto DOM
	        DOMResult domResult = new DOMResult();
			XMLReader reader = XMLReaderFactory.createXMLReader();
			InputSource inputSource = new InputSource(xml);
			SAXSource saxSource = new SAXSource(reader, inputSource);
			TransformerFactory transformerFactory = TransformerFactory.newInstance();
			Transformer transformer = transformerFactory.newTransformer();
			transformer.transform(saxSource, domResult);
			
	        //obtém o Document 
			Document document = (Document) domResult.getNode();
			//cria um elemento a partir o Document
			SOAPElement soapElement = SOAPFactory.newInstance().createElement(document.getDocumentElement());
			//adiciona no Body
	        nfeDadosMsg.addChildElement(soapElement); 
	        //imprime o envelope
	        soapMessage.writeTo(System.out);
	        
 	        // invoca o WS e obtém o retorno
	        SOAPMessage reply = dispatch.invoke(soapMessage);
	        
	        // Retorno
	        OutputStream out = new ByteArrayOutputStream();
	        reply.writeTo(out);	        
	        return out;
	}	
}
6- E por fim, a classe de teste. Neste exemplo vou apenas consumir o serviço de enviar lote (NFeRecepcao2)
package br.com.mysoft.mynfe.ws.application;

public class SefazServiceReceptionTest 
{
public static void main(String[] args) throws SOAPException, Exception {
		//Cria a classe de configuração
		SefazServiceConfig config = new SefazServiceReceptionConfig();
		//carrega o xml, aqui deve ter apenas o xml, (<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">.....</enviNFe>)
		InputStream  xml = new FileInputStream("test/br/com/mysoft/mynfe/ws/application/000000000025534-env-lot.xml");
		//instância a classe de service
		SefazService sefazService = new SefazService(config);
		//chama o método para enviar o xml
		ByteArrayOutputStream result = (ByteArrayOutputStream) sefazService.sendXML(xml,"41");

		if (result != null)
			result.writeTo(System.out);//imprime o retorno da Sefaz
}
}
Mas ainda não acabou... agora que vem o pulo do gato..o XALAN. 7- Entrar no site do Xalan e baixar o bendito. 8- Então adicionar no class path, ou seja, importar a lib no seu projeto. Pois segundo o AGAraujo, há relatos que existe um BUG na versão que vem com o JDK 1.6. 9- Isso ai, agora é só rodar o exemplo e correr pro abraço... 10- Print envelope que foi mandado
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2">
	<versaoDados>2.00</versaoDados><cUF>41</cUF></nfeCabecMsg></env:Header>
	<env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2">
	<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
	<idLote>000000000025534</idLote><NFe xmlns="http://www.portalfiscal.inf.br/nfe">...//esta ai o bendito namespace
Foi feito um exemplo apenas de consumir o serviço NfeRecepcao2, mas é a mesma coisa para qualquer outro serviço. O que você precisa fazer é apenas criar as classes para cada serviço conforme a classe SefazServiceReceptionConfig mostrada acima.

34 Respostas

Mackrophus

Aeeeee, valeu Alves.Felipe, sua ajuda foi de grande importancia…

Vou tentar uma outra forma que tenho aqui, se não der certo eu tento essa…

Valeu cara, abraço.

AGAraujo

Show de bola!!!

Depois posto o projeto para construção do XML e para Assinatura.

Diabo_Loiro

Muito bom mesmo!

Mackrophus

Já que vamos de dar de uma força pra quem ta fazendo, quero dar minha contribuição....

Classe pra instalar os certificados do servidor....

import java.io.*;
import java.security.*;
import java.security.cert.*;
import javax.net.ssl.*;

import org.apache.log4j.Logger;

/**
 * @author Jr
 * @author dilnei
 * @edited Marcio Bulzani
 * Classe Responsavel por instalar o certificado na aplicacao.
 */
public class InstallCert {

	private static org.apache.log4j.Logger log = Logger.getLogger(InstallCert.class);
	
	public InstallCert(){
	}
	
	public static void main(String[] args) throws Exception {
   	}

	public void instalarCertificado() throws Exception {
    	String host;
    	int port;
    	char[] passphrase;   	

   		host = "homologacao.nfe2.fazenda.pr.gov.br";   //url do servidor, mudar para pegar dinamico.
   		port = Integer.parseInt("443");
   		String p = "changeit";
   		passphrase = p.toCharArray();
    	
    	File file = new File("jssecacerts");
    	if (file.isFile() == false) {
    		char SEP = File.separatorChar;
    		File dir = new File(System.getProperty("java.home") + SEP + "lib" + SEP + "security");
    		file = new File(dir, "jssecacerts");
    		if (file.isFile() == false) {
    			file = new File(dir, "cacerts");
    		}    		
    	}
    	    	
    	log.info("Carregando KeyStore " + file + "...");
    	InputStream in = new FileInputStream(file);
    	KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
    	ks.load(in, passphrase);
    	in.close();

    	SSLContext context = SSLContext.getInstance("TLS");
    	TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    	tmf.init(ks);
    	X509TrustManager defaultTrustManager = (X509TrustManager)tmf.getTrustManagers()[0];
    	SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
    	context.init(null, new TrustManager[] {tm}, null);
    	SSLSocketFactory factory = context.getSocketFactory();

    	log.info("Abrindo conexao para " + host + ":" + port + "...");
    	SSLSocket socket = (SSLSocket)factory.createSocket(host, port);
    	socket.setSoTimeout(10000);
    	try {
    		log.info("Iniciando SSL handshake...");
    		socket.startHandshake();
    		socket.close();
    		log.info("Nenhum erro de certificado, já é confiável...");
    	} catch (SSLException e) {
    		log.info("Erro SSL Handshake: " + e);
    		e.printStackTrace(System.out);
    	}

    	X509Certificate[] chain = tm.chain;
    	if (chain == null) {
    		System.out.println("Não foi possível obter cadeia de certificados de servidor");
    		return;
    	}

    	log.info("O servidor enviou " + chain.length + " certificado(s):");
    	MessageDigest sha1 = MessageDigest.getInstance("SHA1");
    	MessageDigest md5 = MessageDigest.getInstance("MD5");
    	for (int i = 0; i < chain.length; i++) {
    		X509Certificate cert = chain[i];
    		log.info(" " + (i + 1) + " Subject " + cert.getSubjectDN());
    		log.info("   Issuer  " + cert.getIssuerDN());
    		sha1.update(cert.getEncoded());
    		log.info("   sha1    " + toHexString(sha1.digest()));
    		md5.update(cert.getEncoded());
    		log.info("   md5     " + toHexString(md5.digest()));    		
    	}

    	int k = 0;

    	X509Certificate cert = chain[k];
    	String alias = host + "-" + (k + 1);
    	ks.setCertificateEntry(alias, cert);
    	
    	OutputStream out = new FileOutputStream("jssecacerts");
    	ks.store(out, passphrase);
    	out.close();

    	log.info(cert);
    	log.info("Certificado adicionado ao keystore 'jssecacerts' usando o alias '"	+ alias + "'");
   	}

    private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();

    private static String toHexString(byte[] bytes) {
    	StringBuilder sb = new StringBuilder(bytes.length * 3);
    	for (int b : bytes) {
    		b &= 0xff;
    		sb.append(HEXDIGITS[b >> 4]);
    		sb.append(HEXDIGITS[b & 15]);
    		sb.append(' ');
    	}
    	return sb.toString();
    }

    private static class SavingTrustManager implements X509TrustManager {

    	private final X509TrustManager tm;
    	private X509Certificate[] chain;

    	SavingTrustManager(X509TrustManager tm) {
    		this.tm = tm;
    	}

    	public X509Certificate[] getAcceptedIssuers() {
    		throw new UnsupportedOperationException();
    	}

    	public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    		throw new UnsupportedOperationException();
    	}

    	public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
    		this.chain = chain;
    		tm.checkServerTrusted(chain, authType);
    	}

    }

    public void setarCertificados(){    	
		
    	File file = new File("jssecacerts");
    	if (file.isFile() == false) {
    		char SEP = File.separatorChar;
    		File dir = new File(System.getProperty("java.home") + SEP + "lib" + SEP + "security");
    		file = new File(dir, "jssecacerts");
    		if (file.isFile() == false) {
    			file = new File(dir, "cacerts");
    		}    		
    	}

    	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", "Tipo do certi.pfx ou alterar para A3 Conforme acima");
		System.setProperty("javax.net.ssl.keyStore", "Caminho-certi.pfx ou alterar para A3 Conforme acima");//Aqui vem o arquivo do certificado do seu cliente
		System.setProperty("javax.net.ssl.keyStorePassword", "senha");//Aqui a senha deste certificado
    	
		System.setProperty("javax.net.ssl.trustStoreType", "JKS");
		System.setProperty("javax.net.ssl.trustStore", file.getAbsolutePath());
		System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
    }
}

e para setar o certificado no código, use...

try {
    			new InstallCert().instalarCertificado();
    		} catch (Exception e) {			
    			log.info("Erro Instalar Certificado: " + e);    			
    		}
    		new InstallCert().setarCertificados();

Valeu, espero que todos terminem o projeto 2.00.

Mackrophus

Cara, depois que tu postar a construção do XML e a Assinatura, eu vou colocar como fazer a impressão da DANFE com jasper gerado pelo iReport.

Se alguém tiver mais alguma idéia legal pra colocar ai…

Valeu.

T

Bom dia.

Muito bom o tópico! Agradeço a todos e acredito que deve estar ajudando muita gente além de mim.

Estou conseguindo consumir os WS do Sefaz a partir do código que o alves.Felipe postou. Porém agora surgiu um problema…
Eu já consumi o WS NfeStatusServico2 e NfeRecepcao2 sem problemas, porém agora estou tentando consumir o NfeRetRecepcao2, com o mesmo código, para ver o retorno do meu lote e estou tendo um erro…

Esse é o envelope que estou enviando:

E esse é o retorno do SEFAZ:

Eu já olhei, olhei, olhei, e não consigo achar nada errado… Alguém já passou por esse problema ou consegue presumir qual pode ser o erro?

Mackrophus

Olá talles.pescumo,

Brow, tenta assim…

Valew

Mackrophus

Pessoal…

Como eu havia prometido segue abaixo como que eu faço a impressão da Danfe.

Eu abro o projeto da DANFE no iReport e configuro o sql em DATA > Query do Relatório, lpa eu coloco o sql assim…

select * from vw_nfe_det where ID_NFE = $P{IDNFE}

Depois disso compilo o fonte para gerar o arquivo .jasper.

No programa eu utilizo um metodo chamado imprimir, como ele tem mais funções, vou colocar somente o que interessa…

....
Connection con = getConnection();
		Statement stm = (Statement) con.createStatement();
		String query = "select * from vw_nfe_det v where v.ID_NFE = " + idNfe;
		com.mysql.jdbc.ResultSet rs = (ResultSet) stm.executeQuery(query);
		JRResultSetDataSource jrDS = new JRResultSetDataSource(rs);
		Map parameters = new HashMap();
		parameters.put("SUBREPORT_DIR", "C:/programa/relatorios/");  //caminho necessario para localizar o subreport
		parameters.put("REPORT_CONNECTION", con);
		
        JasperPrint jasperPrint = JasperFillManager.fillReport("C:/programa/relatorios/danfe.jasper", parameters, jrDS);
        byte[] bytes = JasperExportManager.exportReportToPdf(jasperPrint);
                
        try {
            FileOutputStream outPut = new FileOutputStream("C:/programa/danfes/" + chNFe + "-pdf.pdf");
            outPut.write(bytes);
            outPut.close();
		} catch (FileNotFoundException e) {
			System.out.println("Erro na geração do arquivo!!! Erro FNFE: " + e.getMessage());
			e.printStackTrace();
		} catch (IOException e) {
			System.out.println("Erro na geração do arquivo!!! Erro IOE: " + e.getMessage());
			e.printStackTrace();
		}
....

Beleza, espero ter ajudado…

Se alguem tiver alguma sugestão, ou algo que seja interessante colocar, colaborem.

T

Ola Mackrophus,

Se entendi era pra colocar os atributos Mackrophus xmlns:xsd=“http://www.w3.org/2001/XMLSchema” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” no body não é?

A ordem dos elementos em teoria não muda nada certo?

Eu coloquei os atributos e o erro continua o mesmo… estranho que envio a consulta do status por exemplo da mesma forma, e não da erro nenhum, assim como envio do lote…

=/

Vc esta conseguindo enviar consulta de lote no ambiente homologação sp 2.00 normalmente?

Valew!

Mackrophus

talles.pescumo, cara isso é curioso…

Eu estou enviando para o Sefaz PR e SVRS, e vai normalmente…

Vou tentar enviar em sp pra ver o que dá.

T

Mackrophus realmente ta estranho…

Eu não tenho experiência com a NFe ainda, esse é meu primeiro projeto, mas mesmo assim parece estar tudo ok…

Se eu mudo algo no xml pra tentar acertar ele acusa erro na validação do Schema, se eu deixo como esta ele continua dando esse erro…
Mas em teoria não era pra acontecer, pq outros serviços funcionam normalmente enviando tudo da mesma forma… =/

Mackrophus

Talles.

Cara, coloca o teu metodo ai, que eu vou testar com o seu.

T
Mackrophus meu método é praticamente a mesma coisa do alves.Felipe, vou mandar pra você dar uma olhada, dei uma modificada só pra ficar fácil de executar:
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.security.Provider;
import java.security.Security;
import java.util.Map;

import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.sax.SAXSource;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;

import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;


public class NFe {
	/**
	 * Método que envia o xml para o WS
	 */
	public OutputStream sendXML(InputStream xml)throws SOAPException,Exception {
		String webServiceURL = "https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx";
		String definitionsTargetNamespaceURI = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2";
		String schemaTargetNamespaceURI = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2";
		String soapActionURI = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2/nfeRetRecepcao2";
		String serviceName = "NfeRetRecepcao2";
		String portName = "NfeRetRecepcao2Soap12";
		
		//preparar as propriedades
		Provider provider = new com.sun.security.sasl.Provider();
		Security.addProvider(provider);
		//Cria um serviço a partir do endereço do WS
		Service service = Service.create(new URL(webServiceURL+"?WSDL"),new QName(definitionsTargetNamespaceURI, serviceName));
		
		//Cria um Dispatch, que é responsável por invocar o serviço
		Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName(schemaTargetNamespaceURI, portName),SOAPMessage.class,Service.Mode.MESSAGE);
		
		//Configura o RequestContext para a Message solicitada
		Map<String, Object> rc = dispatch.getRequestContext();
        rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
        rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, soapActionURI);
        rc.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, webServiceURL);
        
        // Cria um SOAPMessage Request, passando a especificação SOAP 1.2
        MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
        SOAPMessage soapMessage = factory.createMessage();
        
        // Optional
        soapMessage.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "false");
        soapMessage.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "utf-8");
        
        // Cria o Header da mensagem 
        SOAPHeader header = soapMessage.getSOAPHeader();
        SOAPElement nfeCabecMsg = header.addChildElement("nfeCabecMsg", XMLConstants.DEFAULT_NS_PREFIX, definitionsTargetNamespaceURI);
        nfeCabecMsg.addChildElement("versaoDados").setValue("2.00");
        nfeCabecMsg.addChildElement("cUF").setValue("35");
        
        // Cria o Body
        SOAPBody body = soapMessage.getSOAPBody();
        
		//Esta eh a mudanca que voce sugeriu, mas nao alterou nada no retorno
        body.addAttribute(new QName("xmlns:xsi"), "http://www.w3.org/2001/XMLSchema-instance");
        body.addAttribute(new QName("xmlns:xsd"), "http://www.w3.org/2001/XMLSchema");
        
        // Cria um elemento que vai ter os dados do XML
        SOAPBodyElement nfeDadosMsg = body.addBodyElement(new QName(schemaTargetNamespaceURI, "nfeDadosMsg", XMLConstants.DEFAULT_NS_PREFIX));
        
        // Converte o stream (seu xml) para um Objeto DOM
        DOMResult domResult = new DOMResult();
		XMLReader reader = XMLReaderFactory.createXMLReader();
		InputSource inputSource = new InputSource(new FileInputStream("C:\\NFe\\consulta.xml"));
		SAXSource saxSource = new SAXSource(reader, inputSource);
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer transformer = transformerFactory.newTransformer();
		transformer.transform(saxSource, domResult);
		
        //obtém o Document
		Document document = (Document) domResult.getNode();
		//cria um elemento a partir o Document
		SOAPElement soapElement = SOAPFactory.newInstance().createElement(document.getDocumentElement());
		//adiciona no Body
        nfeDadosMsg.addChildElement(soapElement);
        //imprime o envelope
        soapMessage.writeTo(System.out);
        System.out.println();
        
        // invoca o WS e obtém o retorno
        SOAPMessage reply = dispatch.invoke(soapMessage);
        
        // Retorno
        OutputStream out = new ByteArrayOutputStream();
        reply.writeTo(out);	        
		
		((ByteArrayOutputStream)out).writeTo(System.out);
		
        return out;
	}
}
O Xml eu não gerei por código, criei o arquivo na mão mesmo só pra testar, com o seguinte conteúdo:
<consReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><nRec>351000031121866</nRec></consReciNFe>

Isso tudo funciona no envio do lote e na consulta de status do serviço, mas na consulta do lote está gerando o erro... =/

Valew!

AGAraujo

Mackrophus:
talles.pescumo, cara isso é curioso…

Eu estou enviando para o Sefaz PR e SVRS, e vai normalmente…

Vou tentar enviar em sp pra ver o que dá.

Só para constar: está funcionando em homologação e produção em todos os estados, exceto AM, AC e PA que ainda não foi testado esse código.

AGAraujo
talles.pescumo:
Mackrophus meu método é praticamente a mesma coisa do alves.Felipe, vou mandar pra você dar uma olhada, dei uma modificada só pra ficar fácil de executar:
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.security.Provider;
import java.security.Security;
import java.util.Map;

import javax.xml.XMLConstants;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.sax.SAXSource;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;

import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;


public class NFe {
	/**
	 * Método que envia o xml para o WS
	 */
	public OutputStream sendXML(InputStream xml)throws SOAPException,Exception {
		String webServiceURL = "https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx";
		String definitionsTargetNamespaceURI = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2";
		String schemaTargetNamespaceURI = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2";
		String soapActionURI = "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2/nfeRetRecepcao2";
		String serviceName = "NfeRetRecepcao2";
		String portName = "NfeRetRecepcao2Soap12";
		
		//preparar as propriedades
		Provider provider = new com.sun.security.sasl.Provider();
		Security.addProvider(provider);
		//Cria um serviço a partir do endereço do WS
		Service service = Service.create(new URL(webServiceURL+"?WSDL"),new QName(definitionsTargetNamespaceURI, serviceName));
		
		//Cria um Dispatch, que é responsável por invocar o serviço
		Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName(schemaTargetNamespaceURI, portName),SOAPMessage.class,Service.Mode.MESSAGE);
		
		//Configura o RequestContext para a Message solicitada
		Map<String, Object> rc = dispatch.getRequestContext();
        rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
        rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, soapActionURI);
        rc.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, webServiceURL);
        
        // Cria um SOAPMessage Request, passando a especificação SOAP 1.2
        MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
        SOAPMessage soapMessage = factory.createMessage();
        
        // Optional
        soapMessage.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "false");
        soapMessage.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "utf-8");
        
        // Cria o Header da mensagem 
        SOAPHeader header = soapMessage.getSOAPHeader();
        SOAPElement nfeCabecMsg = header.addChildElement("nfeCabecMsg", XMLConstants.DEFAULT_NS_PREFIX, definitionsTargetNamespaceURI);
        nfeCabecMsg.addChildElement("versaoDados").setValue("2.00");
        nfeCabecMsg.addChildElement("cUF").setValue("35");
        
        // Cria o Body
        SOAPBody body = soapMessage.getSOAPBody();
        
		//Esta eh a mudanca que voce sugeriu, mas nao alterou nada no retorno
        body.addAttribute(new QName("xmlns:xsi"), "http://www.w3.org/2001/XMLSchema-instance");
        body.addAttribute(new QName("xmlns:xsd"), "http://www.w3.org/2001/XMLSchema");
        
        // Cria um elemento que vai ter os dados do XML
        SOAPBodyElement nfeDadosMsg = body.addBodyElement(new QName(schemaTargetNamespaceURI, "nfeDadosMsg", XMLConstants.DEFAULT_NS_PREFIX));
        
        // Converte o stream (seu xml) para um Objeto DOM
        DOMResult domResult = new DOMResult();
		XMLReader reader = XMLReaderFactory.createXMLReader();
		InputSource inputSource = new InputSource(new FileInputStream("C:\\NFe\\consulta.xml"));
		SAXSource saxSource = new SAXSource(reader, inputSource);
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer transformer = transformerFactory.newTransformer();
		transformer.transform(saxSource, domResult);
		
        //obtém o Document
		Document document = (Document) domResult.getNode();
		//cria um elemento a partir o Document
		SOAPElement soapElement = SOAPFactory.newInstance().createElement(document.getDocumentElement());
		//adiciona no Body
        nfeDadosMsg.addChildElement(soapElement);
        //imprime o envelope
        soapMessage.writeTo(System.out);
        System.out.println();
        
        // invoca o WS e obtém o retorno
        SOAPMessage reply = dispatch.invoke(soapMessage);
        
        // Retorno
        OutputStream out = new ByteArrayOutputStream();
        reply.writeTo(out);	        
		
		((ByteArrayOutputStream)out).writeTo(System.out);
		
        return out;
	}
}
O Xml eu não gerei por código, criei o arquivo na mão mesmo só pra testar, com o seguinte conteúdo:
<consReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><nRec>351000031121866</nRec></consReciNFe>

Isso tudo funciona no envio do lote e na consulta de status do serviço, mas na consulta do lote está gerando o erro... =/

Valew!

Remova:

-- body.addAttribute(new QName("xmlns:xsi"), "http://www.w3.org/2001/XMLSchema-instance");
-- body.addAttribute(new QName("xmlns:xsd"), "http://www.w3.org/2001/XMLSchema");

remova do SOAPMessage (temporariamente) os dados:

Teste e envie:
- o SOAPMessage antes do envio
- o SOAPMessage de retorno

T

Ola AGAraujo,

O xmlns:si xmlns:sd não tinha inicialmente, eu coloquei só por sugestão aqui no fórum como tentativa, eu vi em alguma norma técnica que não deveriam ser inclusos, mas testando com ou sem tenho os mesmos resultados, na consulta do lote ele da o mesmo retorno de erro, e os outros WS que testei(envio de lote e consulta de status) funcionam normalmente…

Essa parte de remover os dados eu não entendi… é para a tag nfeDadosMsg ficar assim:?

Se for, eu testei e ele voltou o mesmo retorno.
Não sei se entendi algo errado… =/

AGAraujo

talles.pescumo:
Ola AGAraujo,

O xmlns:si xmlns:sd não tinha inicialmente, eu coloquei só por sugestão aqui no fórum como tentativa, eu vi em alguma norma técnica que não deveriam ser inclusos, mas testando com ou sem tenho os mesmos resultados, na consulta do lote ele da o mesmo retorno de erro, e os outros WS que testei(envio de lote e consulta de status) funcionam normalmente…

Essa parte de remover os dados eu não entendi… é para a tag nfeDadosMsg ficar assim:?

Se for, eu testei e ele voltou o mesmo retorno.
Não sei se entendi algo errado… =/

Você fez o que eu pedi, exceto pelos retornos SOAPMessage, mas blz…

Se o erro é o mesmo, o problema não está no conteúdo.
Procurei no manual e não encontrei este erro.

Poderia fazer uma checagem para ver se o WebService está direcionado corretamente, se faltou alguma coisa e depois tente novamente.
Caso não consiga vamos mudar sua implementação para testar… Só espero que isto não seja uma “frescura” do WS-SP.

Só poderei te ajudar agora amanhã, mas post hoje o resultado se possivel pois tem mais gente ai que podera te ajudar.

T+

cinei

Mackrophus:
Pessoal…

Beleza, espero ter ajudado…

Se alguem tiver alguma sugestão, ou algo que seja interessante colocar, colaborem.

Eu vou iniciar o projeto.
Mas acho que está quase tudo aí.
Talvez o .jrxml do DANFE ajude bastante…sopa no mel.

Show de bola.

T

AGAraujo,

Eu fiz um teste agora para análisar os retornos, tentei me comunicar com todos os WS de SP homologação, enviando a tag NFeDadosMsg vazia, igual no teste anterior, e curiosamente todos apresentaram a mensagem de erro "Rejeição: Usar somente o namespace padrão da NF-e", menos o envio do lote, que voltou "Lote recebido com sucesso" mesmo não enviando nada... :S

Estranho também que no WS de consulta do status do serviço, quando eu envio a mensagem completa, com os dados, ele me da retorno normal, "Serviço em operação"... será que estou fazendo algo errado no teste?

Olha só, essas são as mensagens de envio e resposta de todos os WS:
//WS NfeStatusServico2
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"/></env:Body></env:Envelope>
//Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeStatusServicoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><cStat>587</cStat><xMotivo>Rejeição: Usar somente o namespace padrão da NF-e</xMotivo><cUF>35</cUF><dhRecbto>2011-03-17T08:20:44</dhRecbto></retConsStatServ></nfeStatusServicoNF2Result></soap:Body></soap:Envelope>

//WS NfeRecepcao2
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2"/></env:Body></env:Envelope>
//Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeRecepcaoLote2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2"><retEnviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><cStat>103</cStat><xMotivo>Lote recebido com sucesso</xMotivo><cUF>35</cUF><dhRecbto>2011-03-17T08:20:44</dhRecbto><infRec><nRec>351000031268493</nRec><tMed>1</tMed></infRec></retEnviNFe></nfeRecepcaoLote2Result></soap:Body></soap:Envelope>

//WS NfeRetRecepcao2
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"/></env:Body></env:Envelope>
//Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeRetRecepcao2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><retConsReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><nRec/><cStat>587</cStat><xMotivo>Rejeição: Usar somente o namespace padrão da NF-e</xMotivo><cUF>35</cUF></retConsReciNFe></nfeRetRecepcao2Result></soap:Body></soap:Envelope>

//WS NfeConsulta2
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2"/></env:Body></env:Envelope>
//Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeConsultaNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2"><retConsSitNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><cStat>587</cStat><xMotivo>Rejeição: Usar somente o namespace padrão da NF-e</xMotivo><cUF>35</cUF><chNFe/></retConsSitNFe></nfeConsultaNF2Result></soap:Body></soap:Envelope>

//WS NfeCancelamento2
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento2"/></env:Body></env:Envelope>
//Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeCancelamentoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento2"><retCancNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCanc><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><cStat>587</cStat><xMotivo>Rejeição: Usar somente o namespace padrão da NF-e</xMotivo><cUF>35</cUF></infCanc></retCancNFe></nfeCancelamentoNF2Result></soap:Body></soap:Envelope>

//WS NfeInutilizacao2
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao2"/></env:Body></env:Envelope>
//Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeInutilizacaoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeInutilizacao2"><retInutNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infInut><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><cStat>587</cStat><xMotivo>Rejeição: Usar somente o namespace padrão da NF-e</xMotivo><cUF>35</cUF></infInut></retInutNFe></nfeInutilizacaoNF2Result></soap:Body></soap:Envelope>

//WSC adConsultaCadastro2
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"/></env:Body></env:Envelope>
//Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><consultaCadastro2Response xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><consultaCadastro2Result><retConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCons><verAplic>SP_NFE_PL_006h</verAplic><cStat>587</cStat><xMotivo>Rejeição: Usar somente o namespace padrão da NF-e</xMotivo><UF/><dhCons>2011-03-17T08:20:44</dhCons><cUF>35</cUF></infCons></retConsCad></consultaCadastro2Result></consultaCadastro2Response></soap:Body></soap:Envelope>
E aqui as mensagens com dados do WS de consulta do status do serviço com retorno ok:
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><cUF>35</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></env:Body></env:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeStatusServicoNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><cStat>107</cStat><xMotivo>Serviço em Operação</xMotivo><cUF>35</cUF><dhRecbto>2011-03-17T08:27:45</dhRecbto><tMed>1</tMed></retConsStatServ></nfeStatusServicoNF2Result></soap:Body></soap:Envelope>

O erro 587 esta na NT2010.009 [url]http://www.nfe.fazenda.gov.br/portal/docs/NT2010.009.pdf[/url] , porém eu não estou utilizando nada diferente do exemplo, como você pode ver nas msg... complicado.... =/

T

Agora consegui acessar também o WS de consulta de NFe, porém informei a NFe que passei no lote, que tinha voltado com “Lote recebido com sucesso”, e ele volta mensagem dizendo que a NF-e não esta cadastrada:

//SOAP de envio <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2"><consSitNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><xServ>CONSULTAR</xServ><chNFe>35110309574539000129550010000000011000000013</chNFe></consSitNFe></nfeDadosMsg></env:Body></env:Envelope> //Resposta <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeConsultaNF2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2"><retConsSitNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><cStat>217</cStat><xMotivo>Rejeição: NF-e não consta na base de dados da SEFAZ</xMotivo><cUF>35</cUF><chNFe>35110309574539000129550010000000011000000013</chNFe></retConsSitNFe></nfeConsultaNF2Result></soap:Body></soap:Envelope>

O erro na consulta do lote ainda continua o mesmo…

T

Tentei a consulta do cadastro do contribuinte, exatamente da mesma forma, e essa também deu o problema:

//Mensagem SOAP de envio
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><ConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCons><xServ>CONS-CAD</xServ><UF>SP</UF><CNPJ>10444288000147</CNPJ></infCons></ConsCad></nfeDadosMsg></env:Body></env:Envelope>

//Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><consultaCadastro2Response xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><consultaCadastro2Result><retConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCons><verAplic>SP_NFE_PL_006h</verAplic><cStat>587</cStat><xMotivo>Rejeição: Usar somente o namespace padrão da NF-e</xMotivo><UF/><dhCons>2011-03-17T14:38:18</dhCons><cUF>35</cUF></infCons></retConsCad></consultaCadastro2Result></consultaCadastro2Response></soap:Body></soap:Envelope>

Todos os xml que enviei foram validados ok pelo Schema, não consigo nem imaginar no momento porque alguns WS funcionam e outros não... =/

AGAraujo
talles.pescumo:
Tentei a consulta do cadastro do contribuinte, exatamente da mesma forma, e essa também deu o problema:
//Mensagem SOAP de envio
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><ConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCons><xServ>CONS-CAD</xServ><UF>SP</UF><CNPJ>10444288000147</CNPJ></infCons></ConsCad></nfeDadosMsg></env:Body></env:Envelope>

//Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><consultaCadastro2Response xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><consultaCadastro2Result><retConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCons><verAplic>SP_NFE_PL_006h</verAplic><cStat>587</cStat><xMotivo>Rejeição: Usar somente o namespace padrão da NF-e</xMotivo><UF/><dhCons>2011-03-17T14:38:18</dhCons><cUF>35</cUF></infCons></retConsCad></consultaCadastro2Result></consultaCadastro2Response></soap:Body></soap:Envelope>

Todos os xml que enviei foram validados ok pelo Schema, não consigo nem imaginar no momento porque alguns WS funcionam e outros não... =/

Fiz o teste com São Paulo e a única coisa que identifiquei como sendo diferente do meu (excluindo os dados) é que o seu retorno traz:

xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">352.002SP_NFE_PL_006h107Serviço em Operação352011-03-17T08:27:451

Sendo que você não envia estes namespaces (aparentemente).
Tenho duas hipoteses agora: o seu SOAPMessage não é realmente o que vc está passando, sendo que ele deve estar sendo transformado antes do processo de envio o que significa que deveria pegar este valor não onde esta pegando e sim implementando SOAPHandler ou através da propriedade de de debug do java:

System.setProperty("javax.net.debug", "all");

A outra hipotese é a de que tecnologia ASP.NET utilizada no servidor está fazendo o Bind da mensagem de forma diferente de como envia e neste caso você precisa "burlar" essa validação.

O que está acontecendo com você não está ocorrendo comigo, então estou apenas diagnosticando pelo que você esta me falando. Precisamos nos certificar antes de continuar que:
1 - Você está direcionando para o WS correto
2 - Você está utilizando JWS
3 - Você está implementando corretamente os caracteres em UTF-8
4 - Não há espamento duplo ou qualquer "caracter especial"
5 - Os mesmos testes estão sendo feitos em outros estados e estão passando.

Se estiver tudo certificado, então vamos resolver sob estas duas hipoteses.

Olha só, eu não estou com muito tempo hoje então minhas mensagens serão um pouco demoradas, mas se não conseguir resolver até o sabado, no sábado podemos resolver pela manhã online...

t+

-----------------------
edit
-----------------------

Manualmente, aponte para os serviços que está consumindo e copie os wsdl e poste-os aqui tb.
Lembre-se: precisa ser manualmente copiado, não importado ou baixado de qualquer local...

T

AGAraujo,

Quando vc diz manualmente, quer dizer copiar pelo browser mesmo certo?

Esse é o WSDL do serviço de consulta de status que esta funcionando normalmente:
<?xml version="1.0" encoding="utf-8" ?> 
- <wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Serviço destinado à consulta do status do serviço prestado pelo Portal da Secretaria de Fazenda Estadual.</wsdl:documentation> 
- <wsdl:types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2">
- <s:element name="nfeDadosMsg">
- <s:complexType mixed="true">
- <s:sequence>
  <s:any /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="nfeStatusServicoNF2Result">
- <s:complexType mixed="true">
- <s:sequence>
  <s:any /> 
  </s:sequence>
  </s:complexType>
  </s:element>
  <s:element name="nfeCabecMsg" type="tns:nfeCabecMsg" /> 
- <s:complexType name="nfeCabecMsg">
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="cUF" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="versaoDados" type="s:string" /> 
  </s:sequence>
  <s:anyAttribute /> 
  </s:complexType>
  </s:schema>
  </wsdl:types>
- <wsdl:message name="nfeStatusServicoNF2Soap12In">
  <wsdl:part name="nfeDadosMsg" element="tns:nfeDadosMsg" /> 
  </wsdl:message>
- <wsdl:message name="nfeStatusServicoNF2Soap12Out">
  <wsdl:part name="nfeStatusServicoNF2Result" element="tns:nfeStatusServicoNF2Result" /> 
  </wsdl:message>
- <wsdl:message name="nfeStatusServicoNF2nfeCabecMsg">
  <wsdl:part name="nfeCabecMsg" element="tns:nfeCabecMsg" /> 
  </wsdl:message>
- <wsdl:portType name="NfeStatusServico2Soap12">
- <wsdl:operation name="nfeStatusServicoNF2">
  <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Consulta Status do Serviço</wsdl:documentation> 
  <wsdl:input message="tns:nfeStatusServicoNF2Soap12In" /> 
  <wsdl:output message="tns:nfeStatusServicoNF2Soap12Out" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="NfeStatusServico2Soap12" type="tns:NfeStatusServico2Soap12">
  <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
- <wsdl:operation name="nfeStatusServicoNF2">
  <soap12:operation soapAction="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2/nfeStatusServicoNF2" style="document" /> 
- <wsdl:input>
  <soap12:body use="literal" /> 
  <soap12:header message="tns:nfeStatusServicoNF2nfeCabecMsg" part="nfeCabecMsg" use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap12:body use="literal" /> 
  <soap12:header message="tns:nfeStatusServicoNF2nfeCabecMsg" part="nfeCabecMsg" use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="NfeStatusServico2">
  <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Serviço destinado à consulta do status do serviço prestado pelo Portal da Secretaria de Fazenda Estadual.</wsdl:documentation> 
- <wsdl:port name="NfeStatusServico2Soap12" binding="tns:NfeStatusServico2Soap12">
  <soap12:address location="https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeStatusServico2.asmx" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>
Esse é o WSDL do serviço de consulta do lote, que retorna o erro:
<?xml version="1.0" encoding="utf-8" ?> 
- <wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Serviço destinado a retornar o resultado do processamento do lote de NF-e.</wsdl:documentation> 
- <wsdl:types>
- <s:schema elementFormDefault="qualified" targetNamespace="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2">
- <s:element name="nfeDadosMsg">
- <s:complexType mixed="true">
- <s:sequence>
  <s:any /> 
  </s:sequence>
  </s:complexType>
  </s:element>
- <s:element name="nfeRetRecepcao2Result">
- <s:complexType mixed="true">
- <s:sequence>
  <s:any /> 
  </s:sequence>
  </s:complexType>
  </s:element>
  <s:element name="nfeCabecMsg" type="tns:nfeCabecMsg" /> 
- <s:complexType name="nfeCabecMsg">
- <s:sequence>
  <s:element minOccurs="0" maxOccurs="1" name="cUF" type="s:string" /> 
  <s:element minOccurs="0" maxOccurs="1" name="versaoDados" type="s:string" /> 
  </s:sequence>
  <s:anyAttribute /> 
  </s:complexType>
  </s:schema>
  </wsdl:types>
- <wsdl:message name="nfeRetRecepcao2Soap12In">
  <wsdl:part name="nfeDadosMsg" element="tns:nfeDadosMsg" /> 
  </wsdl:message>
- <wsdl:message name="nfeRetRecepcao2Soap12Out">
  <wsdl:part name="nfeRetRecepcao2Result" element="tns:nfeRetRecepcao2Result" /> 
  </wsdl:message>
- <wsdl:message name="nfeRetRecepcao2nfeCabecMsg">
  <wsdl:part name="nfeCabecMsg" element="tns:nfeCabecMsg" /> 
  </wsdl:message>
- <wsdl:portType name="NfeRetRecepcao2Soap12">
- <wsdl:operation name="nfeRetRecepcao2">
  <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Consulta Processamento de Lote de NF-e</wsdl:documentation> 
  <wsdl:input message="tns:nfeRetRecepcao2Soap12In" /> 
  <wsdl:output message="tns:nfeRetRecepcao2Soap12Out" /> 
  </wsdl:operation>
  </wsdl:portType>
- <wsdl:binding name="NfeRetRecepcao2Soap12" type="tns:NfeRetRecepcao2Soap12">
  <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" /> 
- <wsdl:operation name="nfeRetRecepcao2">
  <soap12:operation soapAction="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2/nfeRetRecepcao2" style="document" /> 
- <wsdl:input>
  <soap12:body use="literal" /> 
  <soap12:header message="tns:nfeRetRecepcao2nfeCabecMsg" part="nfeCabecMsg" use="literal" /> 
  </wsdl:input>
- <wsdl:output>
  <soap12:body use="literal" /> 
  <soap12:header message="tns:nfeRetRecepcao2nfeCabecMsg" part="nfeCabecMsg" use="literal" /> 
  </wsdl:output>
  </wsdl:operation>
  </wsdl:binding>
- <wsdl:service name="NfeRetRecepcao2">
  <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Serviço destinado a retornar o resultado do processamento do lote de NF-e.</wsdl:documentation> 
- <wsdl:port name="NfeRetRecepcao2Soap12" binding="tns:NfeRetRecepcao2Soap12">
  <soap12:address location="https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx" /> 
  </wsdl:port>
  </wsdl:service>
  </wsdl:definitions>
Quanto as suas perguntas, desculpe a ignorância mas não entendi muito bem: 1 - Você está direcionando para o WS correto [color=blue]Como verifico isso?[/color] 2 - Você está utilizando JWS [color=blue]Desconheço o termo... =/ [/color] 3 - Você está implementando corretamente os caracteres em UTF-8 [color=blue]O xml em si, eu salvei na mão, pelo notepad, setando o encoding UTF-8 na mão mesmo... Essa linha do código não assegura isso para a mensagem?[/color]
soapMessage.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, "utf-8");
4 - Não há espamento duplo ou qualquer "caracter especial" [color=blue]Nas minhas checagens eu não consegui encontrar, vou enviar novamente as duas mensagens que estou enviando, mas acho q esta tudo certo:[/color]
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><cUF>35</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></env:Body></env:Envelope>

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><consReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><nRec>351000031294771</nRec></consReciNFe></nfeDadosMsg></env:Body></env:Envelope>
5 - Os mesmos testes estão sendo feitos em outros estados e estão passando. [color=blue]Eu acho que não tenho como testar isso pois só tenho certificado de SP para testar, eu tentei consultar os WS de MG, mas eles voltavam como retorno que minha UF não podia acessa-los...[/color] Quanto a sua primeira hipótese, eu acho que a mensagem é essa que eu estou passando mesmo, veja só no código aonde eu dou print e logo em seguida dou invoke no serviço:
//imprime o envelope
        soapMessage.writeTo(System.out);
        System.out.println();
        
        // invoca o WS e obtém o retorno
        SOAPMessage reply = dispatch.invoke(soapMessage);
C

Fala galera !!

Alguém ai conseguiu desenvolver algo referente a validação do xml ??

C alguem tiver algum exemplo p/ me ajudar, pois não sei por onde começar !

Valeu !!

AGAraujo
talles.pescumo:
AGAraujo,

...

Quanto a sua primeira hipótese, eu acho que a mensagem é essa que eu estou passando mesmo, veja só no código aonde eu dou print e logo em seguida dou invoke no serviço:
//imprime o envelope
        soapMessage.writeTo(System.out);
        System.out.println();
        
        // invoca o WS e obtém o retorno
        SOAPMessage reply = dispatch.invoke(soapMessage);

Esta maneira não é a mesma, apesar de poder produzir o mesmo resultado... Como eu disse, utilize o SOAPHandler ou o debug do java para produzir o resultado.

As outras questões que colocou no seu post em resumo é o seguinte:
- dizer que a mensagem é UTF-8 na propriedade do SOAPMessage não siginifica que você está usando caracteres UTF-8 de origem, apenas garente que a saida será em caracteres UTF-8. Ou seja, se ao escrever num notepad utilizar o ISO* ou qualquer outro, o que vai acontecer é que essa mensagem será re-codificada para UTF-8 e os caracteres que ela não reconhece ficarão ilegíveis.
- nunca testei os certificados de um estado em outro, mas teoricamente o certificado, pelo menos em homologação, deveria funcionar... ou então para que tanta checagem de UF?? Vou ver isto e te digo amanhã. Se puder pesquisar tb já pode agilizar algo se der certo.
- para verificar se sua aplicação está apontando corretamente precisa ver onde você cria a conexão e nesta verificar se o "Endpoint URL" é a mesma do WSDL correspondente:

// neste caso: https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx
<wsdl:port name="NfeRetRecepcao2Soap12" binding="tns:NfeRetRecepcao2Soap12">  
   <soap12:address location="https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx" />
</wsdl:port>
T
Eu tentei usar o debug do java, javax.net.debug=all, mas ele imprime um monte de coisas no console, eu não sei bem o que fazer com tudo aquilo, dei uma olhada e achei uma parte que tinha o xml de envio, não sei se esta correto, olha só:
0000: 3C 3F 78 6D 6C 20 76 65   72 73 69 6F 6E 3D 22 31  <?xml version="1
0010: 2E 30 22 20 3F 3E 3C 65   6E 76 3A 45 6E 76 65 6C  .0" ?><env:Envel
0020: 6F 70 65 20 78 6D 6C 6E   73 3A 65 6E 76 3D 22 68  ope xmlns:env="h
0030: 74 74 70 3A 2F 2F 77 77   77 2E 77 33 2E 6F 72 67  ttp://www.w3.org
0040: 2F 32 30 30 33 2F 30 35   2F 73 6F 61 70 2D 65 6E  /2003/05/soap-en
0050: 76 65 6C 6F 70 65 22 3E   3C 65 6E 76 3A 48 65 61  velope"><env:Hea
0060: 64 65 72 3E 3C 6E 66 65   43 61 62 65 63 4D 73 67  der><nfeCabecMsg
0070: 20 78 6D 6C 6E 73 3D 22   68 74 74 70 3A 2F 2F 77   xmlns="http://w
0080: 77 77 2E 70 6F 72 74 61   6C 66 69 73 63 61 6C 2E  ww.portalfiscal.
0090: 69 6E 66 2E 62 72 2F 6E   66 65 2F 77 73 64 6C 2F  inf.br/nfe/wsdl/
00A0: 4E 66 65 52 65 74 52 65   63 65 70 63 61 6F 32 22  NfeRetRecepcao2"
00B0: 3E 3C 76 65 72 73 61 6F   44 61 64 6F 73 3E 32 2E  ><versaoDados>2.
00C0: 30 30 3C 2F 76 65 72 73   61 6F 44 61 64 6F 73 3E  00</versaoDados>
00D0: 3C 63 55 46 3E 33 35 3C   2F 63 55 46 3E 3C 2F 6E  <cUF>35</cUF></n
00E0: 66 65 43 61 62 65 63 4D   73 67 3E 3C 2F 65 6E 76  feCabecMsg></env
00F0: 3A 48 65 61 64 65 72 3E   3C 65 6E 76 3A 42 6F 64  :Header><env:Bod
0100: 79 3E 3C 6E 66 65 44 61   64 6F 73 4D 73 67 20 78  y><nfeDadosMsg x
0110: 6D 6C 6E 73 3D 22 68 74   74 70 3A 2F 2F 77 77 77  mlns="http://www
0120: 2E 70 6F 72 74 61 6C 66   69 73 63 61 6C 2E 69 6E  .portalfiscal.in
0130: 66 2E 62 72 2F 6E 66 65   2F 77 73 64 6C 2F 4E 66  f.br/nfe/wsdl/Nf
0140: 65 52 65 74 52 65 63 65   70 63 61 6F 32 22 3E 3C  eRetRecepcao2"><
0150: 63 6F 6E 73 52 65 63 69   4E 46 65 20 78 6D 6C 6E  consReciNFe xmln
0160: 73 3D 22 68 74 74 70 3A   2F 2F 77 77 77 2E 70 6F  s="http://www.po
0170: 72 74 61 6C 66 69 73 63   61 6C 2E 69 6E 66 2E 62  rtalfiscal.inf.b
0180: 72 2F 6E 66 65 22 20 76   65 72 73 61 6F 3D 22 32  r/nfe" versao="2
0190: 2E 30 30 22 3E 3C 74 70   41 6D 62 3E 32 3C 2F 74  .00"><tpAmb>2</t
01A0: 70 41 6D 62 3E 3C 6E 52   65 63 3E 33 35 31 30 30  pAmb><nRec>35100
01B0: 30 30 33 31 32 39 34 37   37 31 3C 2F 6E 52 65 63  [telefone removido]</nRec
01C0: 3E 3C 2F 63 6F 6E 73 52   65 63 69 4E 46 65 3E 3C  ></consReciNFe><
01D0: 2F 6E 66 65 44 61 64 6F   73 4D 73 67 3E 3C 2F 65  /nfeDadosMsg></e
01E0: 6E 76 3A 42 6F 64 79 3E   3C 2F 65 6E 76 3A 45 6E  nv:Body></env:En
01F0: 76 65 6C 6F 70 65 3E 28   42 2D 32 20 ED E2 6C CD  velope>

//Aqui eu deixei só a mensagem mesmo:
<?xml version="1.0" ?><env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><consReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><nRec>351000031294771</nRec></consReciNFe></nfeDadosMsg></env:Body></env:Envelope>

Fiz o seguinte dessa vez, gerei novamente o xml, dessa vez no notepad++, setando nas preferência o encoding utf-8 e salvei.
A mensagem soap eu não sei se tem alguma coisa a mais para setar no sentido do encoding, ela esta sendo gerada no código, falta algo?

Eu chequei a proprieade dispatch.RequestContext.endPointAdress, e estava ok (https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx), era isso mesmo?

Fiz 2 testes nos WS de MG, status do serviço, e consulta de cadastro:
//Status envio
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><versaoDados>2.00</versaoDados><cUF>31</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><cUF>31</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></env:Body></env:Envelope>
//Status Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><ns2:nfeCabecMsg xmlns:ns2="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><ns2:cUF>31</ns2:cUF><ns2:versaoDados>2.00</ns2:versaoDados></ns2:nfeCabecMsg></soap:Header><soap:Body><ns2:nfeStatusServicoNF2Result xmlns:ns2="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>0689</verAplic><cStat>107</cStat><xMotivo>Servico em operacao</xMotivo><cUF>31</cUF><dhRecbto>2011-03-18T13:49:22</dhRecbto><tMed>1</tMed></retConsStatServ></ns2:nfeStatusServicoNF2Result></soap:Body></soap:Envelope>

//Consulta Cad Envio
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><versaoDados>2.00</versaoDados><cUF>31</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><ConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCons><xServ>CONS-CAD</xServ><UF>MG</UF><CNPJ>51894202000831</CNPJ></infCons></ConsCad></nfeDadosMsg></env:Body></env:Envelope>
//Consulta Cad Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><ns2:nfeCabecMsg xmlns:ns2="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><ns2:cUF>31</ns2:cUF><ns2:versaoDados>2.00</ns2:versaoDados></ns2:nfeCabecMsg></soap:Header><soap:Body><ns2:consultaCadastro2Result xmlns:ns2="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><retConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCons><verAplic>0689</verAplic><cStat>257</cStat><xMotivo>Rejeicao: Solicitante nao habilitado para emissao da NF-e</xMotivo><UF>MG</UF><CNPJ>51894202000831</CNPJ><dhCons>2011-03-18T01:49:25</dhCons><cUF>31</cUF></infCons></retConsCad></ns2:consultaCadastro2Result></soap:Body></soap:Envelope>

Uma diferença que reparei é que no retorno de MG não existem acentos, enquanto no de SP ele volta caracters estranhos ( ex: Rejeicao ( MG ) , Rejeição ( SP ) ), acho q ele mostrou caracteres estranhos pq o encoding do eclipse esta no padrão windows, mas não acredito q isso interfira em algo...

AGAraujo
talles.pescumo:
Eu tentei usar o debug do java, javax.net.debug=all, mas ele imprime um monte de coisas no console, eu não sei bem o que fazer com tudo aquilo, dei uma olhada e achei uma parte que tinha o xml de envio, não sei se esta correto, olha só:
0000: 3C 3F 78 6D 6C 20 76 65   72 73 69 6F 6E 3D 22 31  <?xml version="1
0010: 2E 30 22 20 3F 3E 3C 65   6E 76 3A 45 6E 76 65 6C  .0" ?><env:Envel
0020: 6F 70 65 20 78 6D 6C 6E   73 3A 65 6E 76 3D 22 68  ope xmlns:env="h
0030: 74 74 70 3A 2F 2F 77 77   77 2E 77 33 2E 6F 72 67  ttp://www.w3.org
0040: 2F 32 30 30 33 2F 30 35   2F 73 6F 61 70 2D 65 6E  /2003/05/soap-en
0050: 76 65 6C 6F 70 65 22 3E   3C 65 6E 76 3A 48 65 61  velope"><env:Hea
0060: 64 65 72 3E 3C 6E 66 65   43 61 62 65 63 4D 73 67  der><nfeCabecMsg
0070: 20 78 6D 6C 6E 73 3D 22   68 74 74 70 3A 2F 2F 77   xmlns="http://w
0080: 77 77 2E 70 6F 72 74 61   6C 66 69 73 63 61 6C 2E  ww.portalfiscal.
0090: 69 6E 66 2E 62 72 2F 6E   66 65 2F 77 73 64 6C 2F  inf.br/nfe/wsdl/
00A0: 4E 66 65 52 65 74 52 65   63 65 70 63 61 6F 32 22  NfeRetRecepcao2"
00B0: 3E 3C 76 65 72 73 61 6F   44 61 64 6F 73 3E 32 2E  ><versaoDados>2.
00C0: 30 30 3C 2F 76 65 72 73   61 6F 44 61 64 6F 73 3E  00</versaoDados>
00D0: 3C 63 55 46 3E 33 35 3C   2F 63 55 46 3E 3C 2F 6E  <cUF>35</cUF></n
00E0: 66 65 43 61 62 65 63 4D   73 67 3E 3C 2F 65 6E 76  feCabecMsg></env
00F0: 3A 48 65 61 64 65 72 3E   3C 65 6E 76 3A 42 6F 64  :Header><env:Bod
0100: 79 3E 3C 6E 66 65 44 61   64 6F 73 4D 73 67 20 78  y><nfeDadosMsg x
0110: 6D 6C 6E 73 3D 22 68 74   74 70 3A 2F 2F 77 77 77  mlns="http://www
0120: 2E 70 6F 72 74 61 6C 66   69 73 63 61 6C 2E 69 6E  .portalfiscal.in
0130: 66 2E 62 72 2F 6E 66 65   2F 77 73 64 6C 2F 4E 66  f.br/nfe/wsdl/Nf
0140: 65 52 65 74 52 65 63 65   70 63 61 6F 32 22 3E 3C  eRetRecepcao2"><
0150: 63 6F 6E 73 52 65 63 69   4E 46 65 20 78 6D 6C 6E  consReciNFe xmln
0160: 73 3D 22 68 74 74 70 3A   2F 2F 77 77 77 2E 70 6F  s="http://www.po
0170: 72 74 61 6C 66 69 73 63   61 6C 2E 69 6E 66 2E 62  rtalfiscal.inf.b
0180: 72 2F 6E 66 65 22 20 76   65 72 73 61 6F 3D 22 32  r/nfe" versao="2
0190: 2E 30 30 22 3E 3C 74 70   41 6D 62 3E 32 3C 2F 74  .00"><tpAmb>2</t
01A0: 70 41 6D 62 3E 3C 6E 52   65 63 3E 33 35 31 30 30  pAmb><nRec>35100
01B0: 30 30 33 31 32 39 34 37   37 31 3C 2F 6E 52 65 63  [telefone removido]</nRec
01C0: 3E 3C 2F 63 6F 6E 73 52   65 63 69 4E 46 65 3E 3C  ></consReciNFe><
01D0: 2F 6E 66 65 44 61 64 6F   73 4D 73 67 3E 3C 2F 65  /nfeDadosMsg></e
01E0: 6E 76 3A 42 6F 64 79 3E   3C 2F 65 6E 76 3A 45 6E  nv:Body></env:En
01F0: 76 65 6C 6F 70 65 3E 28   42 2D 32 20 ED E2 6C CD  velope>

//Aqui eu deixei só a mensagem mesmo:
<?xml version="1.0" ?><env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><versaoDados>2.00</versaoDados><cUF>35</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><consReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><nRec>351000031294771</nRec></consReciNFe></nfeDadosMsg></env:Body></env:Envelope>

Fiz o seguinte dessa vez, gerei novamente o xml, dessa vez no notepad++, setando nas preferência o encoding utf-8 e salvei.
A mensagem soap eu não sei se tem alguma coisa a mais para setar no sentido do encoding, ela esta sendo gerada no código, falta algo?

Eu chequei a proprieade dispatch.RequestContext.endPointAdress, e estava ok (https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx), era isso mesmo?

Fiz 2 testes nos WS de MG, status do serviço, e consulta de cadastro:
//Status envio
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><versaoDados>2.00</versaoDados><cUF>31</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><cUF>31</cUF><xServ>STATUS</xServ></consStatServ></nfeDadosMsg></env:Body></env:Envelope>
//Status Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><ns2:nfeCabecMsg xmlns:ns2="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><ns2:cUF>31</ns2:cUF><ns2:versaoDados>2.00</ns2:versaoDados></ns2:nfeCabecMsg></soap:Header><soap:Body><ns2:nfeStatusServicoNF2Result xmlns:ns2="http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2"><retConsStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>0689</verAplic><cStat>107</cStat><xMotivo>Servico em operacao</xMotivo><cUF>31</cUF><dhRecbto>2011-03-18T13:49:22</dhRecbto><tMed>1</tMed></retConsStatServ></ns2:nfeStatusServicoNF2Result></soap:Body></soap:Envelope>

//Consulta Cad Envio
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"><env:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><versaoDados>2.00</versaoDados><cUF>31</cUF></nfeCabecMsg></env:Header><env:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><ConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCons><xServ>CONS-CAD</xServ><UF>MG</UF><CNPJ>51894202000831</CNPJ></infCons></ConsCad></nfeDadosMsg></env:Body></env:Envelope>
//Consulta Cad Resposta
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header><ns2:nfeCabecMsg xmlns:ns2="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><ns2:cUF>31</ns2:cUF><ns2:versaoDados>2.00</ns2:versaoDados></ns2:nfeCabecMsg></soap:Header><soap:Body><ns2:consultaCadastro2Result xmlns:ns2="http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2"><retConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><infCons><verAplic>0689</verAplic><cStat>257</cStat><xMotivo>Rejeicao: Solicitante nao habilitado para emissao da NF-e</xMotivo><UF>MG</UF><CNPJ>51894202000831</CNPJ><dhCons>2011-03-18T01:49:25</dhCons><cUF>31</cUF></infCons></retConsCad></ns2:consultaCadastro2Result></soap:Body></soap:Envelope>

Uma diferença que reparei é que no retorno de MG não existem acentos, enquanto no de SP ele volta caracters estranhos ( ex: Rejeicao ( MG ) , Rejeição ( SP ) ), acho q ele mostrou caracteres estranhos pq o encoding do eclipse esta no padrão windows, mas não acredito q isso interfira em algo...

Bom então já vi que será a opção dois de solução.
Só mais dois teste antes de resolvermos de vez. Vamos deixar o MG de lado até amanhã.

Faça o seguinte: envie um consulta para SP sobre o serviço, depois capture todo o debug coloque num arquivo texto (.txt) e anexe em uma mensagem aqui.
Faça o mesmo para uma consulta de processamento de lote (em arquivos separados). Vou analisar e com certeza tenho uma solução até amanhã.

Lembre-se: todo o conteudo do debug...

até daqui a pouco

T

AGAraujo,

Fiz como você disse, gerei as duas consultas e gravei os “debugs” nos arquivos em anexo.

Eu tirei todos os meus “prints” do debug, deixei só oq o javax.net.debug gera.

Substitui no arquivo uma parte do nome da empresa por XXXXXXX e o CNPJ por 0000000, apareceu na hora de adicionar o certificado e tals…

Valew!

AGAraujo

talles.pescumo:
AGAraujo,

Fiz como você disse, gerei as duas consultas e gravei os “debugs” nos arquivos em anexo.

Eu tirei todos os meus “prints” do debug, deixei só oq o javax.net.debug gera.

Substitui no arquivo uma parte do nome da empresa por XXXXXXX e o CNPJ por 0000000, apareceu na hora de adicionar o certificado e tals…

Valew!

Cara, eu estou com um brother aqui que chamou a atenção para uma coisa… mas não temos como comprovar daqui, pois o nosso teste não dá esse problema, então só para desencargo de consciencia se puder testar com esses dados que vou te passar e retirando o UTF-8.

Só mais esse!!

Depois manda uma mensagem privada para adicionar seu msn e marca o horário…

t+


update

P.S.: atente para <?xml version="1.0" encoding="utf-8" ?> e xmlns:xsd=“http://www.w3.org/2001/XMLSchema” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance

cinei

Deixo minha pequena contribuição, para utilizar JaxB.
Ainda estou no inicio do projeto, mas vejo muitos gerando as classes e o XML na mão.

  1. Baixe os arquivos xsd. Eu joguei na pasta schemas
  2. Gerar as classe: xjc ./schemas/nfe_v2.00.xsd (aqui vai gerar as classe para a Nota, vale o mesmo para as outras classes)
  3. Editar a classe TNFe, procurar a linha public class TNFe {, e deixar com a seguinte anotação:
    @XmlRootElement(name = “NFe”)
    public class TNFe {

Abaixo está a classe que uso para gerar a nota, isso me garante que terei as tags corretas.
O objeto nfeDados, gerado pelo meu sistema, está populado com os dados para preencher a nota.

imports ...
public class GerarNfeComJaxb {

	private ApoioNfe apoioNfe = new ApoioNfe();
	private static Session session = HibernateUtil.getSession();
	 
	private NfeDados nfeDados; // Aqui estão os dados para preenchimento da Nfe
	private String workDir;

	private JAXBContext   jaxbContext;
	private Marshaller    mainMarshaller;
	private ObjectFactory mainFactory;

	public String iniciar(NfeDados nfeDados, String workDir){
		this.nfeDados = nfeDados;

		this.workDir = workDir;

		return processar();
	}

	private String processar(){
		String arquivo= "";
		try {

			this.jaxbContext = JAXBContext.newInstance("br.inf.portalfiscal.nfe");
			this.mainMarshaller = jaxbContext.createMarshaller();
			this.mainFactory = new ObjectFactory();

			final javax.xml.bind.Marshaller m = mainMarshaller;
			ObjectFactory factory = mainFactory;
			TNFe nfe = factory.createTNFe();

			InfNFe inf = factory.createTNFeInfNFe();
			Ide ide = factory.createTNFeInfNFeIde();
			Emit emit = factory.createTNFeInfNFeEmit();

			nfe.setInfNFe(inf);
			inf.setIde(ide);
			inf.setEmit(emit);

			inf.setVersao(nfeDados.getVersao());
			inf.setId( nfeDados.getChave());

			identificacaoNfe(factory, nfe);
			emitente(factory, nfe);
			destinatario(factory, nfe);
			localEntraga(factory, nfe); 
			produtos(factory, nfe);

			valorTotal(factory, nfe);
			transporte(factory, nfe);
			cobranca(factory, nfe);
			informacoesAdicionais(factory, nfe);

			arquivo = workDir + nfe.getInfNFe().getId() + "-nfe.xml";

			m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
			m.marshal(nfe, new File(arquivo));

		} catch (JAXBException e) {
			System.out.println("Erro JAXBException: "+e.getMessage());
		}

		return arquivo;
	}

	// ------------------------------------------------------------------------------------------------------
	private void identificacaoNfe(ObjectFactory factory, TNFe nfe){
		Ide ide = nfe.getInfNFe().getIde();
		ide.setCUF(this.nfeDados.getEmitente().getCidade().getUf().getCodIbge().toString());
		ide.setCNF(this.apoioNfe.zeroFill(this.nfeDados.getCnf().toString(), 8));
		ide.setNatOp(this.apoioNfe.limitarTamanho(this.nfeDados.getNatOp(), 60));
		ide.setIndPag(this.nfeDados.getIndPag().toString());
		ide.setMod(this.nfeDados.getModelo().toString());
		ide.setSerie(this.nfeDados.getSerieNota().toString());
		ide.setNNF(this.nfeDados.getNnf().toString());
		ide.setDEmi(this.apoioNfe.toXMLDate(this.nfeDados.getDemi()));
		ide.setDSaiEnt(this.apoioNfe.toXMLDate(this.nfeDados.getDsaiEnt()));
		ide.setHSaiEnt(this.apoioNfe.toXMLHora(this.nfeDados.getDsaiEnt()));
		ide.setTpNF(this.nfeDados.getTpNf().toString());
		ide.setCMunFG(this.nfeDados.getCmunFg().toString());

		// Notas referenciadas
		notasReferenciadas();

		ide.setTpImp(this.nfeDados.getTpImp().toString()); 
		ide.setTpEmis(this.nfeDados.getTpEmis().toString());

		ide.setCDV(this.nfeDados.getCdv().toString());
		ide.setTpAmb(this.nfeDados.getTpAmb().toString());
		ide.setFinNFe(this.nfeDados.getFinNfe().toString());
		ide.setProcEmi(this.nfeDados.getProcEmi().toString());
		ide.setVerProc(this.nfeDados.getVerProc());
	}

	private String notasReferenciadas(){

		// ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>. precisa continuar
		return "";
	}

	private void emitente(ObjectFactory factory, TNFe nfe){
		Emit emit = nfe.getInfNFe().getEmit();

		emit.setCNPJ(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(this.nfeDados.getEmitente().getCnpj()), 14));
		emit.setXNome(this.nfeDados.getEmitente().getNome());
		if (!this.nfeDados.getEmitente().getFantasia().equals(""))
			emit.setXFant(this.nfeDados.getEmitente().getFantasia());
		// Endereço do emitente
		TEnderEmi end = factory.createTEnderEmi();
		emit.setEnderEmit(end);
		end.setXLgr(this.nfeDados.getEmitente().getEndereco());
		end.setNro(this.nfeDados.getEmitente().getNumero());
		if (!this.nfeDados.getEmitente().getComplemento().equals(""))
			end.setXCpl(this.nfeDados.getEmitente().getComplemento());
		end.setXBairro(this.nfeDados.getEmitente().getBairro());
		end.setCMun(this.apoioNfe.zeroFill(this.nfeDados.getEmitente().getCidade().getCodIbge().toString(), 7));
		end.setXMun(this.nfeDados.getEmitente().getCidade().getNome());
		end.setUF(TUfEmi.fromValue(this.nfeDados.getEmitente().getCidade().getUf().getAbreviatura()));
		end.setCEP(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(this.nfeDados.getEmitente().getCep()), 8));
		end.setCPais(this.apoioNfe.zeroFill(this.nfeDados.getEmitente().getCidade().getUf().getPais().getCodIbge().toString(), 4));
		end.setXPais(this.nfeDados.getEmitente().getCidade().getUf().getPais().getNome());
		end.setFone(this.apoioNfe.semParentese(this.nfeDados.getEmitente().getTelefone()));
		emit.setIE(this.apoioNfe.semPonto(this.nfeDados.getEmitente().getIe()));
		
		ConfiguracoesDao configuracoesDao = new ConfiguracoesDao(session);
		emit.setCRT(configuracoesDao.getParametro("NFE_CRT"));
	}

	private void destinatario(ObjectFactory factory, TNFe nfe){
		Dest dest = factory.createTNFeInfNFeDest();
		nfe.getInfNFe().setDest(dest);

		if (this.nfeDados.getDestinatario().getCnpj() == null){
			dest.setCNPJ("");
		}else{
			if (this.nfeDados.getDestinatario().isPessoa_fisica()) 
				dest.setCPF(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(this.nfeDados.getDestinatario().getCnpj()), 11)); 
			else
				dest.setCNPJ(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(this.nfeDados.getDestinatario().getCnpj()), 14));
		}
		dest.setXNome(this.apoioNfe.limitarTamanho(this.nfeDados.getDestinatario().getNome(), 60));

		// Endereço do destinatario
		PessoaEndereco endereco = getEnderecoPessoa(this.nfeDados.getDestinatario().getId());
		TEndereco end = factory.createTEndereco();
		dest.setEnderDest(end);

		end.setXLgr(endereco.getEndereco());
		end.setNro(endereco.getNumero());
		if (endereco.getComplemento() != null && (!endereco.getComplemento().equals("")) && (!endereco.getComplemento().equals("null")))
			end.setXCpl(endereco.getComplemento());
		end.setXBairro(endereco.getBairro());
		end.setCMun(this.apoioNfe.zeroFill(endereco.getCidade().getCodIbge().toString(), 7));
		end.setXMun(endereco.getCidade().getNome());
		end.setUF(TUf.fromValue(endereco.getCidade().getUf().getAbreviatura()));
		end.setCEP(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(endereco.getCep()), 8));
		end.setCPais(this.apoioNfe.zeroFill(endereco.getCidade().getUf().getPais().getCodIbge().toString(), 4));
		end.setXPais(endereco.getCidade().getUf().getPais().getNome());

		PessoaContatoDao pessoaContatoDao = new PessoaContatoDao(session);
		PessoaContato pessoaContato = pessoaContatoDao.procura(this.nfeDados.getDestinatario().getId());
		end.setFone(this.apoioNfe.semParentese(pessoaContato.getTelefone()));

		dest.setIE(this.apoioNfe.semPonto(this.nfeDados.getDestinatario().getIe()));
	}

	//Falta concluir
	private void localEntraga(ObjectFactory factory, TNFe nfe) {

	}

// Conferir com o contador as caracteristicas dos impostos
	private void produtos(ObjectFactory factory, TNFe nfe) {
		NfeDetalheDao nfeDetalheDao = new NfeDetalheDao(session);
		List<NfeDetalhe> itens = nfeDetalheDao.getNfeItens(this.nfeDados.getId());
		Integer sequencia = 0;

		for (NfeDetalhe nfeItem : itens) {
			Det det = factory.createTNFeInfNFeDet();
			nfe.getInfNFe().getDet().add(det);

			sequencia = sequencia + 1;

			Prod prod = factory.createTNFeInfNFeDetProd();
			det.setProd(prod);

			det.setNItem(sequencia.toString());

			prod.setCProd(nfeItem.getCprod());
			prod.setCEAN("");
			prod.setXProd(nfeItem.getXprod());
			prod.setNCM(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(nfeItem.getNcm()), 8));
			prod.setEXTIPI(nfeItem.getExTipi());
			prod.setCFOP(nfeItem.getCfop().toString());
			prod.setUCom(nfeItem.getUcom());
			prod.setQCom(this.apoioNfe.toQtde(nfeItem.getQcom(), 4));
			prod.setVUnCom(this.apoioNfe.toQtde(nfeItem.getVunCom(), 4));
			prod.setVProd(this.apoioNfe.toQtde(nfeItem.getVprod(), 2));
			prod.setCEANTrib("");
			prod.setUTrib(nfeItem.getUtrib());
			prod.setQTrib(this.apoioNfe.toQtde(nfeItem.getQtrib(), 4));
			prod.setVUnTrib(this.apoioNfe.toQtde(nfeItem.getVunTrib(), 4));

			if (nfeItem.getVfrete() > 0)
				prod.setVFrete(this.apoioNfe.toQtde(nfeItem.getVfrete(), 2));
			if (nfeItem.getVseg() > 0)
				prod.setVSeg(this.apoioNfe.toQtde(nfeItem.getVseg(), 2));
			if (nfeItem.getVdesc() > 0)
				prod.setVDesc(this.apoioNfe.toQtde(nfeItem.getVdesc(), 2));
			if (nfeItem.getVoutro() > 0)
				prod.setVOutro(this.apoioNfe.toQtde(nfeItem.getVoutro(), 2));
			prod.setIndTot(nfeItem.getIndTot());

			if (!nfeItem.getNdi().equals("")){
				DI di = factory.createTNFeInfNFeDetProdDI();
				prod.getDI().add(di);

				di.setNDI(nfeItem.getNdi());
				di.setDDI(this.apoioNfe.toXMLDate(nfeItem.getDdi()));
				di.setXLocDesemb(nfeItem.getXlocDesemb());
				di.setUFDesemb(TUfEmi.fromValue(nfeItem.getUfDesemb()));
				di.setDDesemb(this.apoioNfe.toXMLDate(nfeItem.getDdesemb()));
				di.setCExportador(nfeItem.getCexportador());
			}

			Imposto imposto = factory.createTNFeInfNFeDetImposto();
			det.setImposto(imposto);
			ICMS icmsTag = factory.createTNFeInfNFeDetImpostoICMS();
			imposto.setICMS(icmsTag);

			int crt = -1;	
			try {
				crt = this.nfeDados.getEmit_crt();	
			} catch (Exception e) { }

			NfeIcmsDao nfeIcmsDao = new NfeIcmsDao(session);
			NfeIcms nfeIcms = nfeIcmsDao.procura(nfeItem.getId());
			if (crt > 1){
				int cst = nfeIcms.getCst();
				if (cst == 40 || cst == 41 || cst == 50){
					ICMS40 icms = factory.createTNFeInfNFeDetImpostoICMSICMS40();
					icmsTag.setICMS40(popularIcms40(nfeIcms, icms));
				}
				if (cst == 0){
					ICMS00 icms = factory.createTNFeInfNFeDetImpostoICMSICMS00();
					icmsTag.setICMS00(popularIcms00(nfeIcms, icms));
				}
				if (cst == 10){
					ICMS10 icms = factory.createTNFeInfNFeDetImpostoICMSICMS10();
					icmsTag.setICMS10(popularIcms10(nfeIcms, icms));
				}
				if (cst == 20){
					ICMS20 icms = factory.createTNFeInfNFeDetImpostoICMSICMS20();
					icmsTag.setICMS20(popularIcms20(nfeIcms, icms));
				}
				if (cst == 30){
					ICMS30 icms = factory.createTNFeInfNFeDetImpostoICMSICMS30();
					icmsTag.setICMS30(popularIcms30(nfeIcms, icms));
				}
				if (cst == 40 || cst == 41 || cst == 50){
					ICMS40 icms = factory.createTNFeInfNFeDetImpostoICMSICMS40();
					icmsTag.setICMS40(popularIcms40(nfeIcms, icms));
				}
				if (cst == 51){
					ICMS51 icms = factory.createTNFeInfNFeDetImpostoICMSICMS51();
					icmsTag.setICMS51(popularIcms51(nfeIcms, icms));
				}
				if (cst == 60){
					ICMS60 icms = factory.createTNFeInfNFeDetImpostoICMSICMS60();
					icmsTag.setICMS60(popularIcms60(nfeIcms, icms));
				}
				if (cst == 70){
					ICMS70 icms = factory.createTNFeInfNFeDetImpostoICMSICMS70();
					icmsTag.setICMS70(popularIcms70(nfeIcms, icms));
				}
				if (cst == 90){
					ICMS90 icms = factory.createTNFeInfNFeDetImpostoICMSICMS90();
					icmsTag.setICMS90(popularIcms90(nfeIcms, icms));
				}
			}else{
				if (crt == 1){ //Simples Nacional
					int csosn = nfeIcms.getCsosn();
					if (csosn == 101){
						ICMSSN101 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN101();
						icmsTag.setICMSSN101(popularCsosn101(nfeIcms, icms));
					}
					if (csosn == 102 || csosn == 103 || csosn == 300 || csosn == 400){
						ICMSSN102 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN102();
						icmsTag.setICMSSN102(popularCsosn102(nfeIcms, icms));
					}
					if (csosn == 201){
						ICMSSN201 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN201();
						icmsTag.setICMSSN201(popularCsosn201(nfeIcms, icms));
					}
					if (csosn == 202){
						ICMSSN202 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN202();
						icmsTag.setICMSSN202(popularCsosn202(nfeIcms, icms));
					}

					if (csosn == 500){
						ICMSSN500 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN500();
						icmsTag.setICMSSN500(popularCsosn500(nfeIcms, icms));
					}
					if (csosn == 900){
						ICMSSN900 icms = factory.createTNFeInfNFeDetImpostoICMSICMSSN900();
						icmsTag.setICMSSN900(popularCsosn900(nfeIcms, icms));
					}
				}
			}

			IPI ipi = factory.createTNFeInfNFeDetImpostoIPI();
			impostoIpi(nfeItem, ipi, factory, imposto);

			II ii = factory.createTNFeInfNFeDetImpostoII();
			impostoImportacao(nfeItem, ii, imposto);

			PIS pis = factory.createTNFeInfNFeDetImpostoPIS();
			impostoPis(nfeItem, pis, factory, imposto);

			PISST pisSt = factory.createTNFeInfNFeDetImpostoPISST();
			impostoPisSt(nfeItem, pisSt, factory, imposto);

			COFINS cofins = factory.createTNFeInfNFeDetImpostoCOFINS();
			impostoCofins(nfeItem, cofins, factory, imposto);

			COFINSST cofinsSt = factory.createTNFeInfNFeDetImpostoCOFINSST();
			impostoCofinsSt(nfeItem, cofinsSt, factory, imposto);

			ISSQN issQn = factory.createTNFeInfNFeDetImpostoISSQN();
			impostoIssQn(nfeItem, issQn, factory, imposto);

		}
	}

	private ICMS00 popularIcms00(NfeIcms nfeIcms, ICMS00 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCST(String.valueOf(nfeIcms.getCst()));
		icms.setModBC(nfeIcms.getModBC());
		icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
		icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
		icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
		return icms;
	}

	private ICMS10 popularIcms10(NfeIcms nfeIcms, ICMS10 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCST(String.valueOf(nfeIcms.getCst()));
		icms.setModBC(nfeIcms.getModBC());
		icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
		icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
		icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
		icms.setModBCST(nfeIcms.getModBCst().toString());
		icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
		icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
		icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
		icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
		icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
		return icms;
	}

	private ICMS20 popularIcms20(NfeIcms nfeIcms, ICMS20 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCST(String.valueOf(nfeIcms.getCst()));
		icms.setModBC(nfeIcms.getModBC());
		icms.setPRedBC(this.apoioNfe.toQtde(nfeIcms.getPredBC(), 2));
		icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
		icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
		icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
		return icms;
	}

	private ICMS30 popularIcms30(NfeIcms nfeIcms, ICMS30 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCST(String.valueOf(nfeIcms.getCst()));
		icms.setModBCST(nfeIcms.getModBCst().toString());
		icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
		icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
		icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
		icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
		icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
		return icms;
	}

	private ICMS40 popularIcms40(NfeIcms nfeIcms, ICMS40 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCST(String.valueOf(nfeIcms.getCst()));
		icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
		icms.setMotDesICMS(String.valueOf(nfeIcms.getMotDeslIcms()));
		return icms;
	}

	private ICMS51 popularIcms51(NfeIcms nfeIcms, ICMS51 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCST(String.valueOf(nfeIcms.getCst()));
		icms.setModBC(nfeIcms.getModBC().toString());
		icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
		icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
		icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
		return icms;
	}

	private ICMS60 popularIcms60(NfeIcms nfeIcms, ICMS60 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCST(String.valueOf(nfeIcms.getCst()));
		icms.setVBCSTRet(this.apoioNfe.toQtde(nfeIcms.getVbCstRet(), 2));
		icms.setVICMSSTRet(this.apoioNfe.toQtde(nfeIcms.getVicmsStRet(), 2));
		return icms;
	}

	private ICMS70 popularIcms70(NfeIcms nfeIcms, ICMS70 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCST(String.valueOf(nfeIcms.getCst()));
		icms.setModBC(nfeIcms.getModBC());
		icms.setPRedBC(this.apoioNfe.toQtde(nfeIcms.getPredBC(), 2));
		icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
		icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
		icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
		icms.setModBCST(nfeIcms.getModBCst().toString());
		icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
		icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
		icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
		icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
		icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
		return icms;
	}

	private ICMS90 popularIcms90(NfeIcms nfeIcms, ICMS90 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCST(String.valueOf(nfeIcms.getCst()));
		icms.setModBC(nfeIcms.getModBC());
		icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
		icms.setPRedBC(this.apoioNfe.toQtde(nfeIcms.getPredBC(), 2));
		icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
		icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
		icms.setModBCST(nfeIcms.getModBCst().toString());
		icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
		icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
		icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
		icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
		icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
		return icms;
	}

	private ICMSSN101 popularCsosn101(NfeIcms nfeIcms, ICMSSN101 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
		icms.setPCredSN(this.apoioNfe.toQtde(nfeIcms.getPcredSn(), 2));
		icms.setVCredICMSSN(this.apoioNfe.toQtde(nfeIcms.getVcredIcmsSn(), 2));
		return icms;
	}

	private ICMSSN102 popularCsosn102(NfeIcms nfeIcms, ICMSSN102 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
		return icms;
	}

	private ICMSSN201 popularCsosn201(NfeIcms nfeIcms, ICMSSN201 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
		icms.setModBCST(nfeIcms.getModBCst().toString());
		icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
		icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
		icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
		icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
		icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
		icms.setPCredSN(this.apoioNfe.toQtde(nfeIcms.getPcredSn(), 2));
		icms.setVCredICMSSN(this.apoioNfe.toQtde(nfeIcms.getVcredIcmsSn(), 2));
		return icms;
	}

	private ICMSSN202 popularCsosn202(NfeIcms nfeIcms, ICMSSN202 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
		icms.setModBCST(nfeIcms.getModBCst().toString());
		icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
		icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
		icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
		icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
		icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
		return icms;
	}

	private ICMSSN500 popularCsosn500(NfeIcms nfeIcms, ICMSSN500 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
		icms.setVBCSTRet(this.apoioNfe.toQtde(nfeIcms.getVbCstRet(), 2));
		icms.setVICMSSTRet(this.apoioNfe.toQtde(nfeIcms.getVicmsStRet(), 2));
		return icms;
	}

	private ICMSSN900 popularCsosn900(NfeIcms nfeIcms, ICMSSN900 icms) {
		icms.setOrig(String.valueOf(nfeIcms.getOrigem()));
		icms.setCSOSN(String.valueOf(nfeIcms.getCsosn()));
		icms.setModBC(String.valueOf(nfeIcms.getModBC()));
		icms.setVBC(this.apoioNfe.toQtde(nfeIcms.getVbc(), 2));
		icms.setPRedBC(this.apoioNfe.toQtde(nfeIcms.getPredBC(), 2));
		icms.setPICMS(this.apoioNfe.toQtde(nfeIcms.getPicms(), 2));
		icms.setVICMS(this.apoioNfe.toQtde(nfeIcms.getVicms(), 2));
		icms.setModBCST(nfeIcms.getModBCst().toString());
		icms.setPMVAST(this.apoioNfe.toQtde(nfeIcms.getPmVast(), 2));
		icms.setPRedBCST(this.apoioNfe.toQtde(nfeIcms.getPredBcst(), 2));
		icms.setVBCST(this.apoioNfe.toQtde(nfeIcms.getVbCst(), 2));
		icms.setPICMSST(this.apoioNfe.toQtde(nfeIcms.getPicmsSt(), 2));
		icms.setVICMSST(this.apoioNfe.toQtde(nfeIcms.getVicmsSt(), 2));
		icms.setPCredSN(this.apoioNfe.toQtde(nfeIcms.getPcredSn(), 2));
		icms.setVCredICMSSN(this.apoioNfe.toQtde(nfeIcms.getVcredIcmsSn(), 2));
		return icms;
	}

	// ------------------------------------------------------------------------------------

	private void impostoIpi(NfeDetalhe detItem, IPI ipi, ObjectFactory factory, Imposto imposto){
		try {
			NfeIpiDao nfeIpiDao = new NfeIpiDao(session);
			NfeIpi nfeIpi = nfeIpiDao.procura(detItem.getId());
			if (nfeIpi.getClEnq() != null)
				ipi.setClEnq(String.valueOf(nfeIpi.getClEnq()));
			if (nfeIpi.getCnpjProd() != null)
				ipi.setCNPJProd(String.valueOf(nfeIpi.getCnpjProd()));
			if (nfeIpi.getCselo() != null)
				ipi.setCSelo(String.valueOf(nfeIpi.getCselo()));
			if (nfeIpi.getQselo() != null)
				ipi.setQSelo(String.valueOf(nfeIpi.getQselo()));
			ipi.setCEnq(String.valueOf(nfeIpi.getCenq()));

			int cst = nfeIpi.getCst();
			if (cst == 0 || cst == 49 || cst == 50 || cst == 99){
				IPITrib ipiTrib = factory.createTNFeInfNFeDetImpostoIPIIPITrib();
				ipi.setIPITrib(ipiTrib);
				
				ipiTrib.setCST(this.apoioNfe.zeroFill(nfeIpi.getCst().toString(), 2));
				if (nfeIpi.getVbc() > 0){
					ipiTrib.setVBC(this.apoioNfe.toQtde(nfeIpi.getVbc(), 2));
					ipiTrib.setPIPI(this.apoioNfe.toQtde(nfeIpi.getPipi(), 2));
				}else{
					if (nfeIpi.getQunid() > 0){
						ipiTrib.setQUnid(this.apoioNfe.toQtde(nfeIpi.getQunid(), 4));
						ipiTrib.setVUnid(this.apoioNfe.toQtde(nfeIpi.getVunid(), 4));
					}
				}
				ipiTrib.setVIPI(this.apoioNfe.toQtde(nfeIpi.getVipi(), 2));
			}else{
				if (cst == 01 || cst == 02 || cst == 03 || cst == 04 || cst == 51 || cst == 52 || cst == 53 || cst == 54 || cst == 55){
					IPINT ipiNt = factory.createTNFeInfNFeDetImpostoIPIIPINT();
					ipi.setIPINT(ipiNt);
					ipiNt.setCST(this.apoioNfe.zeroFill(nfeIpi.getCst().toString(), 2));
				}
			}
			
			imposto.setIPI(ipi);
			
		} catch (Exception e) {
		}
	}

	private void impostoImportacao(NfeDetalhe detItem, II ii, Imposto imposto){
		try {
			NfeImpostoImportDao nfeImpostoImportDao = new NfeImpostoImportDao(session);
			NfeImpostoImport nfeII = nfeImpostoImportDao.procura(detItem.getId());
			ii.setVBC(this.apoioNfe.toQtde(nfeII.getVbc(), 2));
			ii.setVDespAdu(this.apoioNfe.toQtde(nfeII.getVdespAdu(), 2));
			ii.setVII(this.apoioNfe.toQtde(nfeII.getVii(), 2));
			ii.setVIOF(this.apoioNfe.toQtde(nfeII.getViof(), 2));
			
			imposto.setII(ii);

		} catch (Exception e) {	}
	}

	private void impostoPis(NfeDetalhe detItem, PIS pis, ObjectFactory factory, Imposto imposto){
		try {
			NfePisDao nfePisDao = new NfePisDao(session);
			NfePis nfePis = nfePisDao.procura(detItem.getId());
			int cst = nfePis.getCst();
			if (cst == 01 || cst == 02){
				PISAliq pisAliq = factory.createTNFeInfNFeDetImpostoPISPISAliq();
				pis.setPISAliq(pisAliq);

				pisAliq.setCST(nfePis.getCst().toString());
				pisAliq.setVBC(this.apoioNfe.toQtde(nfePis.getVbc(), 2));
				pisAliq.setPPIS(this.apoioNfe.toQtde(nfePis.getPpis(), 2));
				pisAliq.setVPIS(this.apoioNfe.toQtde(nfePis.getVpis(), 2));
			}
			if (cst == 03){
				PISQtde pisQtde = factory.createTNFeInfNFeDetImpostoPISPISQtde();
				pis.setPISQtde(pisQtde);

				pisQtde.setCST(nfePis.getCst().toString());
				pisQtde.setQBCProd(this.apoioNfe.toQtde(nfePis.getQbcProd(), 4));
				pisQtde.setVAliqProd(this.apoioNfe.toQtde(nfePis.getValiqProd(), 4));
				pisQtde.setVPIS(this.apoioNfe.toQtde(nfePis.getVpis(), 2));
			}
			if (cst == 4 || cst == 6 || cst == 7 || cst == 8 || cst == 9){
				PISNT pisNt = factory.createTNFeInfNFeDetImpostoPISPISNT();
				pis.setPISNT(pisNt);

				pisNt.setCST(nfePis.getCst().toString());
			}
			if (cst == 99){
				PISOutr pisOutr = factory.createTNFeInfNFeDetImpostoPISPISOutr();
				pis.setPISOutr(pisOutr);

				pisOutr.setCST(nfePis.getCst().toString());
				pisOutr.setVBC(this.apoioNfe.toQtde(nfePis.getVbc(), 2));
				pisOutr.setPPIS(this.apoioNfe.toQtde(nfePis.getPpis(), 2));
				pisOutr.setVPIS(this.apoioNfe.toQtde(nfePis.getVpis(), 2));
			}
			
			imposto.setPIS(pis);

		} catch (Exception e) {	}
	}

	private void impostoPisSt(NfeDetalhe detItem, PISST pisSt, ObjectFactory factory, Imposto imposto){
		try {
			NfePisStDao nfePisStDao = new NfePisStDao(session);
			NfePisSt nfePisSt = nfePisStDao.procura(detItem.getId());
			pisSt.setVBC(this.apoioNfe.toQtde(nfePisSt.getVbc(), 2));
			pisSt.setPPIS(this.apoioNfe.toQtde(nfePisSt.getPpis(), 2));

			pisSt.setVPIS(this.apoioNfe.toQtde(nfePisSt.getVpis(), 2));

			imposto.setPISST(pisSt);

		} catch (Exception e) {	}
	}

	private void impostoCofins(NfeDetalhe detItem, COFINS cofins, ObjectFactory factory, Imposto imposto){
		try {
			NfeCofinsDao nfeCofinsDao = new NfeCofinsDao(session);
			NfeCofins nfeCofins = nfeCofinsDao.procura(detItem.getId());
			int cst = nfeCofins.getCst();
			if (cst == 01 || cst == 02){
				COFINSAliq cofinsAliq = factory.createTNFeInfNFeDetImpostoCOFINSCOFINSAliq();
				cofins.setCOFINSAliq(cofinsAliq);

				cofinsAliq.setCST(nfeCofins.getCst().toString());
				cofinsAliq.setVBC(this.apoioNfe.toQtde(nfeCofins.getVbc(), 2));
				cofinsAliq.setPCOFINS(this.apoioNfe.toQtde(nfeCofins.getPcofins(), 2));
				cofinsAliq.setVCOFINS(this.apoioNfe.toQtde(nfeCofins.getVcofins(), 2));
			}
			if (cst == 03){
				COFINSQtde cofinsQtde = factory.createTNFeInfNFeDetImpostoCOFINSCOFINSQtde();
				cofins.setCOFINSQtde(cofinsQtde);

				cofinsQtde.setCST(nfeCofins.getCst().toString());
				cofinsQtde.setQBCProd(this.apoioNfe.toQtde(nfeCofins.getQbcProd(), 4));
				cofinsQtde.setVAliqProd(this.apoioNfe.toQtde(nfeCofins.getValiqProd(), 4));
				cofinsQtde.setVCOFINS(this.apoioNfe.toQtde(nfeCofins.getVcofins(), 2));
			}
			if (cst == 4 || cst == 6 || cst == 7 || cst == 8 || cst == 9){
				COFINSNT cofinsNt = factory.createTNFeInfNFeDetImpostoCOFINSCOFINSNT();
				cofins.setCOFINSNT(cofinsNt);

				cofinsNt.setCST(nfeCofins.getCst().toString());
			}
			if (cst == 99){
				COFINSOutr cofinsOutr = factory.createTNFeInfNFeDetImpostoCOFINSCOFINSOutr();
				cofins.setCOFINSOutr(cofinsOutr);

				cofinsOutr.setCST(nfeCofins.getCst().toString());
				cofinsOutr.setVBC(this.apoioNfe.toQtde(nfeCofins.getVbc(), 2));
				cofinsOutr.setPCOFINS(this.apoioNfe.toQtde(nfeCofins.getPcofins(), 2));
				cofinsOutr.setVCOFINS(this.apoioNfe.toQtde(nfeCofins.getVcofins(), 2));
			}
			
			imposto.setCOFINS(cofins);
			
		} catch (Exception e) {}
	}

	private void impostoCofinsSt(NfeDetalhe detItem, COFINSST cofinsSt, ObjectFactory factory,  Imposto imposto){
		try {
			NfeCofinsStDao nfeCofinsStDao = new NfeCofinsStDao(session);
			NfeCofinsSt nfeCofinsSt = nfeCofinsStDao.procura(detItem.getId());
			cofinsSt.setVBC(this.apoioNfe.toQtde(nfeCofinsSt.getVbc(), 2));
			cofinsSt.setPCOFINS(this.apoioNfe.toQtde(nfeCofinsSt.getPcofins(), 2));
			cofinsSt.setQBCProd(this.apoioNfe.toQtde(nfeCofinsSt.getQbcProd(), 4));
			cofinsSt.setVAliqProd(this.apoioNfe.toQtde(nfeCofinsSt.getValiqProd(), 4));
			cofinsSt.setVCOFINS(this.apoioNfe.toQtde(nfeCofinsSt.getVcofins(), 2));
			
			imposto.setCOFINSST(cofinsSt);

		} catch (Exception e) {}
	}


	private void impostoIssQn(NfeDetalhe detItem, ISSQN issQn, ObjectFactory factory,  Imposto imposto){
		try {
			NfeIssQnDao nfeIssQnDao = new NfeIssQnDao(session);
			NfeIssQn nfeIssQn = nfeIssQnDao.procura(detItem.getId());
			issQn.setVBC(this.apoioNfe.toQtde(nfeIssQn.getVbc(), 2));
			issQn.setVAliq(this.apoioNfe.toQtde(nfeIssQn.getValiq(), 2));
			issQn.setVISSQN(this.apoioNfe.toQtde(nfeIssQn.getVissQn(), 2));
			issQn.setCMunFG(this.nfeDados.getEmitente().getCidade().getCodIbge().toString());
			issQn.setCListServ(nfeIssQn.getClistServ());
			issQn.setCSitTrib(nfeIssQn.getCsitTrib());
			
			imposto.setISSQN(issQn);

		} catch (Exception e) {}
	}


	private void valorTotal(ObjectFactory factory, TNFe nfe){

		Total total = factory.createTNFeInfNFeTotal();
		nfe.getInfNFe().setTotal(total);

		ICMSTot icmsTot = factory.createTNFeInfNFeTotalICMSTot();

		total.setICMSTot(icmsTot);

		icmsTot.setVBC(this.apoioNfe.toQtde(nfeDados.getVbc(), 2));
		icmsTot.setVICMS(this.apoioNfe.toQtde(nfeDados.getVicms(), 2));
		icmsTot.setVBCST(this.apoioNfe.toQtde(nfeDados.getVbCst(), 2));
		icmsTot.setVST(this.apoioNfe.toQtde(nfeDados.getVst(), 2));
		icmsTot.setVProd(this.apoioNfe.toQtde(nfeDados.getVprod(), 2));
		icmsTot.setVFrete(this.apoioNfe.toQtde(nfeDados.getVfrete(), 2));
		icmsTot.setVSeg(this.apoioNfe.toQtde(nfeDados.getVseg(), 2));
		icmsTot.setVDesc(this.apoioNfe.toQtde(nfeDados.getVdesc(), 2));
		icmsTot.setVII(this.apoioNfe.toQtde(nfeDados.getVii(), 2));
		icmsTot.setVIPI(this.apoioNfe.toQtde(nfeDados.getVipi(), 2));
		icmsTot.setVPIS(this.apoioNfe.toQtde(nfeDados.getVpis(), 2));
		icmsTot.setVCOFINS(this.apoioNfe.toQtde(nfeDados.getVcofins(), 2));
		icmsTot.setVOutro(this.apoioNfe.toQtde(nfeDados.getVoutro(), 2));
		icmsTot.setVNF(this.apoioNfe.toQtde(nfeDados.getVnf(), 2));

		//        if (issTot.getVBC() != null || issTot.getVCOFINS() != null || 
		//        		issTot.getVISS() != null || issTot.getVPIS() != null || 
		//        		issTot.getVPIS() != null) 
		//       	total.setISSQNtot(issTot);
	}

	private void transporte(ObjectFactory factory, TNFe nfe){
		NfeTransporteDao nfeTransporteDao = new NfeTransporteDao(session);
		NfeTransporte nfeTransporte = nfeTransporteDao.procura(this.nfeDados.getId());

		Transp transp = factory.createTNFeInfNFeTransp();
		nfe.getInfNFe().setTransp(transp);

		Transporta transporta = factory.createTNFeInfNFeTranspTransporta();
		RetTransp retTransp = factory.createTNFeInfNFeTranspRetTransp();
		TVeiculo veiculo = factory.createTVeiculo();

		transp.setModFrete(nfeTransporte.getModFrete().toString());

		if (nfeTransporte.getCfop() != null || nfeTransporte.getCmunFg() != null || nfeTransporte.getVicmsRet() != 0) {
			retTransp.setVServ(this.apoioNfe.toQtde(nfeTransporte.getVserv(), 2));
			retTransp.setVBCRet(this.apoioNfe.toQtde(nfeTransporte.getVbcRet(), 2));
			retTransp.setPICMSRet(this.apoioNfe.toQtde(nfeTransporte.getPicmsRet(), 2));
			retTransp.setVICMSRet(this.apoioNfe.toQtde(nfeTransporte.getVicmsRet(), 2));
			retTransp.setCFOP(nfeTransporte.getCfop().toString());
			retTransp.setCMunFG(nfeTransporte.getCmunFg());
			transp.setRetTransp(retTransp);
		}

		PessoaEndereco endereco = null;
		if (nfeTransporte.getTransportadora() != null){
			if (nfeTransporte.getTransportadora().isPessoa_fisica()){
				transporta.setCPF(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(nfeTransporte.getTransportadora().getCnpj()), 11));
			}else{
				transporta.setCNPJ(this.apoioNfe.zeroFill(this.apoioNfe.semPonto(nfeTransporte.getTransportadora().getCnpj()), 14));
			}

			transporta.setXNome(nfeTransporte.getTransportadora().getNome());
			transporta.setIE(nfeTransporte.getTransportadora().getIe());

			endereco = getEnderecoPessoa(nfeTransporte.getTransportadora().getId());
			transporta.setXEnder(endereco.getEndereco());
			transporta.setXMun(endereco.getCidade().getNome());
			transporta.setUF(TUf.valueOf(endereco.getCidade().getUf().getAbreviatura()));

			if (nfeTransporte.getTransportadora().getNome() != null || nfeTransporte.getTransportadora().getCnpj() != null) {
				transp.setTransporta(transporta);
			}
		}

		veiculo.setPlaca(nfeTransporte.getPlaca());
		if (endereco != null)
			veiculo.setUF(TUf.valueOf(endereco.getCidade().getUf().getAbreviatura()));
		veiculo.setRNTC(nfeTransporte.getRntc());

		if (nfeTransporte.getPlaca() != null || nfeTransporte.getRntc() != null) {
			transp.setVeicTransp(veiculo);
		}
	}

	private void cobranca(ObjectFactory factory, TNFe nfe){
		NfeFaturaDao nfeFaturaDao = new NfeFaturaDao(session);
		NfeFatura cobranca = nfeFaturaDao.procura(this.nfeDados.getId());

		Cobr cobr = factory.createTNFeInfNFeCobr();
		nfe.getInfNFe().setCobr(cobr);

		Fat fat = factory.createTNFeInfNFeCobrFat();
		cobr.setFat(fat);
		fat.setNFat(cobranca.getNfat());
		fat.setVOrig(this.apoioNfe.toQtde(cobranca.getVorig(), 2));
		fat.setVDesc(this.apoioNfe.toQtde(cobranca.getVdesc(), 2));
		fat.setVLiq(this.apoioNfe.toQtde(cobranca.getVliq(), 2));

		NfeDuplicataDao nfeDuplicataDao = new NfeDuplicataDao(session);
		List<NfeDuplicata> nfeDuplicatas = nfeDuplicataDao.getDuplicatas(cobranca.getId());
		for (NfeDuplicata nfeDuplicata : nfeDuplicatas) {
			Dup dup = factory.createTNFeInfNFeCobrDup();
			dup.setNDup(nfeDuplicata.getNdup());
			dup.setDVenc(this.apoioNfe.toXMLDate(nfeDuplicata.getDvenc()));
			dup.setVDup(this.apoioNfe.toQtde(nfeDuplicata.getVdup(), 2));
			cobr.getDup().add(dup);
		}
	}

	private void informacoesAdicionais(ObjectFactory factory, TNFe nfe){
		InfAdic adic = factory.createTNFeInfNFeInfAdic();

		if (nfeDados.getInfAdFisco() != null){
			String xTexto = nfeDados.getInfAdFisco();
			adic.setInfAdFisco(xTexto);
		}
		if (nfeDados.getInfCpl() != null){
			String xTexto = nfeDados.getInfCpl();
			adic.setInfCpl(xTexto);
		}

		if (nfeDados.getInfCpl() != null || nfeDados.getInfCpl() != null) {
			nfe.getInfNFe().setInfAdic(adic);
		}

		NfeInfAdicionaisDao nfeInfAdicionaisDao = new NfeInfAdicionaisDao(session);
		List<NfeInfAdicionais> informacoes = nfeInfAdicionaisDao.getNfeInformacoes(this.nfeDados.getId());
		for (NfeInfAdicionais nfeInfAdicionais : informacoes) {
			ObsCont obscont = factory.createTNFeInfNFeInfAdicObsCont();
			obscont.setXCampo(nfeInfAdicionais.getXcampo());
			String xtexto = nfeInfAdicionais.getXtexto();
			obscont.setXTexto(xtexto);

			if (adic != null) {
				List<ObsCont> list = adic.getObsCont();
				if (list != null) {
					list.add(obscont);
				}
			}
		}
	}

// ------------------------------------------------------------------------------------
	private PessoaEndereco getEnderecoPessoa(Long idPessoa){
		PessoaEndereco endPrincipal = null;
		PessoaEnderecoDao pessoaEnderecoDao = new PessoaEnderecoDao(session);
		List<PessoaEndereco> enderecos = pessoaEnderecoDao.buscaEnderecos(idPessoa);
		for (PessoaEndereco end : enderecos) {
			if (end.getTpEndereco() == 0)
				endPrincipal = end;
		}

		return endPrincipal;
	}
}

Detalhe: na hora de assinar, retire o atributo xmlns:ns2

doc.getDocumentElement().removeAttribute("xmlns:ns2");
T

Cara, eu fiz o seguinte, consegui adicionar os namespace normalmente, como vc sugeriu, e o retorno foi o mesmo…

Agora o encoding antes do envelope, eu não sei se consegui fazer corretamente, eu fiz o seguinte:

MimeHeaders mimeHeaders = soapMessage.getMimeHeaders(); mimeHeaders.addHeader("Content-Type","text/xml; charset=UTF-8");

Quando eu dei print na msg, ela colocou o encoding, assim:

Mas quando pego o resultado do debug mesmo, ele não mostra, fica assim:

De todas as formas ele continuou dando o mesmo resultado, não sei se fiz tudo corretamente…
Não consigo mecher em muita coisa no fds, pois o certificado fica na empresa, e é dificil de eu ir pra la, só hj que consegui, agora provavelmente só na segunda…

Vou mandar meu msn pra vc por mp…

Valew!

T

AGAraujo,

Olha só, tentei mudar a implementação pra ver se o erro iria persistir, fiz a implementação dessa vez utilizando axis2(prefiro da outra forma, acho bem mais enxuto), e obtive o mesmo resultado...

Esse foi o envelope gerado:
0000: 32 36 61 0D 0A 3C 3F 78   6D 6C 20 76 65 72 73 69  26a..<?xml versi
0010: 6F 6E 3D 22 31 2E 30 22   20 65 6E 63 6F 64 69 6E  on="1.0" encodin
0020: 67 3D 22 55 54 46 2D 38   22 3F 3E 3C 73 6F 61 70  g="UTF-8"?><soap
0030: 65 6E 76 3A 45 6E 76 65   6C 6F 70 65 20 78 6D 6C  env:Envelope xml
0040: 6E 73 3A 73 6F 61 70 65   6E 76 3D 22 68 74 74 70  ns:soapenv="http
0050: 3A 2F 2F 77 77 77 2E 77   33 2E 6F 72 67 2F 32 30  ://www.w3.org/20
0060: 30 33 2F 30 35 2F 73 6F   61 70 2D 65 6E 76 65 6C  03/05/soap-envel
0070: 6F 70 65 22 3E 3C 73 6F   61 70 65 6E 76 3A 48 65  ope"><soapenv:He
0080: 61 64 65 72 3E 3C 6E 73   31 3A 6E 66 65 43 61 62  ader><ns1:nfeCab
0090: 65 63 4D 73 67 20 78 6D   6C 6E 73 3A 6E 73 31 3D  ecMsg xmlns:ns1=
00A0: 22 68 74 74 70 3A 2F 2F   77 77 77 2E 70 6F 72 74  "http://www.port
00B0: 61 6C 66 69 73 63 61 6C   2E 69 6E 66 2E 62 72 2F  alfiscal.inf.br/
00C0: 6E 66 65 2F 77 73 64 6C   2F 4E 66 65 52 65 74 52  nfe/wsdl/NfeRetR
00D0: 65 63 65 70 63 61 6F 32   22 20 73 6F 61 70 65 6E  ecepcao2" soapen
00E0: 76 3A 6D 75 73 74 55 6E   64 65 72 73 74 61 6E 64  v:mustUnderstand
00F0: 3D 22 66 61 6C 73 65 22   3E 3C 6E 73 31 3A 63 55  ="false"><ns1:cU
0100: 46 3E 33 35 3C 2F 6E 73   31 3A 63 55 46 3E 3C 6E  F>35</ns1:cUF><n
0110: 73 31 3A 76 65 72 73 61   6F 44 61 64 6F 73 3E 32  s1:versaoDados>2
0120: 2E 30 30 3C 2F 6E 73 31   3A 76 65 72 73 61 6F 44  .00</ns1:versaoD
0130: 61 64 6F 73 3E 3C 2F 6E   73 31 3A 6E 66 65 43 61  ados></ns1:nfeCa
0140: 62 65 63 4D 73 67 3E 3C   2F 73 6F 61 70 65 6E 76  becMsg></soapenv
0150: 3A 48 65 61 64 65 72 3E   3C 73 6F 61 70 65 6E 76  :Header><soapenv
0160: 3A 42 6F 64 79 3E 3C 6E   73 31 3A 6E 66 65 44 61  :Body><ns1:nfeDa
0170: 64 6F 73 4D 73 67 20 78   6D 6C 6E 73 3A 6E 73 31  dosMsg xmlns:ns1
0180: 3D 22 68 74 74 70 3A 2F   2F 77 77 77 2E 70 6F 72  ="http://www.por
0190: 74 61 6C 66 69 73 63 61   6C 2E 69 6E 66 2E 62 72  talfiscal.inf.br
01A0: 2F 6E 66 65 2F 77 73 64   6C 2F 4E 66 65 52 65 74  /nfe/wsdl/NfeRet
01B0: 52 65 63 65 70 63 61 6F   32 22 3E 3C 63 6F 6E 73  Recepcao2"><cons
01C0: 52 65 63 69 4E 46 65 20   78 6D 6C 6E 73 3D 22 68  ReciNFe xmlns="h
01D0: 74 74 70 3A 2F 2F 77 77   77 2E 70 6F 72 74 61 6C  ttp://www.portal
01E0: 66 69 73 63 61 6C 2E 69   6E 66 2E 62 72 2F 6E 66  fiscal.inf.br/nf
01F0: 65 22 20 76 65 72 73 61   6F 3D 22 32 2E 30 30 22  e" versao="2.00"
0200: 3E 3C 74 70 41 6D 62 3E   32 3C 2F 74 70 41 6D 62  ><tpAmb>2</tpAmb
0210: 3E 3C 6E 52 65 63 3E 33   35 31 30 30 30 30 33 31  ><nRec>351000031
0220: 32 39 34 37 37 31 3C 2F   6E 52 65 63 3E 3C 2F 63  294771</nRec></c
0230: 6F 6E 73 52 65 63 69 4E   46 65 3E 3C 2F 6E 73 31  onsReciNFe></ns1
0240: 3A 6E 66 65 44 61 64 6F   73 4D 73 67 3E 3C 2F 73  :nfeDadosMsg></s
0250: 6F 61 70 65 6E 76 3A 42   6F 64 79 3E 3C 2F 73 6F  oapenv:Body></so
0260: 61 70 65 6E 76 3A 45 6E   76 65 6C 6F 70 65 3E 0D  apenv:Envelope>.
0270: 0A 30 0D 0A 0D 0A FD 4F   61 D1 2C 41 DB E8 E6 58  .0.....Oa.,A...X
0280: D1 5B 15 24 E2 4D                                  .[.$.M


<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header><ns1:nfeCabecMsg xmlns:ns1="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2" soapenv:mustUnderstand="false"><ns1:cUF>35</ns1:cUF><ns1:versaoDados>2.00</ns1:versaoDados></ns1:nfeCabecMsg></soapenv:Header><soapenv:Body><ns1:nfeDadosMsg xmlns:ns1="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><consReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><nRec>351000031294771</nRec></consReciNFe></ns1:nfeDadosMsg></soapenv:Body></soapenv:Envelope>
E o erro foi o mesmo:
0000: 48 54 54 50 2F 31 2E 31   20 32 30 30 20 4F 4B 0D  HTTP/1.1 200 OK.
0010: 0A 44 61 74 65 3A 20 57   65 64 2C 20 32 33 20 4D  .Date: Wed, 23 M
0020: 61 72 20 32 30 31 31 20   31 36 3A 32 39 3A 32 36  ar 2011 16:29:26
0030: 20 47 4D 54 0D 0A 53 65   72 76 65 72 3A 20 4D 69   GMT..Server: Mi
0040: 63 72 6F 73 6F 66 74 2D   49 49 53 2F 36 2E 30 0D  crosoft-IIS/6.0.
0050: 0A 58 2D 50 6F 77 65 72   65 64 2D 42 79 3A 20 41  .X-Powered-By: A
0060: 53 50 2E 4E 45 54 0D 0A   58 2D 41 73 70 4E 65 74  SP.NET..X-AspNet
0070: 2D 56 65 72 73 69 6F 6E   3A 20 32 2E 30 2E 35 30  -Version: 2.0.50
0080: 37 32 37 0D 0A 43 61 63   68 65 2D 43 6F 6E 74 72  727..Cache-Contr
0090: 6F 6C 3A 20 70 72 69 76   61 74 65 2C 20 6D 61 78  ol: private, max
00A0: 2D 61 67 65 3D 30 0D 0A   43 6F 6E 74 65 6E 74 2D  -age=0..Content-
00B0: 54 79 70 65 3A 20 61 70   70 6C 69 63 61 74 69 6F  Type: applicatio
00C0: 6E 2F 73 6F 61 70 2B 78   6D 6C 3B 20 63 68 61 72  n/soap+xml; char
00D0: 73 65 74 3D 75 74 66 2D   38 0D 0A 43 6F 6E 74 65  set=utf-8..Conte
00E0: 6E 74 2D 4C 65 6E 67 74   68 3A 20 37 38 38 0D 0A  nt-Length: 788..
00F0: 0D 0A 3C 3F 78 6D 6C 20   76 65 72 73 69 6F 6E 3D  ..<?xml version=
0100: 22 31 2E 30 22 20 65 6E   63 6F 64 69 6E 67 3D 22  "1.0" encoding="
0110: 75 74 66 2D 38 22 3F 3E   3C 73 6F 61 70 3A 45 6E  utf-8"?><soap:En
0120: 76 65 6C 6F 70 65 20 78   6D 6C 6E 73 3A 73 6F 61  velope xmlns:soa
0130: 70 3D 22 68 74 74 70 3A   2F 2F 77 77 77 2E 77 33  p="http://www.w3
0140: 2E 6F 72 67 2F 32 30 30   33 2F 30 35 2F 73 6F 61  .org/2003/05/soa
0150: 70 2D 65 6E 76 65 6C 6F   70 65 22 20 78 6D 6C 6E  p-envelope" xmln
0160: 73 3A 78 73 69 3D 22 68   74 74 70 3A 2F 2F 77 77  s:xsi="http://ww
0170: 77 2E 77 33 2E 6F 72 67   2F 32 30 30 31 2F 58 4D  w.w3.org/2001/XM
0180: 4C 53 63 68 65 6D 61 2D   69 6E 73 74 61 6E 63 65  LSchema-instance
0190: 22 20 78 6D 6C 6E 73 3A   78 73 64 3D 22 68 74 74  " xmlns:xsd="htt
01A0: 70 3A 2F 2F 77 77 77 2E   77 33 2E 6F 72 67 2F 32  p://www.w3.org/2
01B0: 30 30 31 2F 58 4D 4C 53   63 68 65 6D 61 22 3E 3C  001/XMLSchema"><
01C0: 73 6F 61 70 3A 48 65 61   64 65 72 3E 3C 6E 66 65  soap:Header><nfe
01D0: 43 61 62 65 63 4D 73 67   20 78 6D 6C 6E 73 3D 22  CabecMsg xmlns="
01E0: 68 74 74 70 3A 2F 2F 77   77 77 2E 70 6F 72 74 61  http://www.porta
01F0: 6C 66 69 73 63 61 6C 2E   69 6E 66 2E 62 72 2F 6E  lfiscal.inf.br/n
0200: 66 65 2F 77 73 64 6C 2F   4E 66 65 52 65 74 52 65  fe/wsdl/NfeRetRe
0210: 63 65 70 63 61 6F 32 22   3E 3C 63 55 46 3E 33 35  cepcao2"><cUF>35
0220: 3C 2F 63 55 46 3E 3C 76   65 72 73 61 6F 44 61 64  </cUF><versaoDad
0230: 6F 73 3E 32 2E 30 30 3C   2F 76 65 72 73 61 6F 44  os>2.00</versaoD
0240: 61 64 6F 73 3E 3C 2F 6E   66 65 43 61 62 65 63 4D  ados></nfeCabecM
0250: 73 67 3E 3C 2F 73 6F 61   70 3A 48 65 61 64 65 72  sg></soap:Header
0260: 3E 3C 73 6F 61 70 3A 42   6F 64 79 3E 3C 6E 66 65  ><soap:Body><nfe
0270: 52 65 74 52 65 63 65 70   63 61 6F 32 52 65 73 75  RetRecepcao2Resu
0280: 6C 74 20 78 6D 6C 6E 73   3D 22 68 74 74 70 3A 2F  lt xmlns="http:/
0290: 2F 77 77 77 2E 70 6F 72   74 61 6C 66 69 73 63 61  /www.portalfisca
02A0: 6C 2E 69 6E 66 2E 62 72   2F 6E 66 65 2F 77 73 64  l.inf.br/nfe/wsd
02B0: 6C 2F 4E 66 65 52 65 74   52 65 63 65 70 63 61 6F  l/NfeRetRecepcao
02C0: 32 22 3E 3C 72 65 74 43   6F 6E 73 52 65 63 69 4E  2"><retConsReciN
02D0: 46 65 20 76 65 72 73 61   6F 3D 22 32 2E 30 30 22  Fe versao="2.00"
02E0: 20 78 6D 6C 6E 73 3D 22   68 74 74 70 3A 2F 2F 77   xmlns="http://w
02F0: 77 77 2E 70 6F 72 74 61   6C 66 69 73 63 61 6C 2E  ww.portalfiscal.
0300: 69 6E 66 2E 62 72 2F 6E   66 65 22 3E 3C 74 70 41  inf.br/nfe"><tpA
0310: 6D 62 3E 32 3C 2F 74 70   41 6D 62 3E 3C 76 65 72  mb>2</tpAmb><ver
0320: 41 70 6C 69 63 3E 53 50   5F 4E 46 45 5F 50 4C 5F  Aplic>SP_NFE_PL_
0330: 30 30 36 68 3C 2F 76 65   72 41 70 6C 69 63 3E 3C  006h</verAplic><
0340: 6E 52 65 63 3E 33 35 31   30 30 30 30 33 31 32 39  nRec>[telefone removido]
0350: 34 37 37 31 3C 2F 6E 52   65 63 3E 3C 63 53 74 61  4771</nRec><cSta
0360: 74 3E 35 38 37 3C 2F 63   53 74 61 74 3E 3C 78 4D  t>587</cStat><xM
0370: 6F 74 69 76 6F 3E 52 65   6A 65 69 C3 A7 C3 A3 6F  otivo>Rejei....o
0380: 3A 20 55 73 61 72 20 73   6F 6D 65 6E 74 65 20 6F  : Usar somente o
0390: 20 6E 61 6D 65 73 70 61   63 65 20 70 61 64 72 C3   namespace padr.
03A0: A3 6F 20 64 61 20 4E 46   2D 65 3C 2F 78 4D 6F 74  .o da NF-e</xMot
03B0: 69 76 6F 3E 3C 63 55 46   3E 33 35 3C 2F 63 55 46  ivo><cUF>35</cUF
03C0: 3E 3C 2F 72 65 74 43 6F   6E 73 52 65 63 69 4E 46  ></retConsReciNF
03D0: 65 3E 3C 2F 6E 66 65 52   65 74 52 65 63 65 70 63  e></nfeRetRecepc
03E0: 61 6F 32 52 65 73 75 6C   74 3E 3C 2F 73 6F 61 70  ao2Result></soap
03F0: 3A 42 6F 64 79 3E 3C 2F   73 6F 61 70 3A 45 6E 76  :Body></soap:Env
0400: 65 6C 6F 70 65 3E D7 75   87 69 37 2E 11 74 E4 6A  elope>.u.i7..t.j
0410: C0 9A C2 A4 59 C5                                  ....Y.

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeRetRecepcao2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><retConsReciNFe versao="2.00" xmlns"http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><nRec>351000031294771</nRec><cStat>587</cStat><xMotivo>Rejei....o: Usar somente o namespacepadr..o da NF-e</xMotivo><cUF>35</cUF></retConsReciNFe></nfeRetRecepcao2Result></soap:Body></soap:Envelope>

<retConsReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><nRec>351000031294771</nRec><cStat>587</cStat><xMotivo>Rejeição: Usar somente o namespace padrão da NF-e</xMotivo><cUF>35</cUF></retConsReciNFe>
O stub eu gerei pelo assistente do eclipse mesmo, com axis2, esse é +- o código que uso para enviar a mensagem:
public OutputStream sendXML(String webService, String caminhoXml)throws SOAPException,Exception {
	try {
		String codigoDoEstado = "35";
		
		URL url = new URL("https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx");

		OMElement ome = AXIOMUtil.stringToOM("<?xml version=\"1.0\" encoding=\"UTF-8\"?><consReciNFe versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\"><tpAmb>2</tpAmb><nRec>351000031294771</nRec></consReciNFe>");

		NfeRetRecepcao2Stub.NfeDadosMsg dadosMsg = new NfeRetRecepcao2Stub.NfeDadosMsg();
		dadosMsg.setExtraElement(ome);
		NfeRetRecepcao2Stub.NfeCabecMsg nfeCabecMsg = new NfeRetRecepcao2Stub.NfeCabecMsg();

		nfeCabecMsg.setCUF(codigoDoEstado);

		nfeCabecMsg.setVersaoDados("2.00");

		NfeRetRecepcao2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeRetRecepcao2Stub.NfeCabecMsgE();
		nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);

		NfeRetRecepcao2Stub stub = new NfeRetRecepcao2Stub(url.toString());
		NfeRetRecepcao2Stub.NfeRetRecepcao2Result result = stub.nfeRetRecepcao2(dadosMsg, nfeCabecMsgE);

		System.out.println(result.getExtraElement().toString());
		
		OutputStream out = new ByteArrayOutputStream();
		
		return out;
	} catch (Exception e) {
		e.printStackTrace();
		
		throw e;
	}
}

Assim como na outra implementação, a consulta de status funciona normalmente...

Agora nem sei mais o que pode ser... =/

AGAraujo
talles.pescumo:
AGAraujo,

Olha só, tentei mudar a implementação pra ver se o erro iria persistir, fiz a implementação dessa vez utilizando axis2(prefiro da outra forma, acho bem mais enxuto), e obtive o mesmo resultado...

Esse foi o envelope gerado:
0000: 32 36 61 0D 0A 3C 3F 78   6D 6C 20 76 65 72 73 69  26a..<?xml versi
0010: 6F 6E 3D 22 31 2E 30 22   20 65 6E 63 6F 64 69 6E  on="1.0" encodin
0020: 67 3D 22 55 54 46 2D 38   22 3F 3E 3C 73 6F 61 70  g="UTF-8"?><soap
0030: 65 6E 76 3A 45 6E 76 65   6C 6F 70 65 20 78 6D 6C  env:Envelope xml
0040: 6E 73 3A 73 6F 61 70 65   6E 76 3D 22 68 74 74 70  ns:soapenv="http
0050: 3A 2F 2F 77 77 77 2E 77   33 2E 6F 72 67 2F 32 30  ://www.w3.org/20
0060: 30 33 2F 30 35 2F 73 6F   61 70 2D 65 6E 76 65 6C  03/05/soap-envel
0070: 6F 70 65 22 3E 3C 73 6F   61 70 65 6E 76 3A 48 65  ope"><soapenv:He
0080: 61 64 65 72 3E 3C 6E 73   31 3A 6E 66 65 43 61 62  ader><ns1:nfeCab
0090: 65 63 4D 73 67 20 78 6D   6C 6E 73 3A 6E 73 31 3D  ecMsg xmlns:ns1=
00A0: 22 68 74 74 70 3A 2F 2F   77 77 77 2E 70 6F 72 74  "http://www.port
00B0: 61 6C 66 69 73 63 61 6C   2E 69 6E 66 2E 62 72 2F  alfiscal.inf.br/
00C0: 6E 66 65 2F 77 73 64 6C   2F 4E 66 65 52 65 74 52  nfe/wsdl/NfeRetR
00D0: 65 63 65 70 63 61 6F 32   22 20 73 6F 61 70 65 6E  ecepcao2" soapen
00E0: 76 3A 6D 75 73 74 55 6E   64 65 72 73 74 61 6E 64  v:mustUnderstand
00F0: 3D 22 66 61 6C 73 65 22   3E 3C 6E 73 31 3A 63 55  ="false"><ns1:cU
0100: 46 3E 33 35 3C 2F 6E 73   31 3A 63 55 46 3E 3C 6E  F>35</ns1:cUF><n
0110: 73 31 3A 76 65 72 73 61   6F 44 61 64 6F 73 3E 32  s1:versaoDados>2
0120: 2E 30 30 3C 2F 6E 73 31   3A 76 65 72 73 61 6F 44  .00</ns1:versaoD
0130: 61 64 6F 73 3E 3C 2F 6E   73 31 3A 6E 66 65 43 61  ados></ns1:nfeCa
0140: 62 65 63 4D 73 67 3E 3C   2F 73 6F 61 70 65 6E 76  becMsg></soapenv
0150: 3A 48 65 61 64 65 72 3E   3C 73 6F 61 70 65 6E 76  :Header><soapenv
0160: 3A 42 6F 64 79 3E 3C 6E   73 31 3A 6E 66 65 44 61  :Body><ns1:nfeDa
0170: 64 6F 73 4D 73 67 20 78   6D 6C 6E 73 3A 6E 73 31  dosMsg xmlns:ns1
0180: 3D 22 68 74 74 70 3A 2F   2F 77 77 77 2E 70 6F 72  ="http://www.por
0190: 74 61 6C 66 69 73 63 61   6C 2E 69 6E 66 2E 62 72  talfiscal.inf.br
01A0: 2F 6E 66 65 2F 77 73 64   6C 2F 4E 66 65 52 65 74  /nfe/wsdl/NfeRet
01B0: 52 65 63 65 70 63 61 6F   32 22 3E 3C 63 6F 6E 73  Recepcao2"><cons
01C0: 52 65 63 69 4E 46 65 20   78 6D 6C 6E 73 3D 22 68  ReciNFe xmlns="h
01D0: 74 74 70 3A 2F 2F 77 77   77 2E 70 6F 72 74 61 6C  ttp://www.portal
01E0: 66 69 73 63 61 6C 2E 69   6E 66 2E 62 72 2F 6E 66  fiscal.inf.br/nf
01F0: 65 22 20 76 65 72 73 61   6F 3D 22 32 2E 30 30 22  e" versao="2.00"
0200: 3E 3C 74 70 41 6D 62 3E   32 3C 2F 74 70 41 6D 62  ><tpAmb>2</tpAmb
0210: 3E 3C 6E 52 65 63 3E 33   35 31 30 30 30 30 33 31  ><nRec>351000031
0220: 32 39 34 37 37 31 3C 2F   6E 52 65 63 3E 3C 2F 63  294771</nRec></c
0230: 6F 6E 73 52 65 63 69 4E   46 65 3E 3C 2F 6E 73 31  onsReciNFe></ns1
0240: 3A 6E 66 65 44 61 64 6F   73 4D 73 67 3E 3C 2F 73  :nfeDadosMsg></s
0250: 6F 61 70 65 6E 76 3A 42   6F 64 79 3E 3C 2F 73 6F  oapenv:Body></so
0260: 61 70 65 6E 76 3A 45 6E   76 65 6C 6F 70 65 3E 0D  apenv:Envelope>.
0270: 0A 30 0D 0A 0D 0A FD 4F   61 D1 2C 41 DB E8 E6 58  .0.....Oa.,A...X
0280: D1 5B 15 24 E2 4D                                  .[.$.M


<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header><ns1:nfeCabecMsg xmlns:ns1="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2" soapenv:mustUnderstand="false"><ns1:cUF>35</ns1:cUF><ns1:versaoDados>2.00</ns1:versaoDados></ns1:nfeCabecMsg></soapenv:Header><soapenv:Body><ns1:nfeDadosMsg xmlns:ns1="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><consReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><nRec>351000031294771</nRec></consReciNFe></ns1:nfeDadosMsg></soapenv:Body></soapenv:Envelope>
E o erro foi o mesmo:
0000: 48 54 54 50 2F 31 2E 31   20 32 30 30 20 4F 4B 0D  HTTP/1.1 200 OK.
0010: 0A 44 61 74 65 3A 20 57   65 64 2C 20 32 33 20 4D  .Date: Wed, 23 M
0020: 61 72 20 32 30 31 31 20   31 36 3A 32 39 3A 32 36  ar 2011 16:29:26
0030: 20 47 4D 54 0D 0A 53 65   72 76 65 72 3A 20 4D 69   GMT..Server: Mi
0040: 63 72 6F 73 6F 66 74 2D   49 49 53 2F 36 2E 30 0D  crosoft-IIS/6.0.
0050: 0A 58 2D 50 6F 77 65 72   65 64 2D 42 79 3A 20 41  .X-Powered-By: A
0060: 53 50 2E 4E 45 54 0D 0A   58 2D 41 73 70 4E 65 74  SP.NET..X-AspNet
0070: 2D 56 65 72 73 69 6F 6E   3A 20 32 2E 30 2E 35 30  -Version: 2.0.50
0080: 37 32 37 0D 0A 43 61 63   68 65 2D 43 6F 6E 74 72  727..Cache-Contr
0090: 6F 6C 3A 20 70 72 69 76   61 74 65 2C 20 6D 61 78  ol: private, max
00A0: 2D 61 67 65 3D 30 0D 0A   43 6F 6E 74 65 6E 74 2D  -age=0..Content-
00B0: 54 79 70 65 3A 20 61 70   70 6C 69 63 61 74 69 6F  Type: applicatio
00C0: 6E 2F 73 6F 61 70 2B 78   6D 6C 3B 20 63 68 61 72  n/soap+xml; char
00D0: 73 65 74 3D 75 74 66 2D   38 0D 0A 43 6F 6E 74 65  set=utf-8..Conte
00E0: 6E 74 2D 4C 65 6E 67 74   68 3A 20 37 38 38 0D 0A  nt-Length: 788..
00F0: 0D 0A 3C 3F 78 6D 6C 20   76 65 72 73 69 6F 6E 3D  ..<?xml version=
0100: 22 31 2E 30 22 20 65 6E   63 6F 64 69 6E 67 3D 22  "1.0" encoding="
0110: 75 74 66 2D 38 22 3F 3E   3C 73 6F 61 70 3A 45 6E  utf-8"?><soap:En
0120: 76 65 6C 6F 70 65 20 78   6D 6C 6E 73 3A 73 6F 61  velope xmlns:soa
0130: 70 3D 22 68 74 74 70 3A   2F 2F 77 77 77 2E 77 33  p="http://www.w3
0140: 2E 6F 72 67 2F 32 30 30   33 2F 30 35 2F 73 6F 61  .org/2003/05/soa
0150: 70 2D 65 6E 76 65 6C 6F   70 65 22 20 78 6D 6C 6E  p-envelope" xmln
0160: 73 3A 78 73 69 3D 22 68   74 74 70 3A 2F 2F 77 77  s:xsi="http://ww
0170: 77 2E 77 33 2E 6F 72 67   2F 32 30 30 31 2F 58 4D  w.w3.org/2001/XM
0180: 4C 53 63 68 65 6D 61 2D   69 6E 73 74 61 6E 63 65  LSchema-instance
0190: 22 20 78 6D 6C 6E 73 3A   78 73 64 3D 22 68 74 74  " xmlns:xsd="htt
01A0: 70 3A 2F 2F 77 77 77 2E   77 33 2E 6F 72 67 2F 32  p://www.w3.org/2
01B0: 30 30 31 2F 58 4D 4C 53   63 68 65 6D 61 22 3E 3C  001/XMLSchema"><
01C0: 73 6F 61 70 3A 48 65 61   64 65 72 3E 3C 6E 66 65  soap:Header><nfe
01D0: 43 61 62 65 63 4D 73 67   20 78 6D 6C 6E 73 3D 22  CabecMsg xmlns="
01E0: 68 74 74 70 3A 2F 2F 77   77 77 2E 70 6F 72 74 61  http://www.porta
01F0: 6C 66 69 73 63 61 6C 2E   69 6E 66 2E 62 72 2F 6E  lfiscal.inf.br/n
0200: 66 65 2F 77 73 64 6C 2F   4E 66 65 52 65 74 52 65  fe/wsdl/NfeRetRe
0210: 63 65 70 63 61 6F 32 22   3E 3C 63 55 46 3E 33 35  cepcao2"><cUF>35
0220: 3C 2F 63 55 46 3E 3C 76   65 72 73 61 6F 44 61 64  </cUF><versaoDad
0230: 6F 73 3E 32 2E 30 30 3C   2F 76 65 72 73 61 6F 44  os>2.00</versaoD
0240: 61 64 6F 73 3E 3C 2F 6E   66 65 43 61 62 65 63 4D  ados></nfeCabecM
0250: 73 67 3E 3C 2F 73 6F 61   70 3A 48 65 61 64 65 72  sg></soap:Header
0260: 3E 3C 73 6F 61 70 3A 42   6F 64 79 3E 3C 6E 66 65  ><soap:Body><nfe
0270: 52 65 74 52 65 63 65 70   63 61 6F 32 52 65 73 75  RetRecepcao2Resu
0280: 6C 74 20 78 6D 6C 6E 73   3D 22 68 74 74 70 3A 2F  lt xmlns="http:/
0290: 2F 77 77 77 2E 70 6F 72   74 61 6C 66 69 73 63 61  /www.portalfisca
02A0: 6C 2E 69 6E 66 2E 62 72   2F 6E 66 65 2F 77 73 64  l.inf.br/nfe/wsd
02B0: 6C 2F 4E 66 65 52 65 74   52 65 63 65 70 63 61 6F  l/NfeRetRecepcao
02C0: 32 22 3E 3C 72 65 74 43   6F 6E 73 52 65 63 69 4E  2"><retConsReciN
02D0: 46 65 20 76 65 72 73 61   6F 3D 22 32 2E 30 30 22  Fe versao="2.00"
02E0: 20 78 6D 6C 6E 73 3D 22   68 74 74 70 3A 2F 2F 77   xmlns="http://w
02F0: 77 77 2E 70 6F 72 74 61   6C 66 69 73 63 61 6C 2E  ww.portalfiscal.
0300: 69 6E 66 2E 62 72 2F 6E   66 65 22 3E 3C 74 70 41  inf.br/nfe"><tpA
0310: 6D 62 3E 32 3C 2F 74 70   41 6D 62 3E 3C 76 65 72  mb>2</tpAmb><ver
0320: 41 70 6C 69 63 3E 53 50   5F 4E 46 45 5F 50 4C 5F  Aplic>SP_NFE_PL_
0330: 30 30 36 68 3C 2F 76 65   72 41 70 6C 69 63 3E 3C  006h</verAplic><
0340: 6E 52 65 63 3E 33 35 31   30 30 30 30 33 31 32 39  nRec>[telefone removido]
0350: 34 37 37 31 3C 2F 6E 52   65 63 3E 3C 63 53 74 61  4771</nRec><cSta
0360: 74 3E 35 38 37 3C 2F 63   53 74 61 74 3E 3C 78 4D  t>587</cStat><xM
0370: 6F 74 69 76 6F 3E 52 65   6A 65 69 C3 A7 C3 A3 6F  otivo>Rejei....o
0380: 3A 20 55 73 61 72 20 73   6F 6D 65 6E 74 65 20 6F  : Usar somente o
0390: 20 6E 61 6D 65 73 70 61   63 65 20 70 61 64 72 C3   namespace padr.
03A0: A3 6F 20 64 61 20 4E 46   2D 65 3C 2F 78 4D 6F 74  .o da NF-e</xMot
03B0: 69 76 6F 3E 3C 63 55 46   3E 33 35 3C 2F 63 55 46  ivo><cUF>35</cUF
03C0: 3E 3C 2F 72 65 74 43 6F   6E 73 52 65 63 69 4E 46  ></retConsReciNF
03D0: 65 3E 3C 2F 6E 66 65 52   65 74 52 65 63 65 70 63  e></nfeRetRecepc
03E0: 61 6F 32 52 65 73 75 6C   74 3E 3C 2F 73 6F 61 70  ao2Result></soap
03F0: 3A 42 6F 64 79 3E 3C 2F   73 6F 61 70 3A 45 6E 76  :Body></soap:Env
0400: 65 6C 6F 70 65 3E D7 75   87 69 37 2E 11 74 E4 6A  elope>.u.i7..t.j
0410: C0 9A C2 A4 59 C5                                  ....Y.

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><cUF>35</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></soap:Header><soap:Body><nfeRetRecepcao2Result xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><retConsReciNFe versao="2.00" xmlns"http://www.portalfiscal.inf.br/nfe"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><nRec>351000031294771</nRec><cStat>587</cStat><xMotivo>Rejei....o: Usar somente o namespacepadr..o da NF-e</xMotivo><cUF>35</cUF></retConsReciNFe></nfeRetRecepcao2Result></soap:Body></soap:Envelope>

<retConsReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>SP_NFE_PL_006h</verAplic><nRec>351000031294771</nRec><cStat>587</cStat><xMotivo>Rejeição: Usar somente o namespace padrão da NF-e</xMotivo><cUF>35</cUF></retConsReciNFe>
O stub eu gerei pelo assistente do eclipse mesmo, com axis2, esse é +- o código que uso para enviar a mensagem:
public OutputStream sendXML(String webService, String caminhoXml)throws SOAPException,Exception {
	try {
		String codigoDoEstado = "35";
		
		URL url = new URL("https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRetRecepcao2.asmx");

		OMElement ome = AXIOMUtil.stringToOM("<?xml version=\"1.0\" encoding=\"UTF-8\"?><consReciNFe versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\"><tpAmb>2</tpAmb><nRec>351000031294771</nRec></consReciNFe>");

		NfeRetRecepcao2Stub.NfeDadosMsg dadosMsg = new NfeRetRecepcao2Stub.NfeDadosMsg();
		dadosMsg.setExtraElement(ome);
		NfeRetRecepcao2Stub.NfeCabecMsg nfeCabecMsg = new NfeRetRecepcao2Stub.NfeCabecMsg();

		nfeCabecMsg.setCUF(codigoDoEstado);

		nfeCabecMsg.setVersaoDados("2.00");

		NfeRetRecepcao2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeRetRecepcao2Stub.NfeCabecMsgE();
		nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);

		NfeRetRecepcao2Stub stub = new NfeRetRecepcao2Stub(url.toString());
		NfeRetRecepcao2Stub.NfeRetRecepcao2Result result = stub.nfeRetRecepcao2(dadosMsg, nfeCabecMsgE);

		System.out.println(result.getExtraElement().toString());
		
		OutputStream out = new ByteArrayOutputStream();
		
		return out;
	} catch (Exception e) {
		e.printStackTrace();
		
		throw e;
	}
}

Assim como na outra implementação, a consulta de status funciona normalmente...

Agora nem sei mais o que pode ser... =/

Boa tarde!!

Fizemos um teste daqui com o seu código e o certificado de um cliente. Tudo funcionou perfeitamente!
O problema é pontual... ao que parece não é implementação. Na verdade é muito difícil dizer!
Bom... se for possível, amanhã posso entrar online com você logo cedo e verificar. Precisarei utilizar um sistema de acesso remoto, de preferência o TeamViewer que é o que uso aqui.
Verifique se é possível e me dê retorno... Em MP.

t+

T

Boa tarde pessoal,

Com grande ajuda do AGAraujo finalmente consegui resolver meu problema…
Na verdade era um erro bem simples, estava faltando colocar o namespace no envio do lote. O problema pra encontrar o erro é que o retorno do envio sempre era “Lote processado com sucesso”, e o erro só aparecia no momento da consulta do lote, dai a dificuldade, a SEFAZ não facilita muito… rs

Fica a dica ai se alguém tivér o mesmo problema, chequem sempre todas as mensagens, não somente a que retornar o erro…

Abraços!

Criado 16 de fevereiro de 2011
Ultima resposta 24 de mar. de 2011
Respostas 34
Participantes 7