Introdução
Esta página apresenta trechos de códigos de um classe VPF que foi desenvolvido para consumir as funcionalidades da NS NF-e API.
Você pode realizar o download da classe e de uma aplicação de exemplo clicando na imagem abaixo:
Classe NFeAPI
Está classe foi desenvolvida para auxiliar na integração dos parceiros que possuem sistema em VPF.
Adicionando ela ao seu sistema, você pode fazer simples chamadas de métodos e se comunicar diretamente com a NS NF-e API, obtendo o retorno como string.
Em um dos métodos e na aplicação de exemplo, foi utilizado o PRG ‘qdfoxjson’ para facilitar a deserialização do JSON. Este PRG encontra-se junto com a classe e o projeto.
Métodos da Classe NFeAPI
Emissão de NF-e
Envia um conteúdo para o serviço de Emissão de NF-e.
Verifique a documentação da API para saber quais os possíveis status a serem retornados: Dados Retornados na Emissão
Abaixo temos exemplos de conteúdo de emissão em arquivo txt e json.
Parâmetros Informados
| Parâmetro | Descrição |
|---|---|
| Token | Token de sua Software House, gerado por nossa equipe |
| Contúdo | A nota de seu cliente |
| TpConteudo | Tipo de conteúdo que está sendo enviado para API, podendo ser:"txt""xml""json" |
Código do Método
emitirNFe
FUNCTION emitirNFePARAMETERS token, conteudo, tpConteudourl = "https://nfe.ns.eti.br/nfe/issue"retorno = this.enviaConteudoParaAPI(token, conteudo, url, tpConteudo)RETURN retornoENDFUNC
Exemplo de Chamada
NFeAPI = NEWOBJECT("nfeapi", "nfeapi.prg")retorno = NFeAPI.emitirNFe(token, conteudo, tpConteudo)
Status de Processamento de NF-e
Consulta o status de processamento de uma NF-e enviada anteriormente pelo método Emissão de NF-e.
Verifique a documentação da API para saber quais os possíveis status a serem retornados: Dados Retornados na Consulta
Parâmetros Informados
| Parâmetro | Descrição |
|---|---|
| Token | Token de sua Software House, gerado por nossa equipe |
| CNPJ | CNPJ de seu cliente, emitente da nota que deseja consultar |
| nsNRec | Número de protocolo de recebimento da API, utilizado para consultar a nota enviada |
Código do Método
consultaStatusProcessamento
FUNCTION consultaStatusProcessamentoPARAMETERS token, CNPJ, nsNRecconteudo = '{"X-AUTH-TOKEN": "' + token + '", "CNPJ": "' + CNPJ + '", "nsNRec": "' + nsNRec + '"}'url = "https://nfe.ns.eti.br/nfe/issue/status"retorno = this.enviaConteudoParaAPI(token, conteudo, url, "json")RETURN retornoENDFUNC
Exemplo de Chamada
<!-- wp:syntaxhighlighter/code {"language":"jscript"} -->
<pre class="wp-block-syntaxhighlighter-code"></pre>
<!-- /wp:syntaxhighlighter/code -->
Download de NF-e
Realiza o download de uma NF-e enviada e consultada pela API, que foi autorizada pela SEFAZ.
Verifique a documentação da API para saber quais os possíveis status a serem retornados: Dados Retornados no Download
Parâmetros Informados
| Parâmetro | Descrição |
|---|---|
| Token | Token de sua Software House, gerado por nossa equipe |
| ChNFe | Chave de acesso da nota que desejas fazer o download |
| TpDown | Tipo de download desejado, podendo ser "X", "J", "P", "XP" e "JP""X" - XML"J" - JSON"P" - PDF"XP" - XML e PDF"JP" - JSON e PDF |
Código do Método
downloadNFe
FUNCTION downloadNFePARAMETERS token, chNFe, tpDownconteudo = '{"X-AUTH-TOKEN": "' + token + '", "chNFe": "' + chNFe + '", "tpDown": "' + tpDown + '"}'url = "https://nfe.ns.eti.br/nfe/get"retorno = this.enviaConteudoParaAPI(token, conteudo, url, "json")RETURN retornoENDFUNC
Exemplo de Chamada
NFeAPI = NEWOBJECT("nfeapi", "nfeapi.prg")retorno = NFeAPI.downloadNFe(token, chave, tpDown)
Download de NF-e Salvando Local
Realiza o download de uma NF-e enviada e consultada pela API, que foi autorizada pela SEFAZ.
Em seguida, se o retorno da API for 200, deserializa o retorno e salva o documento no caminho informado.
Verifique a documentação da API para saber quais os possíveis status a serem retornados: Dados Retornados no Download
Parâmetros Informados
| Parâmetro | Descrição |
|---|---|
| Token | Token de sua Software House, gerado por nossa equipe |
| ChNFe | Chave de acesso da nota que desejas fazer o download |
| TpDown | Tipo de download desejado, podendo ser "X", "J", "P", "XP" e "JP""X" - XML"J" - JSON"P" - PDF"XP" - XML e PDF"JP" - JSON e PDF |
| Caminho | Local onde o documento solicitado deve ser salvo |
| isShow | Se o PDF do documento deve ser exibido na tela após o download |
Código do Método
downloadNFeAndSave
FUNCTION downloadNFeAndSavePARAMETERS token, chNFe, tpDown, caminho, isShowDECLARE INTEGER ShellExecute IN "Shell32.dll" ;INTEGER hwnd, ;STRING lpVerb, ;STRING lpFile, ;STRING lpParameters, ;STRING lpDirectory, ;LONG nShowCmd retorno = this.downloadNFe(token, chNFe, tpDown) Obj = NEWOBJECT("jsonHelper", "qdfoxjson.prg")Obj = Obj.Parse(retorno) IF(Obj.status == 200) THENIF LEN(caminho) > 0 THENIF (!(FILE(caminho))) THENthis.criaPastas(caminho)ENDIFIF (!(RIGHT(caminho, 1) == "\")) THENcaminho = caminho + "\"ENDIFENDIF tpDownUpper = UPPER(tpDown)IF(AT("X", tpDownUpper) <> 0) THENSTRTOFILE(Obj.xml, caminho + chNFe + "-procNfe.xml")ELSEIF(AT("J", tpDownUpper) <> 0) THENjson = this.separaJson(retorno)STRTOFILE(json, caminho + chNFe + "-procNfe.json")ENDIFENDIFIF(AT("P", tpDownUpper) <> 0) THENSTRTOFILE(STRCONV(Obj.pdf, 14), caminho + chNFe + "-procNfe.pdf")IF(isShow == 1) THENShellexecute(0,"Open", (caminho + chNFe + "-procNfe.pdf"), "","",7)ENDIFENDIF ENDIF RETURN retornoENDFUN
Exemplo de Chamada
NFeAPI = NEWOBJECT("nfeapi", "nfeapi.prg")retorno = NFeAPI.downloadNFeAndSave(token, chave, tpDown, "Documentos", 1)
Método geral de Envio de Conteúdo para API
Esse é um método genérico, que é utilizado por todos os outros métodos de comunicação.
Nele enviamos token, conteudo, url e informamos o tipo de conteúdo, para que seja realizada a comunicação com a API. Seu retorno é uma String contendo o JSON de resposta.
Caso ocorra alguma exceção na requisição, será retornado a resposta da API.
Parâmetros Informados
| Parâmetro | Descrição |
|---|---|
| Token | Token de sua Software House, gerado por nossa equipe |
| Conteúdo | A nota de seu cliente |
| URL | URL do serviço a ser realizado pela API |
| TpConteudo | Tipo de conteúdo que está sendo enviado para API, podendo ser:"txt""xml""json" |
Código do Método
enviaConteudoParaAPI
FUNCTION enviaConteudoParaAPIPARAMETERS token, conteudo, url, tpConteudo&&PARAMETERS loHTTPloHTTP = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")loHTTP.Open("POST", url, .F.)loHTTP.SetRequestHeader("X-AUTH-TOKEN", token) DO CASECASE (tpConteudo == "txt")loHTTP.SetRequestHeader("content-type", "text/plain")CASE (tpConteudo == "xml")loHTTP.SetRequestHeader("content-type", "application/xml")CASE (tpConteudo == "json")loHTTP.SetRequestHeader("content-type", "application/json")ENDCASE loHTTP.Send(conteudo)RETURN loHTTP.ResponseBodyENDFUNC
Aplicação de Exemplo
A aplicação de exemplo é um projeto VFP que você pode utilizar como auxílio para o desenvolvimento dos códigos de suas aplicações.
No projeto é utilizado o arquivo ‘NFeAPI.prg’, onde foram implementados os métodos da API.
Como Executar o Exemplo?
Execute o arquivo chamado nfeapiclientfoxpro.app que está localizado no seguinte caminho: ‘…\Exemplo\nfeapiclientfoxpro.app’.
A tela a seguir irá aparecer:

Testando Emissão
Para testar a Emissão, basta informar o token, o cónteudo e o tipo de conteúdo que está sendo enviado.
O retorno da API aparecerá no respectivo campo e o Nº de Recebimento será preenchido automaticamente, caso tenha ocorrido tudo certo com a Emissão.
Testando Consulta
Para testar a Consulta, basta informar o token, o CNPJ do emitente e o Nº de recebimento(recebido ao realizar emissão).
O retorno da API aparecerá no respectivo campo e a Chave para download será preenchida automaticamente, caso tenha ocorrido tudo certo com a Consulta.
Testando Download
Para testar o Download, basta informar o token, a chave da NF-e que desejas realizar o download e o tipo de download desejado.
É possível também informar se deseja salvar local* o documento solicitado, bem como abrir o seu PDF automaticamente.
O retorno da API aparecerá no respectivo campo e caso tenhas marcado alguma opção, será realizada a operação.
*Por default o documento será salvo na mesma pasta da aplicação