Nota Fiscal eletrônica em NODE.JS

nfe_node_capa

Você encontra facilmente uma biblioteca completa para emissão de NFe em Node.JS?

Neste post quero apresentar para você nossa biblioteca para NFe em Node.JS!

Para facilitar a integração e auxiliar no desenvolvimento, disponibilizamos um pacote de código 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.


Caso você esteja usando uma IDE, como o Visual Studio Code ou o próprio terminal do windows, vamos inserir este comando, no diretório onde está seu projeto:

 npm install ns-nfe-node

Apenas com este comando, você já terá instalado todos os recursos que são necessário para realizar a comunicação com a API.

Importante também, que neste momento, você crie um arquivo JavaScript (.js) com o nome configParceiro.js contendo o seguinte:

const token = "4dec0a34f460169dd6fb2ef9193003e0”

const CNPJ = "13592311000139"

module.exports = {token, CNPJ}

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 exportar esses dados, 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.

Neste próximo passo, vou te mostrar como podemos realizar a emissão de uma NFe. Para isso, vamos precisar:

  • do arquivo configParceiro.js que criamos;
  • e de um arquivo .json contendo o nossa NFe, de acordo com o layout disponibilizado pela SEFAZ.

Para emitirmos uma NFe, vamos utilizar os seguintes métodos:

  • Primeiramente, vamos fazer referência do arquivo *emitirSincrono*

        const nsAPI = require(‘ns-nfe-node/ns_modules/nfe_module/emissao/emitirSincrono’)

  • O segundo passo é importar, ou construir o arquivo de emissão em **.json** da NFe.

        const nfeJSON = require(‘./nfe.json’)

  • Após 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.

Leia também: Conheça o nosso pacote do NuGet Microsoft para NFe em C#

var retorno = nsAPI.emitirNFeSincrono(nfeJSON,"2","XP","Documentos/NFe")
retorno.then(()=>)

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

nfeJSON” = objeto NFe que será serializado para envio;

2” = tpAmb = ambiente onde será autorizado a NFe. *1 = produção, 2 = homologação / testes* ;

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

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

O retorno deste método é um objeto .json contendo um compilado dos retornos dos métodos realizados pela emissão síncrona:

       responseSincrono {
           statusEnvio: 200,
           statusConsulta: 200,
           statusDownload: 200,
           cStat: 100,
           motivo: 'Consulta realizada com sucesso',
           xMotivo: 'Autorizado o uso da NF-e',
           nsNRec: '3753664',
           chNFe: '43210914139046000109550000000257891100116493',
           nProt: '135210000895542',

  xml: '<?xml version="1.0" encoding="utf-8"?><nfeProc versao="4.00" xmlns="http://www.portalfiscal.inf.br/nfe"><NFe><infNFe versao=...</nfeProc>',

          json: undefined, // json da NFe autorizada quando tpDown = "J", ou "JP"
          pdf: undefined, // base64 do PDF da NFe ( DANFE ) autorizada quando tpDown = "P", "XP", "JP"
       erros: undefined // array de erros quando a comunicação, emissão, ou processamento apresentar erros
         }
       }

Com isso, já temos uma NFe autorizada utilizando a API de NFe da NS Tecnologia!

Podemos acessar os dados de retorno e aplicarmos validações da seguinte forma. veja o exemplo:

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

           var statusEnvio = retorno.statusEnvio;
           var nsNRec = retorno.nsNRec;
           // Verifica se houve sucesso na consulta

           if (retorno.statusConsulta == "200") {
               var statusConsulta = retorno.statusConsulta
               var motivo = retorno.motivo
               var xMotivo = retorno.xMotivo
               // Verifica se a nota foi autorizada

               if (retorno.cStat == "100" || retorno.cStat == "150") {
                   // Documento autorizado com sucesso
                   var cStat = retorno.cStat
                   var chNFe = retorno.chNFe
                   var nProt = retorno.nProt
                   var statusDownload = retorno.statusDownload

                   if (retorno.statusDownload == "200") {
                       // Verificar se houve sucesso ao realizar o download da NFe
                       let xml = retorno.xml
                       let json = retorno.json
                       let pdf = retorno.pdf
                   }

                   else {
                       // Aqui você pode realizar um tratamento em caso de erro no download
                       statusDownload = retorno.statusDownload
                       let erros = retorno.erros
                   }
               }

               else {
                   // NFe não foi autorizada com sucesso ou retorno diferente de 100 / 150
                   motivo = retorno.motivo
                   xMotivo = retorno.xMotivo
                   let erros = retorno.erros
               }
           }

           else {
               // Consulta não foi realizada com sucesso ou com retorno diferente de 200
               var motivo = retorno.motivo;
               var xMotivo = retorno.xMotivo;
               var erros = retorno.erros;
           }
       }

       else {
           // NFe não foi enviada com sucesso
           var statusEnvio = retorno.statusEnvio;
           var motivo = retorno.motivo;
           var xMotivo = retorno.xMotivo;
           var 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:

Leia Também: Nova Tabela NCM

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

SAIIUUUUU.

Série de NFe em NODE.js completa olha só:

 

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 *