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 DDF-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 DDFeAPI.vb e Principal.vb; confira o objetivo de cada uma:
DDFeAPI.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: manifestacao, downloadUnico, 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 DDFeAPI.sln);
- Compile o código apertando F5 (ou clicando no botão Run da IDE).
- Acesse a pasta DDFeAPI > bin > Debug e copie os seguintes arquivos:
- DDFeAPI.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 DDF-e API através do seu sistema. Confira abaixo sobre realizar uma emissão completa.
Realizando uma Download Em Lote
Para realizar uma emissão completa, você poderá utilizar a função downloadLote. Veja abaixo sobre os parâmetros necessários, e um exemplo de chamada do método.
Parâmetros
| Parâmetro | Descrição |
|---|---|
| comando | downloadLote |
| token | Seu token de acesso a API |
| caminho | Caminho onde devem ser salvos os documentos baixados. |
| CNPJInteressado | CNPJ do interessado em receber o documento |
| tpAmb | Ambiente onde foi autorizado o documento. Valores possíveis: 1 - produção 2 - homologação |
| modelo | Modelo do projeto:55 - NF-e (valor padrão)57 - CT-e98 - NFSe SP |
| ultNSU | Último NSU recebido pelo consumidor e a partir do qual deseja consultar NF-es ou CT-es |
| incluirPDF | Incluir do documento .pdf auxiliar |
| apenasComXml | Carregar apenas documentos com XMLs disponíveis |
| comEventos | Incluir eventos vinculados ao documento |
| apenasPendManif | Carregar apenas documentos pendentes de manifestação |
| 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", "DDFeAPI.exe", "downloadLote SEU_TOKEN C:/notas 07364617000135 2 55 472 false false false false 1", 0, 1)
Acima foi utilizado o comando ShellExecute mas você pode utilizar outro comando de sua preferência.
A função downloadLote fará o download de documentos que estejam a frente do ultimo NSU. Esta função utiliza os métodos tratamentoDownloadLote e downloadDocsLote, presentes na classe DDFeAPI.vb, para tratar o retorno da NSAPI e fazer o download dos xmls dos documentos requisitados, respectivamente.
O retorno da chamada acima ficaria assim: ./respostas/downloadLote_1.json
No exemplo abaixo, veja como tratar o retorno da função downloadLote:
PAREI AQUI 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
{"status": "200","modelo": "55","chaves": ["chave":"chave":"chave":"chave":"chave":"chave":],"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; 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. |