NFE V2.00 - Veja como consumir o WS

[quote=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á.[/quote]

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.

[quote=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:

[code]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;
}

}[/code]

O Xml eu não gerei por código, criei o arquivo na mão mesmo só pra testar, com o seguinte conteúdo:

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![/quote]

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

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… =/

[quote=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… =/[/quote]

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+

[quote=Mackrophus]Pessoal…

Beleza, espero ter ajudado…

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

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.

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:

[code]//WS NfeStatusServico2
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:Body</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:Header352.00</soap:Header>soap:Body2SP_NFE_PL_006h587Rejeição: Usar somente o namespace padrão da NF-e352011-03-17T08:20:44</soap:Body></soap:Envelope>

//WS NfeRecepcao2
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:Body</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:Header352.00</soap:Header>soap:Body2SP_NFE_PL_006h103Lote recebido com sucesso352011-03-17T08:20:443510000312684931</soap:Body></soap:Envelope>

//WS NfeRetRecepcao2
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:Body</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:Header352.00</soap:Header>soap:Body2SP_NFE_PL_006h587Rejeição: Usar somente o namespace padrão da NF-e35</soap:Body></soap:Envelope>

//WS NfeConsulta2
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:Body</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:Header352.00</soap:Header>soap:Body2SP_NFE_PL_006h587Rejeição: Usar somente o namespace padrão da NF-e35</soap:Body></soap:Envelope>

//WS NfeCancelamento2
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:Body</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:Header352.00</soap:Header>soap:Body2SP_NFE_PL_006h587Rejeição: Usar somente o namespace padrão da NF-e35</soap:Body></soap:Envelope>

//WS NfeInutilizacao2
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:Body</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:Header352.00</soap:Header>soap:Body2SP_NFE_PL_006h587Rejeição: Usar somente o namespace padrão da NF-e35</soap:Body></soap:Envelope>

//WSC adConsultaCadastro2
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:Body</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:Header352.00</soap:Header>soap:BodySP_NFE_PL_006h587Rejeição: Usar somente o namespace padrão da NF-e2011-03-17T08:20:4435</soap:Body></soap:Envelope>[/code]

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 http://www.nfe.fazenda.gov.br/portal/docs/NT2010.009.pdf , porém eu não estou utilizando nada diferente do exemplo, como você pode ver nas msg… complicado… =/

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…

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

[code]//Mensagem SOAP de envio
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:BodyCONS-CADSP10444288000147</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:Header352.00</soap:Header>soap:BodySP_NFE_PL_006h587Rejeição: Usar somente o namespace padrão da NF-e2011-03-17T14:38:1835</soap:Body></soap:Envelope>[/code]

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… =/

[quote=talles.pescumo]Tentei a consulta do cadastro do contribuinte, exatamente da mesma forma, e essa também deu o problema:

[code]//Mensagem SOAP de envio
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:BodyCONS-CADSP10444288000147</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:Header352.00</soap:Header>soap:BodySP_NFE_PL_006h587Rejeição: Usar somente o namespace padrão da NF-e2011-03-17T14:38:1835</soap:Body></soap:Envelope>[/code]

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… =/[/quote]

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:

<soap:Envelope xmlns:soap=“http://www.w3.org/2003/05/soap-envelopexmlns:xsd=“http://www.w3.org/2001/XMLSchema” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance>soap:Header352.00</soap:Header>soap:Body2SP_NFE_PL_006h107Serviço em Operação352011-03-17T08:27:451</soap:Body></soap:Envelope>

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:

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…

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:

[code]<?xml version="1.0" encoding="utf-8" ?>

Esse é o WSDL do serviço de consulta do lote, que retorna o erro:

[code]<?xml version="1.0" encoding="utf-8" ?>

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]

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]

[code]<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:Body235STATUS</env:Body></env:Envelope>

<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0035</env:Header>env:Body2351000031294771</env:Body></env:Envelope>[/code]
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:

[code]//imprime o envelope
soapMessage.writeTo(System.out);
System.out.println();

    // invoca o WS e obtém o retorno
    SOAPMessage reply = dispatch.invoke(soapMessage);[/code]

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 !!

