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!