FONTE NFE VB.NET
Public Function ConsultaRecLote2(ByVal NRecibo As String) As RetRetorno
Dim strRetorno As XmlElement
Dim CERT As X509Certificate2
[ô]BUSCA CERTIFICADO SE DEIXAR EM BRANCO ABRE JANELA DE SELEÇÃO DO WINDOWS
CERT = SelecionarCertificado([Ô][Ô])
Try
Dim wsMsg As RetRecepcao2.NfeRetRecepcao2
Dim cab As New RetRecepcao2.nfeCabecMsg
[ô]UF E VERSÃO DO CABEÇALHO
cab.cUF = S_Url.CodigoUF
cab.versaoDados = VersaoAtualNfe
[ô]CRIA UMA INSTANCIA DA CONEXÃO COM O WEBSERVICE
wsMsg = New RetRecepcao2.NfeRetRecepcao2(S_Url.UrlNfeRetRecepcao)
[ô]ASSOCIA CABEÇALHO NFE
wsMsg.nfeCabecMsgValue = cab
[ô]DEFINE TEMPO MAXIMO DE ESPERA POR RETORNO
wsMsg.Timeout = 100000
[ô]ASSOCIA CERTIFICADO A CONEXAO WEBSERVICE
wsMsg.ClientCertificates.Add(CERT)
[ô]CRIA UM NOVO DOCUMENTO XML
Dim dados As New XmlDocument
[ô]ASSOCIA O NOVO XML COM A VARIAVEL DE RETORNO DA SEFAZ
dados.LoadXml(String.Format([Ô]<consReciNFe versao=[ô]2.00[ô] xmlns=[ô]http://www.portalfiscal.inf.br/nfe[ô]><tpAmb>2</tpAmb><nRec>{0}</nRec></consReciNFe>[Ô], NRecibo))
[ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
strRetorno = wsMsg.nfeRetRecepcao2(dados)
[ô]DESMEMBRA RETORNO XML
[ô]-----------------------------------------------------------------------------------
[ô]VARIAVER QUE VAI RECEBER O RETORNO
Dim Retornos As New RetRetorno
[ô]CRIA LISTA PARA RECEBER RETORNOS
Retornos.L_Retornos = New List(Of RetRecibo)
[ô]VARIAVEL QUE VAI RECEBER A LISTA ANTES DE SER COLOCADA NO RETORNO
Dim VarRecibo As New RetRecibo
[ô]PERCORRE TODOS OS NOS DO XML E PROCURA A TAG DE RETORNO infProt
For Each outerNode As XmlNode In strRetorno
[ô]PARA CADA NO VERIFICA SE O MESMO POSSUI FILHOS E VARRE OS MESMOS
If (outerNode.Name = [Ô]tpAmb[Ô]) Then
Retornos.tpAmb = outerNode.InnerText
End If
If (outerNode.Name = [Ô]verAplic[Ô]) Then
Retornos.verAplic = outerNode.InnerText
End If
If (outerNode.Name = [Ô]nRec[Ô]) Then
Retornos.nRec = outerNode.InnerText
End If
If (outerNode.Name = [Ô]cStat[Ô]) Then
Retornos.cStat = outerNode.InnerText
End If
If (outerNode.Name = [Ô]xMotivo[Ô]) Then
Retornos.xMotivo = outerNode.InnerText
End If
If (outerNode.Name = [Ô]cUF[Ô]) Then
Retornos.cUF = outerNode.InnerText
End If
For Each InnerNode As XmlNode In outerNode.ChildNodes
VarRecibo.XmlRecibo = InnerNode.OuterXml
[ô]SE O NOME DO NO FOR infProt ENTRA NO MESMO
If InnerNode.Name = [Ô]infProt[Ô] Then
[ô]PEGA A VARIAVEL ID QUE é UM ATRIBUTO E NAO UM ITEM
VarRecibo.Id = [Ô][Ô] [ô]InnerNode.Attributes.ItemOf([Ô]Id[Ô]).InnerText
[ô]PERCORRE CAMPOS DO RETORNO PARA CAPTURAR AS INFORMAÇÕES
For Each InnerNode2 As XmlNode In InnerNode.ChildNodes
If (InnerNode2.Name = [Ô]tpAmb[Ô]) Then
VarRecibo.tpAmb = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]verAplic[Ô]) Then
VarRecibo.verAplic = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]chNFe[Ô]) Then
VarRecibo.chNFe = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]dhRecbto[Ô]) Then
VarRecibo.dhRecbto = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]nProt[Ô]) Then
VarRecibo.nProt = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]digVal[Ô]) Then
VarRecibo.digVal = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]cStat[Ô]) Then
VarRecibo.cStat = InnerNode2.InnerText
End If
If (InnerNode2.Name = [Ô]xMotivo[Ô]) Then
VarRecibo.xMotivo = InnerNode2.InnerText
End If
Next
[ô]ADICIONA A NOTA NA LISTA DE RETORNO
Retornos.L_Retornos.Add(VarRecibo)
End If
Next
Next
Return Retornos
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information, [Ô][Ô])
Return Nothing
End Try
End Function
cab.versaoDados = [Ô]2.01[Ô]
dados.LoadXml(String.Format([Ô]<consReciNFe versao=[ô]2.01[ô] xmlns=[ô]http://www.portalfiscal.inf.br/nfe[ô]><tpAmb>2</tpAmb><nRec>{0}</nRec></consReciNFe>[Ô], NRecibo))
Citação::
Altere as seguinte linhas e tente novamente
cab.versaoDados = [Ô]2.01[Ô]
dados.LoadXml(String.Format([Ô]<consReciNFe versao=[ô]2.01[ô] xmlns=[ô]http://www.portalfiscal.inf.br/nfe[ô]><tpAmb>2</tpAmb><nRec>{0}</nRec></consReciNFe>[Ô], NRecibo))
FOXMAN, obrigado pela resposta, mas como eu já havia dito antes, esse serviço ainda não está na versão 2.01. Segue o xml de retorno:
<retConsReciNFe versao=[Ô]2.00[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
<tpAmb>2</tpAmb>
<verAplic>13_0_34</verAplic>
<nRec>310000022990093</nRec>
<cStat>238</cStat>
<xMotivo>Rejeicao: Cabecalho - Versao do arquivo XML superior a Versao vigente</xMotivo>
<cUF>31</cUF>
</retConsReciNFe>
Citação::
:
Altere as seguinte linhas e tente novamente
cab.versaoDados = [Ô]2.01[Ô]
dados.LoadXml(String.Format([Ô]<consReciNFe versao=[ô]2.01[ô] xmlns=[ô]http://www.portalfiscal.inf.br/nfe[ô]><tpAmb>2</tpAmb><nRec>{0}</nRec></consReciNFe>[Ô], NRecibo))
FOXMAN, obrigado pela resposta, mas como eu já havia dito antes, esse serviço ainda não está na versão 2.01. Segue o xml de retorno:
<retConsReciNFe versao=[Ô]2.00[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
<tpAmb>2</tpAmb>
<verAplic>13_0_34</verAplic>
<nRec>310000022990093</nRec>
<cStat>238</cStat>
<xMotivo>Rejeicao: Cabecalho - Versao do arquivo XML superior a Versao vigente</xMotivo>
<cUF>31</cUF>
</retConsReciNFe>
Vc precisa trocar os schemas, pois aqui utilizo assim e funciona perfeitamente.
Faça download dos novos schemas PL-006n.
Citação::
Eu estou utilizando o ambiente de homologação. Essa versão dos Schemas é para produção.
Não amigo, não pode existir dois schemas sendo um para homologação e outro para produção.
O schema serve para homologação e produção. Você precisa ter o mesmo schema em ambos ambientes.
Mas vale lembrar que a PL_006i, já constava no manual indicando a versão 2.01 para o serviço de consulta a situação da NFe.
O que diferencia é que certos procedimentos estarão disponÃveis em ambiente de produção a partir de x data.
Neste caso (a nova consulta NFe) estará definitivamente implementada apartir de 01/11/2012.No entanto já é possÃvel utilizá-la desde que atenda os novos schemas.
http://hom.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=tW+YMyk/50s=
Manual atualizado(Verifique a página 61 e 62)
http://hom.nfe.fazenda.gov.br/portal/exibirArquivo.aspx?conteudo=mSzqqsqOrOE=
Citação::
Você está confundindo o serviço que estou buscando. Estou usando a Consulta do Recibo e não a Consulta de NFE.
Humm, realmente me equivoquei...
Não vi então o motivo de sua dúvida (está retornando algum erro ????) , no próprio exemplo que tu pegou aqui(na pagina 134) tem o exemplo de utilização da função.
Está no formulário TesteDanfe, no controle Button4.
De qualquer forma segue a utilização da função.
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim WebS As New C_WebService(UrlAcesso)
Dim StrRetorno As RetEnvio
[ô]ENVIA LOTE DE NOTAS VERSÃO 2.00
StrRetorno = WebS.EnviaLote2(My.Application.Info.DirectoryPath & [Ô]\NFE\[Ô] & CAMINHONFEGERADA.Text)
MsgBox(StrRetorno.xMotivo)
Dim RetonoConsulta As New RetRetorno
RetonoConsulta = WebS.ConsultaRecLote2(StrRetorno.nRec)
For Each RetC In RetonoConsulta.L_Retornos
If RetC.xMotivo = [Ô]Autorizado o uso da NF-e[Ô] Then
Dim XmlNota As XmlDocument = New XmlDocument
XmlNota.Load(My.Application.Info.DirectoryPath & [Ô]\NFE\[Ô] & CAMINHONFEGERADA.Text)
GerarNotaProcessada(SepararNota(XmlNota.OuterXml), RetC.XmlRecibo, CAMINHONFEGERADA.Text.Replace([Ô].Xml[Ô], [Ô][Ô]), Date.Today)
End If
MsgBox(RetC.Id)
MsgBox(RetC.chNFe)
MsgBox(RetC.cStat)
MsgBox(RetC.tpAmb)
MsgBox(RetC.xMotivo)
MsgBox(RetC.digVal)
PROTOCOLO.Text = RetC.nProt
Next
End Sub
Por favor, alguém teria uma explicação pra esse problema?
Quero consultar uma NFe e enviei o seguinte xml de consulta.
<?xml version=[Ô]1.0[Ô] encoding=[Ô]UTF-8[Ô]?>
<consSitNFe xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô] versao=[Ô]2.01[Ô]>
<tpAmb>2</tpAmb><xServ>CONSULTAR</xServ>
<chNFe>35121004594797000153550010000015571705547514</chNFe></consSitNFe>
e para minha surpresa e alegria recebo o seguinte xml de rejeição:
<retConsSitNFe versao=[Ô]2.01[Ô] xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
<tpAmb>2</tpAmb>
<verAplic>SP_NFE_PL_006j</verAplic>
<cStat>239</cStat>
<xMotivo>Rejeição: Cabeçalho - Versão do arquivo XML não suportada</xMotivo>
<cUF>35</cUF>
<chNFe>35121004594797000153550010000015571705547514</chNFe>
</retConsSitNFe>
O que eu fiz de errado??????
é preciso mudar a versão do CABEÇALHO:
Dim strRetorno As XmlElement
Dim CERT As X509Certificate2
[ô]BUSCA CERTIFICADO SE DEIXAR EM BRANCO ABRE JANELA DE SELEÇÃO DO WINDOWS
CERT = SelecionarCertificado([Ô][Ô])
Try
Dim wsMsg As Consulta2.NfeConsulta2
Dim cab As New Consulta2.nfeCabecMsg
[ô]UF E VERSÃO DO CABEÇALHO
cab.cUF = [Ô]35[Ô]
cab.versaoDados = [Ô]2.01[Ô]
[ô]CRIA UMA INSTANCIA DA CONEXÃO COM O WEBSERVICE
wsMsg = New Consulta2.NfeConsulta2([Ô]https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeConsulta2.asmx[Ô])
[ô]ASSOCIA CABEÇALHO NFE
wsMsg.nfeCabecMsgValue = cab
[ô]DEFINE TEMPO MAXIMO DE ESPERA POR RETORNO
wsMsg.Timeout = 100000
[ô]ASSOCIA CERTIFICADO A CONEXAO WEBSERVICE
wsMsg.ClientCertificates.Add(CERT)
[ô]DEFINE PROTOCOLO USADO NA CONEXÃO
wsMsg.SoapVersion = SoapProtocolVersion.Soap12
[ô]CRIA UM NOVO DOCUMENTO XML
Dim dados As XmlDocument = New XmlDocument
dados.LoadXml([Ô]<?xml version=[Ô][Ô]1.0[Ô][Ô] encoding=[Ô][Ô]UTF-8[Ô][Ô] ?><consSitNFe xmlns=[Ô][Ô]http://www.portalfiscal.inf.br/nfe[Ô][Ô] versao=[Ô][Ô]2.01[Ô][Ô]><tpAmb>2</tpAmb><xServ>CONSULTAR</xServ><chNFe>[Ô] & IDNFe & [Ô]</chNFe></consSitNFe>[Ô])
[ô] dados.LoadXml(My.Application.Info.DirectoryPath & [Ô]\consulta2.xml[Ô])
[ô]ENVIA CONSULTA PARA SEFAZ E OBTEM RETORNO EM FORMATO STRING
strRetorno = wsMsg.nfeConsultaNF2(dados)