NFe Pernambuco

Olá a todos, alguém aqui emite nfe pro Estado de Pernambuco?
pra mim esta ok em SP, PR, RS, ES, e agora apareceu um cliente de Pernambuco onde nao consigo comuniçãoo

Um exemplo do Status de servico que estou gerando:

<xml><wsdlsoap><wsdlsoap><nfeStatusServicoNF><nfeCabecMsg>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;cabecMsg xmlns=&quot;http://www.portalfiscal.inf.br/nfe&quot; versao=&quot;1.02&quot;&gt; &lt;versaoDados&gt;1.07&lt;/versaoDados&gt;&lt;/cabecMsg&gt;</nfeCabecMsg><nfeDadosMsg>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&lt;consStatServ xmlns=&quot;http://www.portalfiscal.inf.br/nfe&quot; xmlns:ds=&quot;http://www.w3.org/2000/09/xmldsig#&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; versao=&quot;1.07&quot;&gt;&lt;tpAmb&gt;2&lt;/tpAmb&gt;&lt;cUF&gt;26&lt;/cUF&gt;&lt;xServ&gt;STATUS&lt;/xServ&gt;&lt;/consStatServ&gt;</nfeDadosMsg></nfeStatusServicoNF></wsdlsoap></wsdlsoap>

Sera que alguém poderia me ajudar com o que estou fazendo de errado ou postar um exemplo de xml pra que eu possa comparar.

Obrigado

qual o erro???

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header /> 
  <soapenv:Body>
    <soapenv:Fault>
      <faultcode>soapenv:Server.generalException</faultcode> 
      <faultstring>WSWS3400I: Info: unexpected exception.</faultstring> 
    </soapenv:Fault>
  </soapenv:Body>
</soapenv:Envelope>

Alguém conseguiu criar as classes java para comunicação com o serviço NfeStatusServico 2.0 no ambiente de homologação? Me parece que a forma de trabalhar com as classes é completamente diferente dos demais estados. Nos outros estados eu tenho feito:

        NfeStatusServico2Stub stub = new NfeStatusServico2Stub();
        NfeStatusServico2Stub.NfeDadosMsg dados = new NfeStatusServico2Stub.NfeDadosMsg();

        String s = nfeDadosMsg;

        OMElement el = AXIOMUtil.stringToOM(s);
        dados.setExtraElement(el);

        NfeStatusServico2Stub.NfeCabecMsg cab = new NfeStatusServico2Stub.NfeCabecMsg();

No entanto, no caso de PE, não existe o método setExtraElement, assim como não existe NfeCabecMsg.

Estou meio perdido, alguém tem alguma pista?

Obrigado

cinglez, da uma olhada aqui:

http://www.guj.com.br/posts/list/214968.java#1149065

eu consegui fazendo apenas alguns ajustes.

boa sorte!

att,

Obrigado pelo retorno!

Pelo que percebi, o seu exemplo é para RS, correto? Este eu consegui sem problemas. O que eu não estou conseguindo é para PE, não são os mesmos métodos. Na verdade não existe nem mesmo NfeStatusServico2Stub.NfeCabecMsg.

Não consegui entender qual a jogada.

Obrigado mesmo assim

cinglez eu consegui para todos os estados com o link acima, mas antes dava erro quando eu gerava as classes pelo “assistente do eclipse helios” ai utilizei o axis2 (de verdade mesmo heheh) e gerou o “NfeStatusServico2Stub”.

da uma olhada aqui:
http://axis.apache.org/axis2/java/core/download.cgi

boa sorte!

att,

Tem alguma comida de bola sisnistra que eu não estou conseguindo perceber. Eu utilizei o wsdl2java.sh para gerar as classes assim:

wsdl2java.sh -uri NfeStatusServico2.wsdl, o que me gerou br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2Stub e br.inf.portalfiscal.www.nfe.wsdl.nfestatusservico2.NfeStatusServico2CallbackHandler.

