NFe Pernambuco

22 respostas
J

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

22 Respostas

P

qual o erro???

J
<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>
C

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

P

cinglez, da uma olhada aqui:

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

eu consegui fazendo apenas alguns ajustes.

boa sorte!

att,

C

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

P

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,

C

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.

C

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

P

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,

C

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

M

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?

R

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.

R

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.


L

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.

P

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

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

att,

L

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

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

att,

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.

K

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:
xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.FALSE);

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:
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) {
R

[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]
R

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”.

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

P

PR

T

rafaelbtz:
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”.

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

Pessoal, estou com o mesmo problema na SEFAZ PE, gerando o ERRO 409 pra mim: Rejeição: Campo cUF inexistente no elemento nfeCabecMsg do SOAP Header

Lendo este POST, vi que utiizando -sp resolve o problema de ter que tirar os namespaces na mão.

mas fiquei com uma duvida, em que lugar colocar esse -sp.

Exemplo, eu digito este comando no DOS:

Desculpa a ignorância, mas já ate retirei o ns1 da classe stub, mas não adianto, o problema persistiu.

Então queria tentar gerar denovo os stubs para “tentar resolver o problema”.

Desde já, agradeço! :smiley:

T

Thiago de Paula Beserra:
rafaelbtz:
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”.

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

Pessoal, estou com o mesmo problema na SEFAZ PE, gerando o ERRO 409 pra mim: Rejeição: Campo cUF inexistente no elemento nfeCabecMsg do SOAP Header

Lendo este POST, vi que utiizando -sp resolve o problema de ter que tirar os namespaces na mão.

mas fiquei com uma duvida, em que lugar colocar esse -sp.

Exemplo, eu digito este comando no DOS:

Desculpa a ignorância, mas já ate retirei o ns1 da classe stub, mas não adianto, o problema persistiu.

Então queria tentar gerar denovo os stubs para “tentar resolver o problema”.

Desde já, agradeço! :smiley:

Resolvido!

Resolvi manualmente, retirei os “ns1”, e substitui por “”, conforme esse post recomandava, e deu certo!!

Valeu obrigado!!!

Criado 15 de junho de 2010
Ultima resposta 26 de jun. de 2012
Respostas 22
Participantes 9