https://github.com/tgentil/validador-cnpj
https://github.com/tgentil/validador-cnpj
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/tgentil/validador-cnpj
- Owner: Tgentil
- Created: 2025-04-25T14:01:55.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-04-25T18:36:15.000Z (6 months ago)
- Last Synced: 2025-07-20T03:02:38.530Z (3 months ago)
- Language: JavaScript
- Size: 6.84 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🧾 Validador de CNPJ com HTML, JavaScript e Bootstrap
[](https://github.com/Tgentil) [](https://tgentil.github.io/validador-cnpj/)
Este projeto é um validador de CNPJ com frontend responsivo, desenvolvido com HTML, JavaScript Vanilla e Bootstrap. Ele realiza validação do CNPJ com base na fórmula oficial dos dígitos verificadores, aplica máscara de entrada com `IMask.js`, e realiza uma busca na [BrasilAPI](https://brasilapi.com.br/) para consultar o nome da empresa com base no CNPJ fornecido.
🔗 Acesse em: [Validador de CNPJ](https://tgentil.github.io/validador-cnpj/)
---
## 🚀 Como usar
1. Clone ou baixe este repositório.
2. Abra o arquivo `index.html` no seu navegador.
3. Digite um CNPJ (com ou sem pontuação).
4. Clique em **Validar**.
5. O sistema exibirá:
- Se o CNPJ é válido ou inválido.
- Se a empresa foi encontrada na base da BrasilAPI.---
## 📁 Estrutura dos arquivos
```
📦 projeto-validador-cnpj/
├── index.html
├── script.js
└── README.md
```---
## 🧠 Explicação do JavaScript (`script.js`)
### 1. 🔹 Entrada e limpeza (opcional)
```js
let cnpj = document.getElementById("cnpjInput").value;// --- LIMPEZA OPCIONAL: REMOVER PONTUAÇÃO ---
cnpj = cnpj.replace(/[^\d]+/g, '');
```- **Objetivo**: Captura o valor do campo de input.
- **Limpeza opcional**: Remove qualquer pontuação, espaços, ou caracteres não numéricos do CNPJ.
- **Observação**: Esse bloco pode ser comentado se quiser que a validação seja feita apenas em CNPJs digitados sem pontuação.---
### 2. 🔸 Validação inicial
```js
if (cnpj.length !== 14 || /^(\d)+$/.test(cnpj)) {
alert("CNPJ inválido.");
return;
}
```- **Objetivo**: Valida o tamanho (CNPJ deve ter 14 dígitos) e evita sequências repetidas como `00000000000000`, `11111111111111`, etc.
---
### 3. 🔹 Primeiro dígito verificador
```js
let tamanho = cnpj.length - 2;
let numeros = cnpj.substring(0, tamanho);
const digitos = cnpj.substring(tamanho);
let soma = 0;
let pos = tamanho - 7;for (let i = tamanho; i >= 1; i--) {
soma += parseInt(numeros.charAt(tamanho - i)) * pos--;
if (pos < 2) pos = 9;
}let resultado = soma % 11 < 2 ? 0 : 11 - (soma % 11);
if (resultado !== parseInt(digitos.charAt(0))) {
alert("CNPJ inválido.");
return;
}
```- **Objetivo**: Calcula o **primeiro dígito verificador** com base nos primeiros 12 dígitos.
- **Regra**: A fórmula usa multiplicações decrescentes de 5 a 2, e depois de 9 a 2, recomeçando.
- **Resultado**: Compara o resultado com o 13º dígito do CNPJ.---
### 4. 🔸 Segundo dígito verificador
```js
tamanho += 1;
numeros = cnpj.substring(0, tamanho);
soma = 0;
pos = tamanho - 7;for (let i = tamanho; i >= 1; i--) {
soma += parseInt(numeros.charAt(tamanho - i)) * pos--;
if (pos < 2) pos = 9;
}resultado = soma % 11 < 2 ? 0 : 11 - (soma % 11);
if (resultado !== parseInt(digitos.charAt(1))) {
alert("CNPJ inválido.");
return;
}
```- **Objetivo**: Calcula o **segundo dígito verificador**, agora usando os 13 primeiros dígitos (incluindo o primeiro verificador).
- **Regra**: O mesmo esquema de multiplicadores.
- **Resultado**: Compara o cálculo com o 14º dígito do CNPJ.---
## 🔍 Integração com a BrasilAPI
Após validar o CNPJ, o código realiza:
```js
const response = await fetch(`https://brasilapi.com.br/api/cnpj/v1/${cnpj}`);
const data = await response.json();
```- Se `data.razao_social` existir → mostra o nome da empresa.
- Se não existir → "empresa não encontrada, mas CNPJ é válido".
- Erros HTTP (como 429,404,524...) são tratados com mensagens personalizadas.---
## ⏳ Feedback Visual
Durante a busca na API:
- O botão de validação é desativado.
- Um **spinner** com a mensagem "Consultando dados na Receita..." é exibido.Após a resposta ou erro:
- O botão é reabilitado.
- O spinner é ocultado.---
## 📦 Dependências
- [Bootstrap 5](https://getbootstrap.com/)
- [IMask.js](https://unpkg.com/imask)
- [BrasilAPI - CNPJ Endpoint](https://brasilapi.com.br/docs#tag/CNPJ)