🛠️

Whiz Tools

Build • Create • Innovate

Инструмент за генериране и валидиране на бразилски CNPJ за тестване

Генерирайте валидни бразилски CNPJ номера и валидирайте съществуващи с този прост инструмент, проектиран за разработчици и тестери, работещи с бразилски бизнес идентификатори.

Генератор и валидатор на бразилски CNPJ

Генератор на CNPJ

Генерирайте валиден бразилски CNPJ номер за тестови цели.

Валидатор на CNPJ

Проверете дали бразилският CNPJ номер е валиден.

📚

Документация

Генератор и валидатор на бразилски CNPJ

Въведение

Бразилският CNPJ (Cadastro Nacional da Pessoa Jurídica) е уникален идентификационен номер, присвоен на бизнеси и юридически лица в Бразилия. Този инструмент за генериране и валидиране на бразилски CNPJ предоставя прост и ефективен начин за генериране на валидни CNPJ номера за тестови цели и валидиране на съществуващи CNPJ номера съгласно официалния бразилски алгоритъм. Независимо дали сте разработчик, който тества приложения, обработващи бразилски бизнес данни, QA професионалист, създаващ тестови случаи, или всеки, който работи с информация за бразилски компании, този инструмент опростява процеса на работа с CNPJ номера.

За разлика от реалните CNPJ номера, които са официално издадени от Бразилската федерална данъчна служба (Receita Federal), CNPJ-ите, генерирани от този инструмент, са математически валидни, но не са регистрирани на реални компании. Това ги прави идеални за тестови сценарии, примерни данни и разработващи среди, където ви трябват правилно форматирани и валидни CNPJ номера без използване на реални бизнес идентификатори.

Какво е CNPJ?

CNPJ (Cadastro Nacional da Pessoa Jurídica) е 14-цифрен идентификационен номер, присвоен на бизнеси и юридически лица от Бразилската федерална данъчна служба. Той служи като бразилски еквивалент на номер за регистрация на компания или данъчен идентификатор. Всеки бизнес, който оперира законно в Бразилия, трябва да има CNPJ, който се използва за:

  • Данъчно отчитане и съответствие
  • Регистрация на бизнеса в правителствени агенции
  • Отваряне на банкови сметки
  • Издаване на фактури и разписки
  • Участие в правителствени търгове
  • Внос и износ на стоки

CNPJ е основен идентификатор в бизнес екосистемата на Бразилия и се появява в официални документи, договори и финансови записи.

Структура и формат на CNPJ

Бразилският CNPJ се състои от 14 цифри, обикновено форматирани като: XX.XXX.XXX/YYYY-ZZ

Структурата се разпада, както следва:

  1. Първите 8 цифри (XX.XXX.XXX): Основен номер, присвоен на компанията
  2. 4 цифри след наклонената черта (YYYY): Идентификатор на клон (0001 за централния офис, други номера за клонове)
  3. Последните 2 цифри (ZZ): Проверяващи цифри за валидиране

Например, правилно форматираният CNPJ може да изглежда така: 12.345.678/0001-95

Проверяващите цифри (последните две числа) се изчисляват с помощта на специфичен математически алгоритъм, който валидира автентичността на CNPJ. Този алгоритъм гарантира, че случайно генерираните номера не могат да преминат валидиране, без да следват правилния метод на изчисление.

Как работи валидирането на CNPJ

Алгоритъмът за валидиране на CNPJ използва претеглени изчисления, за да определи проверяващите цифри. Ето как работи:

Изчисление на първата проверяваща цифра

  1. Умножете всяка от първите 12 цифри по последователност от тегла: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. Сумирайте резултатите от тези умножения
  3. Изчислете остатъка от тази сума, разделена на 11
  4. Ако остатъкът е по-малък от 2, първата проверяваща цифра е 0; в противен случай е 11 минус остатъка

Изчисление на втората проверяваща цифра

  1. Умножете всяка от първите 13 цифри (включително първата проверяваща цифра) по последователност от тегла: 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. Сумирайте резултатите от тези умножения
  3. Изчислете остатъка от тази сума, разделена на 11
  4. Ако остатъкът е по-малък от 2, втората проверяваща цифра е 0; в противен случай е 11 минус остатъка

За да бъде валиден един CNPJ, и двете проверяващи цифри трябва да съвпадат с изчислените стойности.

Как да използвате този инструмент

Нашият инструмент за генериране и валидиране на бразилски CNPJ предлага две основни функции: генериране на валидни CNPJ и валидиране на съществуващи CNPJ номера.

Генериране на CNPJ

За да генерирате валиден CNPJ за тестови цели:

  1. Навигирайте до секцията "Генератор на CNPJ" на инструмента
  2. Кликнете върху бутона "Генерирай CNPJ"
  3. Във форматирания дисплей ще се появи математически валиден CNPJ
  4. Използвайте бутона "Копирай", за да копирате генерирания CNPJ в клипборда си

Генерираният CNPJ ще следва всички математически правила за валидиране на реален CNPJ, но не е регистриран в Бразилската федерална данъчна служба.

Валидиране на CNPJ

За да проверите дали един CNPJ е математически валиден:

  1. Навигирайте до секцията "Валидатор на CNPJ" на инструмента
  2. Въведете CNPJ, който искате да валидирате, в полето за въвеждане
    • Инструментът приема CNPJ с или без форматиране (точки, наклонени черти и тирета)
  3. Кликнете върху бутона "Валидирай"
  4. Инструментът ще покаже дали CNPJ е валиден или невалиден на базата на алгоритъма за проверяващи цифри

Валидаторът проверява дали CNPJ следва правилния формат и дали проверяващите цифри съвпадат с очакваните стойности съгласно алгоритъма за валидиране.

Сценарии на употреба

Този инструмент за генериране и валидиране на бразилски CNPJ е особено полезен в следните сценарии:

Софтуерна разработка и тестване

  • Създаване на тестови данни: Генерирайте валидни CNPJ за попълване на тестови бази данни без използване на реални идентификатори на компании
  • Юнит тестване: Валидирайте функции за обработка на CNPJ във вашия код с известни валидни и невалидни примери
  • QA тестване: Създайте тестови случаи за формуляри и интерфейси, които изискват вход на CNPJ
  • Интеграционно тестване: Тествайте системи, които обменят данни с бразилски правителствени услуги или финансови институции

Образование и обучение

  • Учебен формат на CNPJ: Разберете как са структурирани бразилските бизнес идентификатори
  • Изучаване на алгоритми: Проучете как работи валидирането на проверяващи цифри на практика
  • Техники за валидиране на данни: Изучавайте примери от реалния свят за изисквания за валидиране на данни

Обработка на данни

  • Почистване на данни: Валидирайте CNPJ в съществуващи набори от данни, за да идентифицирате потенциални грешки
  • Валидиране на формуляри: Имплементирайте клиентска или сървърна валидиране за входове на CNPJ
  • Анонимизиране на данни: Заменете реални CNPJ с валидно генерирани, когато подготвяте набори от данни за анализ

Международен бизнес

  • Подготовка за навлизане на пазара: Разберете изискванията за идентификация на бизнес в Бразилия
  • Подготовка на документи: Осигурете правилно форматиране при подготовката на бизнес документи за Бразилия
  • Проверка на съответствие: Уверете се, че събраните CNPJ номера поне математически са валидни

Алтернативи

Докато нашият инструмент предоставя просто, базирано на браузър решение за генериране и валидиране на CNPJ, има няколко алтернативи в зависимост от вашите специфични нужди:

Програмни библиотеки

За разработчици, интегриращи валидиране на CNPJ директно в приложения, са налични няколко библиотеки, специфични за езиците:

  • JavaScript: cpf_cnpj.js, validator.js
  • Python: python-cnpj, validate-docbr
  • PHP: brazilianutils, respect/validation
  • Java: caelum-stella, commons-validator
  • Ruby: cpf_cnpj, brazilian-rails

Тези библиотеки често предоставят допълнителна функционалност, като форматиране, парсинг и валидиране на други бразилски документи.

API услуги

За приложения, изискващи валидиране без имплементиране на алгоритъма:

  • Бразилски правителствени API (изисква регистрация)
  • Търговски валидиращи API, които включват проверка на CNPJ
  • Услуги за бизнес информация, които валидират срещу официалната база данни

Ръчно изчисление

