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:
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.
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.
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”.
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…
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?
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.
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.
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=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]
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