Então nessinhavos … como o amigo falou… hj eu rodei meu teste de consulta de status e consegui obter o retorno…
pra variar, alguns probleminhas com PR…
brigadão;…
Erro não catalogado = falta namespace na tag NFe (sim, tem q por no nodo raiz e “forçar” no(s) nodo(s) da(s) nota(s) também)
Ainda um problema persiste: se usar o serviço 2.0 para consultar uma chave de acesso que foi autorizada pelo serviço 1.0, diz que não encontra a nf-e na base
RS funciona certinho, tanto de 1.0 -> 2.0 quanto 2.0 -> 1.0
O meu xml esta indo assim :
<?xml version="1.0" encoding="UTF-8"?>
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<idLote>1</idLote>
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
<infNFe Id="NFe41101176748284000160550060000000271463584707" versao="2.00">
<ide>
<cUF>41</cUF><cNF>46358470</cNF><natOp>VENDAS DE INDUSTRIALIZACAO P/ UF</natOp><indPag>1</indPag><mod>55</mod><serie>6</serie><nNF>27</nNF><dEmi>2010-11-25</dEmi><tpNF>1</tpNF><cMunFG>4104808</cMunFG><tpImp>1</tpImp><tpEmis>1</tpEmis><cDV>7</cDV><tpAmb>2</tpAmb><finNFe>1</finNFe><procEmi>0</procEmi><verProc>3</verProc>
</ide>
Parece correto, mas esse não é com o envelope SOAP, poste aí a requisição por completo
Esse XML acima não foi usando envelope.
Foi usando as classes geradas pelo wsdl.
Isso eu sei, mas ao chamar o serviço as classes fazem o envelopamento para você, e é isso o que eu queria ver, deve ter algum log do processo.
No meu caso eu passo assim na linha de comando: java -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true programa
Se vc usa JBoss, coloque isso
run.conf (linux)
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true"
run.conf.bat (windows)
set “JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true”
Quando estou depurando a classe NfeRecepcao2Stub - método nfeRecepcaoLote2
if (nfeCabecMsg1 != null) {
org.apache.axiom.om.OMElement omElementnfeCabecMsg1 = toOM(nfeCabecMsg1, optimizeContent(new javax.xml.namespace.QName(“http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2”, “nfeRecepcaoLote2”)));
addHeader(omElementnfeCabecMsg1, env);
}
Consigo verificar a informação do omElementnfeCabecMsg1
<ns4:nfeCabecMsg xmlns:ns4=“http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2”>ns4:cUF41</ns4:cUF>ns4:versaoDados2.00</ns4:versaoDados></ns4:nfeCabecMsg>
Porem a informação do objeto env não consigo visualizar, pois sempre causa uma exceção conforme abaixo:
Exception occurred in target VM: Error obtaining parser from data source:the prefix ==> Already exists for namespace ==> http://www.portalfiscal.inf.br/nfe
java.lang.RuntimeException: Error obtaining parser from data source:the prefix ==> Already exists for namespace ==> http://www.portalfiscal.inf.br/nfe
at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:134)
at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:152)
at org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerialize(OMSourcedElementImpl.java:568)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:772)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:756)
at org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:210)
at org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:756)
at org.apache.axiom.om.impl.llom.OMNodeImpl.serialize(OMNodeImpl.java:345)
at org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:913)
at nfe.nferecepcao2.NfeRecepcao2Stub.nfeRecepcaoLote2(NfeRecepcao2Stub.java:105)
at controle.Comunicacao.enviar(Comunicacao.java:102)
at threads.ThreadEnvio$1.call(ThreadEnvio.java:35)
at threads.ThreadEnvio$1.call(ThreadEnvio.java:32)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
A classe NfeRetRecepcao2Stub consigo verificar as informações perfeitamente dos objetos.
[quote=acmedis]Quando estou depurando a classe NfeRecepcao2Stub - método nfeRecepcaoLote2
<ns4:nfeCabecMsg xmlns:ns4="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2"><ns4:cUF>41</ns4:cUF><ns4:versaoDados>2.00</ns4:versaoDados></ns4:nfeCabecMsg>
[/quote]
Acho que seu problema é esses prefixos de namespace no XML
Qual seria a informação correta desses prefixos?
Preciso deixar sem a informação?
Deixar sem, o manual explicitamente proíbe o uso de prefixos XML
Acho que o único prefixo aceito é o do envelope, mas esse é um que seria muito difícil mexer na maioria dos frameworks.
Na prática acho que proíbem pq os frameworks de SP/RS em ASP não entendem isso :lol:
Quando eu deixo sem a informação do prefixo, a nota é transmitida porém quando eu consulta o recibo
retorna o sempre o xml abaixo :
<retConsReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><verAplic>PR-m4.0.1-v2_0_10</verAplic><nRec>411000000288516</nRec><cStat>104</cStat><xMotivo>Lote processado</xMotivo><cUF>41</cUF></retConsReciNFe>
Ou seja, não vem a informação se nota foi autorizada ou rejeitada. Fica retornando esse XML sempre que faço a consulta.
Outra dica que eu possa fazer ?
:shock:
Esse log está sendo obtido de que maneira? Se não for imediatamente após receber os dados (como aquele q eu postei que ativa por linha de comando), pode ser que alguma parte da sua stack esteje tirando fora o nodo. Fiz um teste agora com a SEFA e retornou certinho:
Envio da consulta:
10:31:10,445 INFO [STDOUT] <?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"><S:Header><nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><cUF>41</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></S:Header><S:Body><nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2"><consReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><tpAmb>2</tpAmb><nRec>411000000288660</nRec></consReciNFe></nfeDadosMsg></S:Body></S:Envelope>
Retorno:
10:31:10,774 INFO [STDOUT] <env:Envelope xmlns:env='http://www.w3.org/2003/05/soap-envelope'><env:Header xmlns:env='http://www.w3.org/2003/05/soap-envelope'><nfeCabecMsg xmlns='http://www.portalfiscal.inf.br/nfe'><cUF>41</cUF><versaoDados>2.00</versaoDados></nfeCabecMsg></env:Header><env:Body xmlns:env='http://www.w3.org/2003/05/soap-envelope'><nfeRetRecepcao2Result xmlns='http://www.portalfiscal.inf.br/nfe/wsdl/NfeRetRecepcao2'><retConsReciNFe versao='2.00' xmlns='http://www.portalfiscal.inf.br/nfe'><tpAmb>2</tpAmb><verAplic>PR-m4.0.1-v2_0_10</verAplic><nRec>411000000288660</nRec><cStat>104</cStat><xMotivo>Lote processado</xMotivo><cUF>41</cUF><protNFe versao='2.00'><infProt><tpAmb>2</tpAmb><verAplic>PR-m4.0.1-v2_0_10</verAplic><chNFe>41101105825083000171550010000002161002642562</chNFe><dhRecbto>2010-11-30T10:31:14</dhRecbto><nProt>141100000610008</nProt><digVal>imAnxHD96fh0Z0l0gJnyeTNv0e8=</digVal><cStat>100</cStat><xMotivo>Autorizado o uso da NF-e</xMotivo></infProt></protNFe></retConsReciNFe></nfeRetRecepcao2Result></env:Body></env:Envelope>
Estou fazendo alguns testes criando e envelope manualmente. Dessa forma esta funcionando perfeitamente, envio da NFe e a consulta do envio.
Eu fiz da forma que o nessinhavos sugeriu, que é criando um template e atribuindo os valores.
Conforme código abaixo:
configurarSSL();
String txt = AssinaturaDigital.assinarEnviNFe(xmlNFe, codigoUF);
String msg = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"
+ "<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\" >"
+ "<env:Header>"
+ "<nfeCabecMsg xmlns=\"{0}\">"
+ "<cUF>{3}</cUF>"
+ "<versaoDados>{2}</versaoDados>"
+ "</nfeCabecMsg>"
+ "</env:Header>"
+ "<env:Body>"
+ "<nfeDadosMsg xmlns=\"{0}\">{1}</nfeDadosMsg>"
+ "</env:Body>"
+ "</env:Envelope>";
envelope = MessageFormat.format(msg, "http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2",
txt, "2.00", String.valueOf(codEstado));
header = new MimeHeaders();
header.addHeader("Content-Type", "application/soap+xml");
message = factory.createMessage(header, new ByteArrayInputStream(envelope.getBytes()));
con = SOAPConnectionFactory.newInstance().createConnection();
O meu único problema agora é o seguinte: quando eu faço a assinatura no meu XML ele retorna uma string com a seguinte informação no inicio da String :
<?xml version="1.0" encoding="UTF-8" ?>
E quando é atribuido todas as informações a String msg, fica essa identificação duplicada na string.
Essa dúvida eu já havia postado, porem a solução que foi passada não resolveu meu problema.
Teria alguma outra forma para eu resolver isso.
É a unica coisa que falta para finalizar essa questão.
Desde já agradeço a todos pela atenção.
Pode ser essa a causa, o serviço no Paraná faz coisas estranhas quando não se entende com a assinatura
Tente fazer um replace na string mesmo antes de aplicar o seu template
30/11/2010
O Ato Cotepe/ICMS n. 36/2010, de 24 de novembro de 2010, publicado no DOU de 30/11/2010, revoga, a partir de 1º de abril de 2011, o uso das disposições técnicas previstas no Manual de Integração da Nota Fiscal Eletrônica - NF-e, Versão 3.0.
http://www.fazenda.pr.gov.br/modules/noticias/article.php?storyid=188&tit=NF-e-prorrogacao-do-prazo-para-o-uso-da-versao-1.10-do-xml
O problema da vez, eh: quando gero as classes via WSDL vem com uma URL errada, corrigi conforme esta no site da SEFA:
Porem me retorna erro, de time-out na URL q corrigi:
[code]Invoking nfeStatusServicoNF2…
Caused by: java.net.ConnectException: ConnectException invoking https://200.189.113.250:8543/nfe/NFeStatusServico2: Connection timed out: connect[/code]
Alguem tem alguma ideia?
A sefaz do paraná parece estar fora do ar no momento
pessoal,
alguém esta conseguindo enviar lote para o PR (NFe 2.0)?
na real eu consigo enviar, fala que recebeu com sucesso, mas quando eu faço uma consulta por chave de acesso recebo a seguinte msg:
...<cStat>215</cStat><xMotivo>Falha no schema XML. org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'NFe'.</xMotivo>...
degubando o meu sistema, percebi que o Message criado fica sem o namespace xmlns=“http://www.portalfiscal.inf.br/nfe” na tag nfe…
alguém conseguiu consumir com sucesso o serviço?
Sim, você precisa colocar o namespace novamente na tag NF-e para enviar corretamente.
e qual é o segredo para colocar o namespace? :lol: