1. Home
  2. Exemplos de Comunicação c...
  3. Linguagens sem suporte HT...
  4. NS NFe.exe

NS NFe.exe

Introdução

Esta página apresenta trechos de códigos de uma aplicação em VB.NET que foi desenvolvida para consumir as funcionalidades da NS NF-e API. Você pode realizar o download do exemplo clicando no link abaixo:

Funcionamento da estrutura

Para que você possa utilizar o projeto de exemplo, você deve compilá-lo para gerar o executável, pois ele será utilizado para comunicar com a API. Através de sua aplicação, você irá “rodar” o executável passando o nome da função que deseja executar e o restante dos parâmetros necessários. A aplicação possui as classes NFeAPI.vb e Principal.vb; confira o objetivo de cada uma:

NFeAPI.vb: contém todas as funções de comunicação com a API.

Principal.vb: é responsável por ler os parâmetros passados junto com a chamada do executável e realizar a chamada da função desejada (exemplo: emitirNFe, cancelarNFe, etc).

Integrando ao sistema

Para gerar o executável e comunicar com a API, você precisa realizar os seguintes passos:

  1. Instale o Visual Studio Community (é gratuito) clicando aqui: Visual Studio;
  2. Extraia o conteúdo da pasta que você baixou anteriormente e abra o projeto no Visual Studio (duplo clique sobre o arquivo NFeAPI.sln);
  3. Compile o código apertando F5 (ou clicando no botão Run da IDE).
  4. Acesse a pasta NFeAPI > bin > Debug e copie os seguintes arquivos:
    1. NFeAPI.exe;
    2. Newtonsoft.dll;
    3. Newtonsoft.xml.
  5. Cole os arquivos na pasta de sua aplicação (de preferência, na mesma pasta do executável de sua aplicação.

Pronto! Agora, você já pode consumir a NS NF-e API através do seu sistema. Confira abaixo sobre realizar uma emissão completa.

Realizando uma emissão

Para realizar uma emissão completa, você poderá utilizar a função emitirNFeSincrono. Veja abaixo sobre os parâmetros necessários, e um exemplo de chamada do método.

Parâmetros
ParâmetroDescrição
ComandoemitirNFeSincrono
TokenSeu token de acesso a API
ConteudoCaminho do arquivo com os dados de emissão.
tpConteudoTipo de conteúdo que está sendo enviado. Valores possíveis: json, xml, txt
CNPJCNPJ do emitente do documento.
tpDownTipo de arquivos a serem baixados. Valores possíveis: X - XML; J - JSON; P - PDF; XP - XML e PDF; JP - JSON e PDF
tpAmbAmbiente onde foi autorizado o documento. Valores possíveis: 1 - produção; 2 - homologação
caminhoSalvarCaminho onde devem ser salvos os documentos baixados.
exibeNaTelaSe for baixado, exibir o PDF na tela após a autorização. Valores possíveis: True - será exibido False - não será exibido
idUm identificador para ser adicionado ao final do nome do arquivo de retorno. Pode ser o número da nota, por exemplo. Exemplos.: 920, n1, env_2.
Exemplo de chamada

Após ter todos os parâmetros listados acima, você deverá fazer a chamada do executável. Veja o código de exemplo abaixo:

Exemplo de chamada emitirNFeSincrono

ShellExecute(0, "Open", "NFeAPI.exe", "emitirNFeSincrono SEU_TOKEN C:/nota_001.txt txt 07364617000135 XP 2 C:/notas true 001", 0, 1)

Acima foi utilizado o comando ShellExecute mas você pode utilizar outro comando de sua preferência.

 
A função emitirNFeSincrono fará o envio, a consulta e download do documento, utilizando as funções emitirNFe, consultarStatusProcessamento e downloadNFeAndSave, presentes na classe NFeAPI.bas. Por isso, o retorno será um JSON com os principais campos retornados pelos métodos citados anteriormente.

O retorno da chamada acima ficaria assim: ./respostas/emitirNFeSincrono_001.json

No exemplo abaixo, veja como tratar o retorno da função emitirNFeSincrono:

Exemplo de tratamento do retorno

O JSON retornado pelo método terá os seguintes campos: statusEnviostatusConsultastatusDownloadcStatchNFenProtmotivonsNRecerros. Veja o exemplo abaixo:Retorno emitirNFeSincrono

{"statusEnvio": "200","statusConsulta": "200","statusDownload": "200","cStat": "100","chNFe": "43181007364617000135550000000119741004621864","nProt": "143180007036833","motivo": "Autorizado o uso da NF-e","nsNRec": "313022","erros": ""}

Confira a lógica para tratamento do retorno, e aplique-a na sua linguagem:Código de exemplo de tratamento do retorno

'Primeiramente, você deve ler os campos do json de retorno, através do seu sistema.'Agora que você já leu os dados, é aconselhável que faça o salvamento de todos'eles no seu banco de dados antes de prosseguir para o teste abaixo. 'Testa se houve sucesso na emissãoSe (statusEnvio = 200) Ou (statusEnvio = -6) Então'Testa se houve sucesso na consultaSe (statusConsulta = 200) Então'Testa se a nota foi autorizadaSe (cStat = 100) Ou (cStat = 150) Então'Aqui dentro você pode realizar procedimentos como desabilitar o botão de emitir, etcMostrarMensagem (motivo) 'Testa se o download teve problemasSe (statusDownload != 200) EntãoMostrarMensagem (motivo)Fim SeSenão'Aqui você pode mostrar alguma solução para o parceiro ou exibir opção de editar a notaMostrarMensagem (motivo)Fim Se'Caso tenha dado erro na consultaSenão'Aqui você pode mostrar uma mensagem ao usuárioMostrarMensagem (motivo + Chr(13) + erros)Fim SeSenão'Aqui você pode exibir para o usuário o erro que ocorreu no envioMostrarMensagem (motivo + Chr(13) + erros)Fim Se
Demais funcionalidades

No módulo NFeAPI, você pode encontrar também as seguintes funcionalidades:

NomeFinalidadeDocumentação da API
enviaConteudoParaAPIFunção genérica que envia um conteúdo para API. Requisições do tipo POST.
emitirNFeEnvia uma NF-e para processamento.https://documentacao.nstecnologia.com.br/docs/ns-nfe/emissao-de-nfe/emissao/
consultarStatusProcessamentoConsulta o status de processamento de uma NF-e.https://documentacao.nstecnologia.com.br/docs/ns-nfe/emissao-de-nfe/status-de-processamento/
downloadNFeBaixa documentos de emissão de uma NF-e autorizada.https://documentacao.nstecnologia.com.br/docs/ns-nfe/emissao-de-nfe/download/
downloadNFeAndSaveBaixa documentos de emissão de uma NF-e autorizada e salva-os em um diretório.Por utilizar o método downloadNFe, a documentação é a mesma.
downloadEventoNFeBaixa documentos de evento de uma NF-e autorizada.https://documentacao.nstecnologia.com.br/docs/ns-nfe/eventos/download-de-evento-de-nfe/
downloadEventoNFeAndSaveBaixa documentos de evento de uma NF-e autorizada e salva-os em um diretório.Por utilizar o método downloadEventoNFe, a documentação é a mesma.
cancelarNFeRealiza o cancelamento de uma NF-e.https://documentacao.nstecnologia.com.br/docs/ns-nfe/eventos/cancelamento/
corrigirNFeRealiza a CC-e de uma NF-e.https://documentacao.nstecnologia.com.br/docs/ns-nfe/eventos/carta-de-correcao-de-nfe/
consultarCadastroContribuinteConsulta o cadastro de um contribuinte.https://documentacao.nstecnologia.com.br/docs/ns-nfe/funcoes-utilitarias/consulta-cadastro-de-contribuinte-de-nfe/
consultarSituacaoConsulta a situação de uma NF-e na Sefaz.https://documentacao.nstecnologia.com.br/docs/ns-nfe/eventos/consulta-situacao-de-nf-e/
enviarEmailEnvia NF-e por e-mail. (Para enviar mais de um e-mail, separe os endereços por vírgula).https://documentacao.nstecnologia.com.br/docs/ns-nfe/funcoes-utilitarias/envio-de-nf-e-por-e-mail/
inutilizarInutiliza numerações de NF-e.https://documentacao.nstecnologia.com.br/docs/ns-nfe/eventos/inutilizacao-de-numeracao-de-nfe/
listarNSNRecsLista os nsNRec vinculados a uma NF-e.https://documentacao.nstecnologia.com.br/docs/ns-nfe/funcoes-utilitarias/lista-de-nsnrecs-vinculados-a-uma-nfe/
atualizarCertificadoAtualiza o certificado de uma licença.https://documentacao.nstecnologia.com.br/docs/painel-ns-tecnologia/cadastro-de-licencas-via-api/upload-de-certificado/
NomeParâmetros
enviaConteudoParaAPI token = seu token de acesso;caminho = caminho do arquivo com o conteúdo a ser enviado;url = URL para onde deve ser enviado o conteúdo;tpConteudo = tipo de conteúdo (xml, txt, json);id = identificador para adicionar ao final do nome do arquivo de retorno. 
emitirNFetoken = seu token de acesso;
caminho = caminho do arquivo com o conteúdo a ser enviado;tpConteudo = tipo de conteúdo (xml, txt, json);id = identificador para adicionar ao final do nome do arquivo de retorno.
consultarStatusProcessamentotoken = seu token de acesso;CNPJ = CNPJ do emitente da nota;nsNRec = número de recibo da nota;tpAmb = tipo de ambiente onde foi emitida a nota (1 ou 2);id = identificador para adicionar ao final do nome do arquivo de retorno.
downloadNFetoken = seu token de acesso;chNFe = chave de acesso da nota;tpDown = tipo de download (X, P, J, XP ou JP);tpAmb = tipo de ambiente onde foi emitida a nota (1 ou 2);id = identificador para adicionar ao final do nome do arquivo de retorno.
downloadNFeAndSavetoken = seu token de acesso;chNFe = chave de acesso da nota;tpDown = tipo de download (X, P, J, XP ou JP);tpAmb = tipo de ambiente onde foi emitida a nota (1 ou 2);caminhoSalvar = caminho onde devem ser salvos os arquivos baixados;exibeNaTela = exibir o PDF ou não, caso baixado (true ou false);id = identificador para adicionar ao final do nome do arquivo de retorno.
downloadEventoNFetoken = seu token de acesso;chNFe = chave de acesso da nota;tpDown = tipo de download (X, P, J, XP ou JP);tpAmb = tipo de ambiente onde foi emitida a nota (1 ou 2);tpEvento = tipo de evento (canc = cancelamento, cce = carta de correção);nSeqEvento = número sequencial do evento;id = identificador para adicionar ao final do nome do arquivo de retorno.
downloadEventoNFeAndSavetoken = seu token de acesso;chNFe = chave de acesso da nota;tpDown = tipo de download (X, P, J, XP ou JP);tpAmb = tipo de ambiente onde foi emitida a nota (1 ou 2);tpEvento = tipo de evento (canc = cancelamento, cce = carta de correção);nSeqEvento = número sequencial do evento;caminhoSalvar = caminho onde devem ser salvos os arquivos baixados;exibeNaTela = exibir o PDF ou não, caso baixado (true ou false);id = identificador para adicionar ao final do nome do arquivo de retorno.
cancelarNFetoken = seu token de acesso;chNFe = chave de acesso da nota;tpAmb = tipo de ambiente onde foi emitida a nota (1 ou 2);dhEvento = data-hora do evento;nProt = número do protocolo;xJust = justificativa do cancelamento;tpDown = tipo de download (X, P, J, XP ou JP);caminhoSalvar = caminho onde devem ser salvos os arquivos baixados;exibeNaTela = exibir o PDF ou não, caso baixado (true ou false);id = identificador para adicionar ao final do nome do arquivo de retorno.
corrigirNFetoken = seu token de acesso;chNFe = chave de acesso da nota;tpAmb = tipo de ambiente onde foi emitida a nota (1 ou 2);dhEvento = data-hora do evento;nSeqEvento = número sequencial do evento;xCorrecao = descrição da correção;tpDown = tipo de download (X, P, J, XP ou JP);caminhoSalvar = caminho onde devem ser salvos os arquivos baixados;exibeNaTela = exibir o PDF ou não, caso baixado (true ou false);id = identificador para adicionar ao final do nome do arquivo de retorno.
consultarCadastroContribuintetoken = seu token de acesso;CNPJCont = CNPJ do contribuinte;UF = UF da consulta;documentoConsulta = CNPJ, CPF ou IE a ser consultado;tpConsulta = tipo de consulta: "CNPJ", "CPF" ou "IE" (sem aspas);id = identificador para adicionar ao final do nome do arquivo de retorno.
consultarSituacaotoken = seu token de acesso;licencaCNPJ = CNPJ da licença do contribuinte;chNFe = chave de acesso da nota;tpAmb = tipo de ambiente onde foi emitida a nota (1 ou 2);versao = versão da NF-e (3.10 ou 4.00);id = identificador para adicionar ao final do nome do arquivo de retorno.
enviarEmailtoken = seu token de acesso;chNFe = chave de acesso da nota;enviaEmailDoc = true ou false;email = endereços de e-mail dos destinatários (se for mais de um, separe por vírgula);id = identificador para adicionar ao final do nome do arquivo de retorno.
inutilizartoken = seu token de acesso;cUF = código da UF;tpAmb = tipo de ambiente (1 ou 2);ano = ano (somente o final: 2018 = 18);CNPJ = CNPJ do emitente;serie = serie onde será inutilizada a nota;nNFIni = número inicial;nNFFin = número final;xJust = justificativa de inutilização;id = identificador para adicionar ao final do nome do arquivo de retorno.
listarNSNRecstoken = seu token de acesso;chNFe = chave de acesso da nota;id = identificador para adicionar ao final do nome do arquivo de retorno.
atualizarCertificadotoken = seu token de acesso;licencaCnpj = CNPJ da licença a ser atualizada;projeto = código do projeto;password = senha do certificado;file = caminho do arquivo do certificado;id = identificador para adicionar ao final do nome do arquivo de retorno.

How can we help?