Igualzinho os outros estados. No entanto, não consigo utilizar setExtraElement, e nem mesmo instanciar NfeStatusServico2Stub.NfeCabecMsg cab = new NfeStatusServico2Stub.NfeCabecMsg(); Ele simplesmente não reconhece…

Obrigado de qualquer forma.

Apenas como update:

ao invés de utilizar o WSDL do site de PE, utilizei o do RS, trocando apenas o endereço (<soap12:address location=“https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeStatusServico2”/>).

Consegui desta forma gerar as classes e até mesmo consumir o webservice, no entanto está me retornando com o erro:

2 1.3 409 Rejeição: Campo cUF inexistente no elemento nfeCabecMsg do SOAP Header 26 2010-11-22T15:35:10

Estou perplexo, tem alguém USANDO PE v. 2.0 no ambiente de homologação?

Obrigado

cinglez, boa garoto!

então vc viu como ficou o cabeçalho da versão 2.0 ? tem q passar como parametro agora o código da UF.

att,

Olá.

Sim, vi e estou passando. Tanto no caso de Pernambuco (que não funciona) como em todos os demais estados (quando funciona).

Definitivamente tem algo errado com este ws de PE.

Obrigado

Concordo plenamente com o amigo acima, tudo funciona normalmente com os outros estados inclusive com o ambiente SVAN, mas para PE a coisa tá feia… alguém já conseguiu consumir os serviços de homologação ou produção? poderia dar uma luz de como gerar as classes?

Pessoal, bom dia.

Exatamente igual a vocês também tenho uma ferramenta de nota fiscal eletrônica já implantada para vários WebServices, em todos já funcionando e em produção: SP, RJ, SC, ES, BA, SC e etc. Como vocês falaram também, para Pernambuco estou tendo problema 409, onde fala que o código da UF não foi informado no cabeçalho.

Como a última resposta foi no dia 04/12/2010 deste problema, queria saber se vocês conseguiram evoluir? Encontraram uma forma de trabalhar com Pernambuco também?

Obs.: Apenas como informação, no XML estou enviando sim o código da unidade federativa.
Muito obrigado a todos. Abraços.

Pessoal,

Apenas para completar e facilitar a ajuda de vocês com esta minha dúvida, segue o arquivo XML que estou enviando para o WebService de recepção do lote (NfeRecepcao2 - https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeRecepcao2.asmx).

Obs.: Como informação para todos, os estados de SP, SC e RJ não estão fazendo a validação do cabeçalho da NFe.


Eu estava com o mesmo problema.

409
Rejeição: Campo cUF inexistente no elemento nfeCabecMsg do SOAP Header

Eu utilizo as classes Stub geradas pelo wsdl2java, o que eu fiz pra resolver foi abrir o código fonte dessas classes e retirar o prefixo “ns1” que é colocado por padrão. Dessa maneira consegui enviar normalmente para PERNAMBUCO.

[quote]<cStat>409</cStat>
<xMotivo>Rejeição: Campo cUF inexistente no elemento nfeCabecMsg do SOAP Header</xMotivo>[/quote]

isso é erro no cabeçalho, o cabeçalho da versão 2.0 é diferente da 1.0

att,

[quote=pedruhenrik][quote]<cStat>409</cStat>
<xMotivo>Rejeição: Campo cUF inexistente no elemento nfeCabecMsg do SOAP Header</xMotivo>[/quote]

isso é erro no cabeçalho, o cabeçalho da versão 2.0 é diferente da 1.0

att,[/quote]

O meu cabeçalho já estava certo, já era o da nfe 2.0, mas mesmo assim acontece este erro, por algum motivo o webservice não identifica o código da UF enviado. Retirando os prefixos ns1 do cabeçalho passa normalmente.

Também estava com o mesmo problema, resolvi de duas formas.

Retirei das classes Stub onde tinha o Cabeçalho, tanto class NfeCabecMsg como class NfeCabecMsgE o prefixo “ns1”/“ns2”/“ns3”/“ns4”/“ns5”/“ns6”/“nsXXXX”.

E para os dados usei o comando:

