Como consultar CNPJ via API no Progress 4GL (OpenEdge).
Aprenda a consultar CNPJ via API no Progress 4GL com OpenEdge.Net: código pronto, leitura do JSON, tratamento de erros e boas práticas. API de CNPJ grátis, sem chave e sem cadastro.
Por que usar a API do openCNPJ no Progress 4GL
Sistemas em Progress 4GL (OpenEdge ABL), como o TOTVS Datasul, podem consultar o CNPJ automaticamente usando o cliente HTTP nativo OpenEdge.Net. O JSON é lido com Progress.Json.ObjectModel, sem bibliotecas externas.
- Grátis, sem chave de acesso e sem cadastro.
- Resposta em JSON com razão social, situação cadastral, endereço, CNAEs, sócios e Simples Nacional.
- Aceita o CNPJ numérico e o novo CNPJ alfanumérico.
- Limite de 10 requisições por segundo por IP.
O que você precisa
OpenEdge 11.5+ com a biblioteca OpenEdge.Net (cliente HTTP) e os certificados da cadeia HTTPS importados no certstore do OpenEdge.
Consultar um CNPJ no Progress 4GL
O endpoint é GET https://api.opencnpj.com.br/cnpj/{cnpj}. Envie o CNPJ com 14 caracteres, sem pontos, barra ou hífen. O exemplo abaixo consulta o CNPJ 06.990.590/0001-23:
USING OpenEdge.Net.HTTP.*.
USING Progress.Json.ObjectModel.*.
DEFINE VARIABLE oClient AS IHttpClient NO-UNDO.
DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO.
DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
DEFINE VARIABLE oEmpresa AS JsonObject NO-UNDO.
DEFINE VARIABLE cCnpj AS CHARACTER NO-UNDO INITIAL "06990590000123".
oClient = ClientBuilder:Build():Client.
oRequest = RequestBuilder:Get("https://api.opencnpj.com.br/cnpj/" + cCnpj):Request.
oResponse = oClient:Execute(oRequest).
IF oResponse:StatusCode = 200 THEN DO:
oEmpresa = CAST(oResponse:Entity, JsonObject).
MESSAGE oEmpresa:GetCharacter("razao_social") VIEW-AS ALERT-BOX.
END.
ELSE
MESSAGE "Erro HTTP" oResponse:StatusCode VIEW-AS ALERT-BOX.OpenEdge 11.5+ (cliente HTTP OpenEdge.Net). Para HTTPS, os certificados da cadeia precisam estar no certstore do OpenEdge (certutil).
Remover a máscara do CNPJ
Se o CNPJ vem formatado (06.990.590/0001-23) de um formulário, banco de dados ou planilha, limpe a pontuação antes de montar a URL. A mesma regra funciona para o CNPJ alfanumérico:
FUNCTION LimpaCnpj RETURNS CHARACTER (INPUT pcCnpj AS CHARACTER):
RETURN CAPS(REPLACE(REPLACE(REPLACE(TRIM(pcCnpj), ".", ""), "/", ""), "-", "")).
END FUNCTION.
/* LimpaCnpj("06.990.590/0001-23") = "06990590000123" */
Campos mais usados da resposta
| Campo | Conteúdo |
|---|---|
razao_social | Nome empresarial |
estabelecimento.nome_fantasia | Nome fantasia |
estabelecimento.situacao_cadastral | Ativa, Suspensa, Inapta, Baixada ou Nula |
estabelecimento.atividade_principal | CNAE principal, com código e descrição |
estabelecimento.cidade.nome e estabelecimento.estado.sigla | Município e UF |
estabelecimento.cep, logradouro, numero, bairro | Endereço |
simples.simples e simples.mei | Opção pelo Simples Nacional e MEI |
socios | Quadro de sócios e administradores |
A lista completa de campos está na documentação da API.
Tratando erros
Verifique o status HTTP antes de ler o JSON. Progress 4GL: use oResponse:StatusCode.
| Status | O que significa | O que fazer |
|---|---|---|
200 | CNPJ encontrado | Ler o JSON |
400 | Formato de CNPJ inválido | Conferir os 14 caracteres |
404 | CNPJ não encontrado na base | Informar ao usuário |
429 | Limite de requisições excedido | Aguardar e tentar de novo |
500 | Erro interno | Tentar novamente mais tarde |
Os erros também vêm em JSON, com os campos status, titulo e detalhes.
Boas práticas
- Defina um timeout na requisição, por exemplo com as opções de timeout do
ClientBuilder. - Guarde o resultado em cache se o mesmo CNPJ for consultado com frequência.
- Em processamentos em lote, respeite o limite de 10 requisições por segundo.
- Os dados refletem a base pública mais recente processada e não substituem certidões oficiais.
Perguntas frequentes
A API de CNPJ do openCNPJ é gratuita?
Sim, 100% grátis. Não há chave de acesso nem cadastro. O limite é de 10 requisições por segundo por IP.
O que fazer em caso de erro de certificado SSL?
Importe os certificados da cadeia de api.opencnpj.com.br no certstore do OpenEdge com o utilitário certutil (certutil -import arquivo.pem).
Funciona no TOTVS Datasul?
Sim. O Datasul é escrito em Progress 4GL; a mesma chamada pode ser usada em programas específicos ou em pontos de integração do cadastro de emitentes.
De onde vêm os dados do CNPJ?
Dos dados abertos do CNPJ publicados pela Receita Federal, complementados por bases públicas. Os dados podem ter defasagem e não substituem certidões oficiais. Veja a origem dos dados.