[quote=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:

[code]//imprime o envelope
soapMessage.writeTo(System.out);
System.out.println();

    // invoca o WS e obtém o retorno
    SOAPMessage reply = dispatch.invoke(soapMessage);[/code][/quote]

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>

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

[code]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 >2.
00C0: 30 30 3C 2F 76 65 72 73 61 6F 44 61 64 6F 73 3E 00
00D0: 3C 63 55 46 3E 33 35 3C 2F 63 55 46 3E 3C 2F 6E 35</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”>2</t
01A0: 70 41 6D 62 3E 3C 6E 52 65 63 3E 33 35 31 30 30 pAmb>35100
01B0: 30 30 33 31 32 39 34 37 37 31 3C 2F 6E 52 65 63 0031294771</nRec
01C0: 3E 3C 2F 63 6F 6E 73 52 65 63 69 4E 46 65 3E 3C ><
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" ?>2.00352351000031294771[/code]

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:

[code]//Status envio
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0031</env:Header>env:Body231STATUS</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:cUF31</ns2:cUF>ns2:versaoDados2.00</ns2:versaoDados></ns2:nfeCabecMsg></soap:Header>soap:Body<ns2:nfeStatusServicoNF2Result xmlns:ns2=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2”>20689107Servico em operacao312011-03-18T13:49:221</ns2:nfeStatusServicoNF2Result></soap:Body></soap:Envelope>

//Consulta Cad Envio
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0031</env:Header>env:BodyCONS-CADMG51894202000831</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:cUF31</ns2:cUF>ns2:versaoDados2.00</ns2:versaoDados></ns2:nfeCabecMsg></soap:Header>soap:Body<ns2:consultaCadastro2Result xmlns:ns2=“http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2”>0689257Rejeicao: Solicitante nao habilitado para emissao da NF-eMG518942020008312011-03-18T01:49:2531</ns2:consultaCadastro2Result></soap:Body></soap:Envelope>[/code]

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…

[quote=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ó:

[code]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 >2.
00C0: 30 30 3C 2F 76 65 72 73 61 6F 44 61 64 6F 73 3E 00
00D0: 3C 63 55 46 3E 33 35 3C 2F 63 55 46 3E 3C 2F 6E 35</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”>2</t
01A0: 70 41 6D 62 3E 3C 6E 52 65 63 3E 33 35 31 30 30 pAmb>35100
01B0: 30 30 33 31 32 39 34 37 37 31 3C 2F 6E 52 65 63 0031294771</nRec
01C0: 3E 3C 2F 63 6F 6E 73 52 65 63 69 4E 46 65 3E 3C ><
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" ?>2.00352351000031294771[/code]

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:

[code]//Status envio
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0031</env:Header>env:Body231STATUS</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:cUF31</ns2:cUF>ns2:versaoDados2.00</ns2:versaoDados></ns2:nfeCabecMsg></soap:Header>soap:Body<ns2:nfeStatusServicoNF2Result xmlns:ns2=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2”>20689107Servico em operacao312011-03-18T13:49:221</ns2:nfeStatusServicoNF2Result></soap:Body></soap:Envelope>

//Consulta Cad Envio
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>env:Header2.0031</env:Header>env:BodyCONS-CADMG51894202000831</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:cUF31</ns2:cUF>ns2:versaoDados2.00</ns2:versaoDados></ns2:nfeCabecMsg></soap:Header>soap:Body<ns2:consultaCadastro2Result xmlns:ns2=“http://www.portalfiscal.inf.br/nfe/wsdl/CadConsultaCadastro2”>0689257Rejeicao: Solicitante nao habilitado para emissao da NF-eMG518942020008312011-03-18T01:49:2531</ns2:consultaCadastro2Result></soap:Body></soap:Envelope>[/code]

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…[/quote]

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

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!

[quote=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![/quote]

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

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");

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!

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:

[code]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 >2</tpAmb
0210: 3E 3C 6E 52 65 63 3E 33 35 31 30 30 30 30 33 31 >351000031
0220: 32 39 34 37 37 31 3C 2F 6E 52 65 63 3E 3C 2F 63 294771</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"?>352.002351000031294771[/code]

E o erro foi o mesmo:

[code]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”>35
0220: 3C 2F 63 55 46 3E 3C 76 65 72 73 61 6F 44 61 64 <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<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<
0340: 6E 52 65 63 3E 33 35 31 30 30 30 30 33 31 32 39 nRec>35100003129
0350: 34 37 37 31 3C 2F 6E 52 65 63 3E 3C 63 53 74 61 4771<cSta
0360: 74 3E 35 38 37 3C 2F 63 53 74 61 74 3E 3C 78 4D t>587<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>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"?>352.002SP_NFE_PL_006h351000031294771587Rejei....o: Usar somente o namespacepadr..o da NF-e35

2SP_NFE_PL_006h351000031294771587Rejeição: Usar somente o namespace padrão da NF-e35[/code]

O stub eu gerei pelo assistente do eclipse mesmo, com axis2, esse é ± o código que uso para enviar a mensagem:

[code]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;
}

}[/code]

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

Agora nem sei mais o que pode ser… =/

[quote=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:

[code]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 >2</tpAmb
0210: 3E 3C 6E 52 65 63 3E 33 35 31 30 30 30 30 33 31 >351000031
0220: 32 39 34 37 37 31 3C 2F 6E 52 65 63 3E 3C 2F 63 294771</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"?>352.002351000031294771[/code]

E o erro foi o mesmo:

[code]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”>35
0220: 3C 2F 63 55 46 3E 3C 76 65 72 73 61 6F 44 61 64 <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<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<
0340: 6E 52 65 63 3E 33 35 31 30 30 30 30 33 31 32 39 nRec>35100003129
0350: 34 37 37 31 3C 2F 6E 52 65 63 3E 3C 63 53 74 61 4771<cSta
0360: 74 3E 35 38 37 3C 2F 63 53 74 61 74 3E 3C 78 4D t>587<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>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"?>352.002SP_NFE_PL_006h351000031294771587Rejei....o: Usar somente o namespacepadr..o da NF-e35

2SP_NFE_PL_006h351000031294771587Rejeição: Usar somente o namespace padrão da NF-e35[/code]

O stub eu gerei pelo assistente do eclipse mesmo, com axis2, esse é ± o código que uso para enviar a mensagem:

[code]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;
}

}[/code]

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

Agora nem sei mais o que pode ser… =/[/quote]

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+