Entrei em contato com a receita de PE que passou o seguinte:
"Gostaríamos que verificasse a utilização de prefixos para o namespace do NFe. O sistema da SEFAZ-PE por questões performáticas e recomendação do comitê da NFe não aceita XMLs com prefixo.
Para testarmos o processo de autorização nós implementamos um aplicativo (interno) que simula o envio por parte do contribuinte, nele também utilizamos o framework Axis e tivemos um problema similar ao reportado no início do desenvolvimento. O Axis gerava um envelope SOAP com prefixos. Nós resolvemos isso desligando a opção “NamespaceAware” do parse dos XMLs de cabeçalho e do corpo da mensagem. "

Se alguém tiver uma forma mais correta, é só avisar, por enquanto isto para mim resolveu. Inclusive já testei nos demais estados e inclusive PR e PE e está tudo funcionando.

Segue abaixo o código fonte usado:
[code]NfeStatusServico2Stub hservice;
try {
hservice = new NfeStatusServico2Stub(endereco);
NfeStatusServico2Stub.NfeCabecMsg nfeCabecMsg = new NfeStatusServico2Stub.NfeCabecMsg();
nfeCabecMsg.setVersaoDados(versaoDados);
nfeCabecMsg.setCUF(codUF);
NfeStatusServico2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeStatusServico2Stub.NfeCabecMsgE();
nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);
InputStream in = new FileInputStream(dirDadosMsg);

				//Nova linha devido ao erro de namespace
			    XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();       
				//Nova linha devido ao erro de namespace		               
	            //Propriedade utilizada para manter o namespace <NFe xmlns="www.portalfiscal.inf.br/nfe" >   
	            xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.FALSE);   
				//Nova linha devido ao erro de namespace		               
	            XMLStreamReader xmlReader = xmlInputFactory.createXMLStreamReader(in);   
	            
				StAXOMBuilder staxOMBuilder = new StAXOMBuilder(xmlReader);
				NfeStatusServico2Stub.NfeStatusServicoNF2Result nfeStatusServico2Result = new NfeStatusServico2Stub.NfeStatusServicoNF2Result();
				NfeStatusServico2Stub.NfeDadosMsg nfeDadosMsg = new NfeStatusServico2Stub.NfeDadosMsg();
				nfeDadosMsg.setExtraElement(staxOMBuilder
						.getDocumentElement());
				nfeStatusServico2Result = hservice.nfeStatusServicoNF2(
						nfeDadosMsg, nfeCabecMsgE);
				
				BufferedWriter out = new BufferedWriter(new FileWriter(
						dirArqRetorno));
				retMsgME = nfeStatusServico2Result.getExtraElement()
						.toString();
				out.write(retMsgME);
				out.close();	
			} catch (org.apache.axis2.AxisFault e1) {[/code]

[i]Leandro, bom dia.

Realmente você está certo! A Sefaz de Pernambuco faz uma tratativa diferente do padrão liberado pelo WSDL utilizado, assim precisei também modificar o código fonte.

Muito obrigado a todos os envolvidos. Até mais.     [/i]

[quote=katiani]Também estava com o mesmo problema, resolvi de duas formas.

Retirei das classes Stub onde tinha o Cabeçalho, tanto class NfeCabecMsg como class NfeCabecMsgE o prefixo “ns1”/“ns2”/“ns3”/“ns4”/“ns5”/“ns6”/“nsXXXX”.
[/quote]

Só uma coisinha, não muda muito mas pra quem não quiser mexer na mão nas classes geradas, e gerou a classe pelo Axis 2 wsdl2java é só colocar nos parametros para geração da classe -sp (Suppress namespace prefixes (Optimzation that reduces size of soap request/response).

Assim ele já gera sem os “ns1”/“ns2”/etc…

Fuçando a manual de integração da Receita item 3.4.1 agente precebe que o estado de PE é que ta certo, segundo o manual realmente não pode ter prefixo, eu trabalho com PE, SP, GO, MG, SVAN e SVRS e por enquanto só com PE tive esse problema no cabeçalho. Alguem sabe se algum outro estado está dando problemas com o cabeçalho com prefix