За образователни цели или единични валидирания можете ръчно да приложите алгоритъма:

  1. Извлечете първите 12 цифри на CNPJ
  2. Извършете претеглените изчисления, както е описано по-горе
  3. Сравнете изчислените проверяващи цифри с действителните проверяващи цифри

Въпреки това, ръчното изчисление е податливо на грешки и неефективно за редовна употреба.

Техническа имплементация

Генераторът и валидаторът на CNPJ в този инструмент са имплементирани с помощта на JavaScript, което го прави бърз и способен да работи изцяло във вашия браузър, без да изпраща данните ви на сървър. Ето как работят основните функции:

Алгоритъм за генериране на CNPJ

1function generateCNPJ() {
2  // Генерирайте първите 12 цифри случайно
3  const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4  
5  // Изчислете първата проверяваща цифра
6  const firstCheckDigit = calculateCheckDigit(digits);
7  digits.push(firstCheckDigit);
8  
9  // Изчислете втората проверяваща цифра
10  const secondCheckDigit = calculateCheckDigit(digits);
11  digits.push(secondCheckDigit);
12  
13  // Форматирайте CNPJ
14  return formatCNPJ(digits.join(''));
15}
16
17function calculateCheckDigit(digits) {
18  const weights = digits.length < 13 
19    ? [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] 
20    : [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
21  
22  const sum = digits.reduce((acc, digit, index) => {
23    return acc + digit * weights[index];
24  }, 0);
25  
26  const remainder = sum % 11;
27  return remainder < 2 ? 0 : 11 - remainder;
28}
29

Алгоритъм за валидиране на CNPJ

1function validateCNPJ(cnpj) {
2  // Премахнете нечисловите символи
3  const cleanCNPJ = cnpj.replace(/\D/g, '');
4  
5  // Проверете дали има правилна дължина
6  if (cleanCNPJ.length !== 14) return false;
7  
8  // Проверете за известни невалидни модели (всички еднакви цифри)
9  if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10  
11  // Преобразувайте в масив от цифри
12  const digits = cleanCNPJ.split('').map(Number);
13  
14  // Проверете първата проверяваща цифра
15  const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16  if (digits[12] !== expectedFirstDigit) return false;
17  
18  // Проверете втората проверяваща цифра
19  const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20  if (digits[13] !== expectedSecondDigit) return false;
21  
22  return true;
23}
24

Функция за форматиране на CNPJ

1function formatCNPJ(cnpj) {
2  // Премахнете нечисловите символи
3  const cleanCNPJ = cnpj.replace(/\D/g, '');
4  
5  // Форматирайте в зависимост от дължината
6  if (cleanCNPJ.length <= 2) {
7    return cleanCNPJ;
8  } else if (cleanCNPJ.length <= 5) {
9    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2)}`;
10  } else if (cleanCNPJ.length <= 8) {
11    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5)}`;
12  } else if (cleanCNPJ.length <= 12) {
13    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8)}`;
14  } else {
15    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8, 12)}-${cleanCNPJ.slice(12, 14)}`;
16  }
17}
18

Тези основни функции могат да бъдат имплементирани и в други програмни езици, следвайки същата логика. Ето примери на Python и Java:

Имплементация на Python

