1. Home
  2. Docs
  3. Exemplos de Comunicação c...
  4. FOXPRO
  5. NS NF-e API – Consumo em FoxPro 9

NS NF-e API – Consumo em FoxPro 9

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âmetroDescrição
TokenToken de sua Software House, gerado por nossa equipe
ContúdoA nota de seu cliente
TpConteudoTipo 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âmetroDescrição
TokenToken de sua Software House, gerado por nossa equipe
CNPJCNPJ de seu cliente, emitente da nota que deseja consultar
nsNRecNú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âmetroDescrição
TokenToken de sua Software House, gerado por nossa equipe
ChNFeChave de acesso da nota que desejas fazer o download
TpDownTipo 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âmetroDescrição
TokenToken de sua Software House, gerado por nossa equipe
ChNFeChave de acesso da nota que desejas fazer o download
TpDownTipo 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
CaminhoLocal onde o documento solicitado deve ser salvo
isShowSe 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âmetroDescrição
TokenToken de sua Software House, gerado por nossa equipe
ConteúdoA nota de seu cliente
URLURL do serviço a ser realizado pela API
TpConteudoTipo 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

How can we help?