Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jair Humberto

[Resolvido] NFe 2.00 Mudanças

Recommended Posts

Olá pessoal,

 

Recentemente tive que refazer as mudanças de integração com os servidores da NFe versão 2.00, e estou aqui para deixar material para quem for tentar futuramente. Não vou tratar do XML da NFe e suas mudanças, pois para fazer isto basta você ver no manual de integração no site da sefaz http://www.nfe.fazenda.gov.br/portal/integracao.aspx

 

A ferramenta de trabalho que usei foi o Visual Studio 2005.

 

Para comunicar com um Webservice, você deve apenas fazer uma "Web Reference" clicando com o botão direito sobre o projeto na Solution Explorer e clicar em Add Web Reference.... Você precisará já ter um certificado digital válido no computador antes de fazer isso para o site da sefaz.

 

Após criar a referencia e dar o nome a ela, você deve apenas referenciá-la no código e setar suas propriedades.

 

A mudança é que você não envia mais o cabeçalho e o XML como string mas como XMLNode (System.Xml.XMLNode) ou XMLDocument, que serve também. Na verdade, o cabeçalho nem é enviado mais para o método do web service, mas ele vai somente no SOAP Header, que agora é exigido.(antes não era validado, pois era enviado pelo método em forma de string)

 

Mas não se preocupem com o SOAP Header, pois o visual studio já cria uma classe na referencia que você faz chamada nfeCabecMsg, que você deverá usar para enviar o cabeçalho.

 

Abaixo deixo o método que desenvolvi para a comunicação com o web service de consultar o status do serviço:

 

Private Function ConsStatServ(ByVal cUF As String, ByVal XML As XmlDocument, ByVal URLWebService As String, ByVal Certificate As X509Certificate2) As XmlDocument

    Dim NfeStatusServico As New NFeStatusServico.NfeStatusServico2 'Esta classe foi criada ao criar a web reference
    Dim nfeCabecMsg As New NFeStatusServico.nfeCabecMsg ' Esta também. NFeStatusServico é um nome que eu dei na hora de criar a web reference

    nfeCabecMsg.versaoDados = "2.00"
    nfeCabecMsg.cUF = cUF ' meu caso foi sempre 52 pois so desenvolvi para goias

    NfeStatusServico.nfeCabecMsgValue = nfeCabecMsg
    NfeStatusServico.Url = URLWebService
    NfeStatusServico.ClientCertificates.Add(Certificate)

    Dim Retorno As New XmlDocument
    Retorno.LoadXml(NfeStatusServico.nfeStatusServicoNF2(XML).OuterXml) 'ficar atento ao nome do método no webservice, pode variar de uf pra uf

    Return Retorno 'retorno o retorno do webservice como XMLDocument para outro método onde trato as informações recebidas.

End Function

tive um probleminha muito chato com a linha Me.URL dentro do namespace Reference.vb que é criado automaticamente com o visual studio, quando

se faz a "Web Reference". Porque dava um erro dizendo que o XML Não pode ser formado, e nos detalhes do erro dizia

 

Could not load type 'namespace.User' from assembly 'assemblyName e etc....

 

então tive que remover essa linha. Se der esse problema com você, apenas exclua a linha:

 

Me.Url = Global.My.MySettings.Default. etc etc etc

 

que está dentro da sub New dentro da classe Reference.vb dentro da pasta Web Refereces na pasta do webservice que você criou. Pra falar a verdade eu nem vi utilidade nessa linha pois eu tenho que setar a url do webservice de qualquer maneira :\

 

Flw galera

Espero que seja útil

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.