1import random
2
3def calculate_check_digit(digits):
4    weights = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] if len(digits) < 13 else [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
5    
6    total = 0
7    for i in range(len(digits)):
8        total += digits[i] * weights[i]
9    
10    remainder = total % 11
11    return 0 if remainder < 2 else 11 - remainder
12
13def generate_cnpj():
14    # Генерирайте първите 12 цифри случайно
15    digits = [random.randint(0, 9) for _ in range(12)]
16    
17    # Изчислете първата проверяваща цифра
18    first_check = calculate_check_digit(digits)
19    digits.append(first_check)
20    
21    # Изчислете втората проверяваща цифра
22    second_check = calculate_check_digit(digits)
23    digits.append(second_check)
24    
25    # Форматирайте CNPJ
26    cnpj = ''.join(map(str, digits))
27    return f"{cnpj[:2]}.{cnpj[2:5]}.{cnpj[5:8]}/{cnpj[8:12]}-{cnpj[12:]}"
28
29def validate_cnpj(cnpj):
30    # Премахнете нечисловите символи
31    cnpj = ''.join(filter(str.isdigit, cnpj))
32    
33    # Проверете дължината
34    if len(cnpj) != 14:
35        return False
36    
37    # Проверете дали всички цифри са еднакви
38    if len(set(cnpj)) == 1:
39        return False
40    
41    # Преобразувайте в масив от цели числа
42    digits = [int(d) for d in cnpj]
43    
44    # Валидирайте първата проверяваща цифра
45    first_check = calculate_check_digit(digits[:12])
46    if digits[12] != first_check:
47        return False
48    
49    # Валидирайте втората проверяваща цифра
50    second_check = calculate_check_digit(digits[:13])
51    if digits[13] != second_check:
52        return False
53    
54    return True
55

Имплементация на Java

1import java.util.Random;
2
3public class CNPJUtils {
4    
5    public static String generateCNPJ() {
6        Random random = new Random();
7        int[] digits = new int[14];
8        
9        // Генерирайте първите 12 цифри случайно
10        for (int i = 0; i < 12; i++) {
11            digits[i] = random.nextInt(10);
12        }
13        
14        // Изчислете първата проверяваща цифра
15        digits[12] = calculateCheckDigit(digits, 12);
16        
17        // Изчислете втората проверяваща цифра
18        digits[13] = calculateCheckDigit(digits, 13);
19        
20        // Форматирайте CNPJ
21        return String.format("%02d.%03d.%03d/%04d-%02d",
22                digits[0] * 10 + digits[1],
23                digits[2] * 100 + digits[3] * 10 + digits[4],
24                digits[5] * 100 + digits[6] * 10 + digits[7],
25                digits[8] * 1000 + digits[9] * 100 + digits[10] * 10 + digits[11],
26                digits[12] * 10 + digits[13]);
27    }
28    
29    private static int calculateCheckDigit(int[] digits, int length) {
30        int[] weights = length < 13 
31            ? new int[]{5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2}
32            : new int[]{6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
33        
34        int sum = 0;
35        for (int i = 0; i < length; i++) {
36            sum += digits[i] * weights[i];
37        }
38        
39        int remainder = sum % 11;
40        return remainder < 2 ? 0 : 11 - remainder;
41    }
42    
43    public static boolean validateCNPJ(String cnpj) {
44        // Премахнете нечисловите символи
45        cnpj = cnpj.replaceAll("\\D", "");
46        
47        // Проверете дължина
48        if (cnpj.length() != 14) {
49            return false;
50        }
51        
52        // Проверете дали всички цифри са еднакви
53        boolean allDigitsSame = true;
54        for (int i = 1; i < cnpj.length(); i++) {
55            if (cnpj.charAt(i) != cnpj.charAt(0)) {
56                allDigitsSame = false;
57                break;
58            }
59        }
60        if (allDigitsSame) {
61            return false;
62        }
63        
64        // Преобразувайте в масив от цели числа
65        int[] digits = new int[14];
66        for (int i = 0; i < 14; i++) {
67            digits[i] = Character.getNumericValue(cnpj.charAt(i));
68        }
69        
70        // Валидирайте първата проверяваща цифра
71        int firstCheck = calculateCheckDigit(digits, 12);
72        if (digits[12] != firstCheck) {
73            return false;
74        }
75        
76        // Валидирайте втората проверяваща цифра
77        int secondCheck = calculateCheckDigit(digits, 13);
78        if (digits[13] != secondCheck) {
79            return false;
80        }
81        
82        return true;
83    }
84}
85

Важни съображения

Когато използвате този инструмент за генериране и валидиране на CNPJ, имайте предвид следните съображения:

Правни и етични съображения

  • Не за измама: Генерираните CNPJ не трябва да се използват за измамни цели или подвеждане
  • Само за тестване: Тези CNPJ са само за тестови и развойни цели
  • Не са регистрирани: Генерираните CNPJ не са регистрирани в бразилските власти
  • Без реална валидност: Те не могат да се използват за реална регистрация на бизнес или данъчни цели

Технически ограничения

  • Без информация за бизнес: Генерираните CNPJ не съдържат реални кодове на бизнес сектор или информация за местоположение
  • Без проверка на база данни: Валидаторът проверява само математическата валидност, а не статус на регистрация
  • Вариации на формата: Докато инструментът обработва обичайните вариации на форматирането, някои системи може да изискват специфични формати

Съображения за сигурност

  • Обработка на клиентска страна: Всички обработки се извършват в браузъра ви; данните не се изпращат на сървъри
  • Без съхранение на данни: Генерираните CNPJ не се съхраняват или записват
  • Без лични данни: Инструментът не обработва или управлява никаква лична информация

Често задавани въпроси

Какво се използва CNPJ в Бразилия?

CNPJ е националният регистрационен номер за бизнеси и юридически лица в Бразилия. Използва се за данъчни цели, регистрация на бизнес, отваряне на банкови сметки и идентифициране на компании в официални транзакции.

Реални ли са CNPJ-ите, генерирани от този инструмент?

Не. CNPJ-ите, генерирани от този инструмент, са математически валидни съгласно алгоритъма за проверяващи цифри, но не са регистрирани в Бразилската федерална данъчна служба и не принадлежат на реални компании.

Мога ли да използвам генерираните CNPJ за бизнеса си?

Не. За да получите легитимен CNPJ за бизнес, трябва да се регистрирате в Бразилската федерална данъчна служба (Receita Federal), следвайки официалния процес. Генерираните CNPJ са само за тестови цели.

Как мога да разбера дали CNPJ принадлежи на реална компания?

За да проверите дали CNPJ е регистриран на действителна компания, трябва да се консултирате с базата данни на Бразилската федерална данъчна служба. Нашият инструмент проверява само дали CNPJ е математически валиден, а не дали е официално регистриран.

Защо валидаторът отхвърля CNPJ с всички еднакви цифри?

CNPJ с всички еднакви цифри (като 11.111.111/1111-11) автоматично се счита за невалиден, дори и да премине математическото валидиране на алгоритъма за проверяващи цифри. Това е правило, установено от Бразилската федерална данъчна служба.

Съхранява ли инструментът CNPJ-ите, които генерирам или валидирам?

Не. Всички обработки се извършват в браузъра ви, и ние не съхраняваме или предаваме нито един от CNPJ-ите, които генерирате или валидирате.

Мога ли да генерирам множество CNPJ наведнъж?

Настоящата версия на инструмента генерира един CNPJ наведнъж. За масово генериране може да искате да обмислите използването на една от програмните библиотеки, споменати в секцията Алтернативи.

Защо форматът XX.XXX.XXX/XXXX-XX е важен?

Това е официалният формат, изискван от бразилските власти. Специфичната групировка помага да се идентифицират различни компоненти на CNPJ, като основния номер и идентификатора на клона.

Как да валидирам CNPJ програмно?

Можете да имплементирате алгоритъма за валидиране на предпочитания от вас програмен език, използвайки кодовите примери, предоставени в секцията Техническа имплементация, или да използвате една от библиотеките, споменати в секцията Алтернативи.

Има ли специални CNPJ за правителствени организации?

Да. Правителствените организации в Бразилия имат специфични модели на CNPJ. Например, федералните правителствени организации често започват с определени цифри. Нашият генератор създава случайни CNPJ и не генерира специфични CNPJ за правителствени организации.

Източници

  1. Бразилска федерална данъчна служба (Receita Federal do Brasil) - Официален сайт
  2. "CNPJ - Cadastro Nacional da Pessoa Jurídica" - Уикипедия
  3. Бразилски граждански кодекс (Закон № 10.406/2002) - Правна рамка за бизнес организации в Бразилия
  4. Нормативна инструкция за регистрация на бизнес в Бразилия (IN RFB № 1863/2018) - Регулации относно регистрацията на CNPJ

Опитайте сега

Нашият инструмент за генериране и валидиране на бразилски CNPJ прави работата с тези идентификационни номера проста и ефективна. Независимо дали тествате приложения, подготвяте примерни данни или валидирате съществуващи CNPJ, този инструмент предоставя директно решение без сложността на интеграции на API или напреднали конфигурации.

Генерирайте първия си валиден CNPJ сега или валидирайте съществуващ такъв, използвайки нашия прост интерфейс!

🔗

Свързани инструменти

Открийте още инструменти, които могат да бъдат полезни за вашия работен процес