NS NFe CORE

NuGet para NFe em C# capa

Fala Dev! Neste post quero apresentar para você nosso pacote do NuGet Microsoft para NFe em C#!

Para facilitar a integração e auxiliar no desenvolvimento, disponibilizamos um pacote de código para a versão .NET CORE que realiza a comunicação com a API de NFe aqui da NS Tecnologia.

Com ele, você já pode contar com métodos para emissão, eventos, e também para acessar os métodos utilitários da nossa solução API de NFe.

Primeiro, vamos seguir um passo a passo de como instalar ela (a biblioteca) no seu projeto.
Para implementar esta biblioteca em seu projeto, você pode:

 

  1. Realizar a instalação do pacote através do Microsoft NuGet no Visual Studio

    NS nfe core baixando biblioteca

     

  2. Realizar o download da biblioteca pelo GitHub e adicionar a pasta “src” em seu projeto no C# (.NET Core )

Após instalação através do gerenciador de pacotes NuGet, faça referência dela em seu projeto:

    using ns_nfe_core;

Para que a comunicação com a API possa ser feita, é necessário informar o seu Token no cabeçalho das requisições.

Com este pacote, você pode fazê-lo assim como no exemplo:

    configParceiro.token = "4dec0a34f460169dd6fb2ef9193003e0"

Como você pode ver no nosso exemplo acima, para que a comunicação com a API possa ser feita, é necessário informar o seu Token no cabeçalho das requisições e por isso, vamos informar nesta classe, para que a biblioteca tenha acesso e posso construir os cabeçalhos das requisições para a API.

Agora, já podemos comunicar com a API de NFe de forma segura,e podemos iniciar o uso dos métodos disponíveis.

Para realizarmos a emissão de uma NFe, vamos utilizar os seguintes métodos. Tenhamos como exemplo:

    using ns_nfe_core.src.emissao;
   static async Task emitirNFe() // Emitir NFe
    {

       var NFeXML = layoutNFe.gerarNFeXML();
        var retorno = await EmissaoSincrona.sendPostRequest(NFeXML, "XP", true, @"NFe/Documentos/");

   }

Primeiramente, construímos um objeto da NFe, e um método ( exemplo ) que retorna este objeto:

    using ns_nfe_core.src.emissao;
    namespace ns_nfe_core

   {
       class layoutNFe
       {
           public static TNFe gerarNFeXML()
           {
               TNFe NFe = new TNFe
               {
                   infNFe = new TNFeInfNFe
                   {
                       versao = "4.00",
                       ide = new TNFeInfNFeIde{...}
                       emit = new TNFeInfNFeEmit{...}
                       dest = new TNFeInfNFeDest{...}
                       det = new TNFeInfNFeDet[1]
                       {
                           new TNFeInfNFeDet
                           {
                               nItem = "1",
                               prod = new TNFeInfNFeDetProd{...},
                               imposto = new TNFeInfNFeDetImposto{...},
                           }
                       },
                       total = new TNFeInfNFeTotal{...},
                       transp = new TNFeInfNFeTransp{...},
                       pag = new TNFeInfNFePag{...},
                       infAdic = new TNFeInfNFeInfAdic{...},
                   }
               };
               return NFe;
           }
       }
    }

 

Apos isso, vamo utilizar o método **sendPostRequest** da classe *EmissaoSincrona* para realizar o envio deste documento NFe para a API.

Este método realiza a emissão, a consulta de status de processamento e o download de forma sequencial.

Os parâmetros deste método são:

    var retorno = await EmissaoSincrona.sendPostRequest(NFeXML, "XP", true, @"NFe/Documentos/");

+ *NFeXML* = objeto NFe que será serializado para envio;

+ *”XP”* = tpDown = tipo de download, indicando quais os tipos de arquivos serão obtidos no Download;

+ *true* = exibeNaTela = parâmetro boolean que indica se será exibido na tela, ou não, o DANFE obtido no download;

+ *@”NFe/Documentos/”* = diretório onde serão salvos os documentos obtidos no download;

    

Podemos acessarmos os dados de retorno e aplicarmos validações da seguinte forma. Tenhamos como exemplo:

            // Verifica se houve sucesso na emissão

            if (retorno.statusEnvio == "200" || retorno.statusEnvio == "-6" || retorno.statusEnvio == "-7")

           {
               string statusEnvio = retorno.statusEnvio;
               string nsNRec = retorno.nsNRec;
               // Verifica se houve sucesso na consulta
               if (retorno.statusConsulta == "200")
               {
                   string statusConsulta = retorno.statusConsulta;
                   string motivo = retorno.motivo;
                   string xMotivo = retorno.xMotivo;
                   
                   // Verifica se a nota foi autorizada
                   if (retorno.cStat == "100" || retorno.cStat == "150")
                   {
                       // Documento autorizado com sucesso
                       string cStat = retorno.cStat;
                       string chNFe = retorno.chNFe;
                       string nProt = retorno.nProt;
                       string statusDownload = retorno.statusDownload;
                       if (retorno.statusDownload == "200")
                       {
                           // Verifica de houve sucesso ao realizar o downlaod da NFe
                           string xml = retorno.xml;
                           string json = retorno.json;
                           string pdf = retorno.pdf;
                       }
                       else {
                           // Aqui você pode realizar um tratamento em caso de erro no download
                           statusDownload = retorno.statusDownload;
                           dynamic erros = retorno.erros;
                       }
                    }

                   else
                   {
                       // NFe não foi autorizada com sucesso ou retorno diferente de 100 / 150
                       motivo = retorno.motivo;
                       xMotivo = retorno.xMotivo;
                       dynamic erros = retorno.erros;
                   }
               }
               else
               {
                   // Consulta não foi realizada com sucesso ou com retorno diferente de 200
                   string motivo = retorno.motivo;
                   string xMotivo = retorno.xMotivo;
                   dynamic erros = retorno.erros;
               }
           }
           else
           {
               // NFe não foi enviada com sucesso
               string statusEnvio = retorno.statusEnvio;
               string motivo = retorno.motivo;
               string xMotivo = retorno.xMotivo;
               dynamic erros = retorno.erros;
           }

Caso você tenha ficado interessado e queira mais informações sobre essa biblioteca, você pode:

  • Conferir nosso repositório e documentação no github;
  • Assistir a apresentação dessa mesma biblioteca em nosso canal do youtube.

Além disso, para mais informações sobre a API da NFe, temos uma documentação disponível aqui

E, se você DEV ainda não é nosso parceiro, entre em contato conosco e agende uma demonstração sem compromisso!

Possuimos uma série de vídeos sobre NFe em csharp, só clicar aqui.

Atenção essa série está passando por atualização logo lançaremos uma nova série de NFe em Csharp mostrando as facilidades da nova versão

Gostou do Post? Caso você não conheça nossa API entre em contato conosco! 

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *