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:
- Instale o Visual Studio Community (é gratuito) clicando aqui: Visual Studio;
- Extraia o conteúdo da pasta que você baixou anteriormente e abra o projeto no Visual Studio (duplo clique sobre o arquivo NFeAPI.sln);
- Compile o código apertando F5 (ou clicando no botão Run da IDE).
- Acesse a pasta NFeAPI > bin > Debug e copie os seguintes arquivos:
- NFeAPI.exe;
- Newtonsoft.dll;
- Newtonsoft.xml.
- 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âmetro | Descrição |
|---|---|
| Comando | emitirNFeSincrono |
| Token | Seu token de acesso a API |
| Conteudo | Caminho do arquivo com os dados de emissão. |
| tpConteudo | Tipo de conteúdo que está sendo enviado. Valores possíveis: json, xml, txt |
| CNPJ | CNPJ do emitente do documento. |
| tpDown | Tipo de arquivos a serem baixados. Valores possíveis: X - XML; J - JSON; P - PDF; XP - XML e PDF; JP - JSON e PDF |
| tpAmb | Ambiente onde foi autorizado o documento. Valores possíveis: 1 - produção; 2 - homologação |
| caminhoSalvar | Caminho onde devem ser salvos os documentos baixados. |
| exibeNaTela | Se for baixado, exibir o PDF na tela após a autorização. Valores possíveis: True - será exibido False - não será exibido |
| id | Um 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: statusEnvio, statusConsulta, statusDownload, cStat, chNFe, nProt, motivo, nsNRec, erros. 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:
| Nome | Finalidade | Documentação da API |
|---|---|---|
| enviaConteudoParaAPI | Função genérica que envia um conteúdo para API. Requisições do tipo POST. | |
| emitirNFe | Envia uma NF-e para processamento. | https://documentacao.nstecnologia.com.br/docs/ns-nfe/emissao-de-nfe/emissao/ |
| consultarStatusProcessamento | Consulta o status de processamento de uma NF-e. | https://documentacao.nstecnologia.com.br/docs/ns-nfe/emissao-de-nfe/status-de-processamento/ |
| downloadNFe | Baixa documentos de emissão de uma NF-e autorizada. | https://documentacao.nstecnologia.com.br/docs/ns-nfe/emissao-de-nfe/download/ |
| downloadNFeAndSave | Baixa 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. |
| downloadEventoNFe | Baixa documentos de evento de uma NF-e autorizada. | https://documentacao.nstecnologia.com.br/docs/ns-nfe/eventos/download-de-evento-de-nfe/ |
| downloadEventoNFeAndSave | Baixa 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. |
| cancelarNFe | Realiza o cancelamento de uma NF-e. | https://documentacao.nstecnologia.com.br/docs/ns-nfe/eventos/cancelamento/ |
| corrigirNFe | Realiza a CC-e de uma NF-e. | https://documentacao.nstecnologia.com.br/docs/ns-nfe/eventos/carta-de-correcao-de-nfe/ |
| consultarCadastroContribuinte | Consulta o cadastro de um contribuinte. | https://documentacao.nstecnologia.com.br/docs/ns-nfe/funcoes-utilitarias/consulta-cadastro-de-contribuinte-de-nfe/ |
| consultarSituacao | Consulta a situação de uma NF-e na Sefaz. | https://documentacao.nstecnologia.com.br/docs/ns-nfe/eventos/consulta-situacao-de-nf-e/ |
| enviarEmail | Envia 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/ |
| inutilizar | Inutiliza numerações de NF-e. | https://documentacao.nstecnologia.com.br/docs/ns-nfe/eventos/inutilizacao-de-numeracao-de-nfe/ |
| listarNSNRecs | Lista os nsNRec vinculados a uma NF-e. | https://documentacao.nstecnologia.com.br/docs/ns-nfe/funcoes-utilitarias/lista-de-nsnrecs-vinculados-a-uma-nfe/ |
| atualizarCertificado | Atualiza o certificado de uma licença. | https://documentacao.nstecnologia.com.br/docs/painel-ns-tecnologia/cadastro-de-licencas-via-api/upload-de-certificado/ |
| Nome | Parâ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. |
| emitirNFe | token = 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. |
| consultarStatusProcessamento | token = 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. |
| downloadNFe | token = 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. |
| downloadNFeAndSave | token = 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. |
| downloadEventoNFe | token = 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. |
| downloadEventoNFeAndSave | token = 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. |
| cancelarNFe | token = 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. |
| corrigirNFe | token = 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. |
| consultarCadastroContribuinte | token = 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. |
| consultarSituacao | token = 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. |
| enviarEmail | token = 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. |
| inutilizar | token = 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. |
| listarNSNRecs | token = seu token de acesso;chNFe = chave de acesso da nota;id = identificador para adicionar ao final do nome do arquivo de retorno. |
| atualizarCertificado | token = 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. |