Generuj ważne numery CNPJ w Brazylii i waliduj istniejące za pomocą tego prostego narzędzia zaprojektowanego dla programistów i testerów pracujących z identyfikatorami firm w Brazylii.
Wygeneruj ważny numer CNPJ w Brazylii do celów testowych.
Sprawdź, czy numer CNPJ w Brazylii jest ważny.
CNPJ (Cadastro Nacional da Pessoa Jurídica) to unikalny numer identyfikacyjny przypisany do firm i podmiotów prawnych w Brazylii. Narzędzie do generowania i walidacji CNPJ w Brazylii oferuje prosty i efektywny sposób na generowanie ważnych numerów CNPJ do celów testowych oraz walidację istniejących numerów CNPJ zgodnie z oficjalnym algorytmem brazylijskim. Niezależnie od tego, czy jesteś programistą testującym aplikacje obsługujące dane biznesowe z Brazylii, profesjonalistą QA tworzącym przypadki testowe, czy kimkolwiek pracującym z informacjami o firmach brazylijskich, to narzędzie upraszcza proces pracy z numerami CNPJ.
W przeciwieństwie do rzeczywistych numerów CNPJ, które są oficjalnie wydawane przez brazylijską Służbę Skarbową (Receita Federal), numery CNPJ generowane przez to narzędzie są matematycznie ważne, ale nie zarejestrowane na rzeczywiste firmy. To czyni je idealnymi do scenariuszy testowych, danych przykładowych i środowisk deweloperskich, w których potrzebujesz poprawnie sformatowanych i ważnych numerów CNPJ bez używania prawdziwych identyfikatorów biznesowych.
CNPJ (Cadastro Nacional da Pessoa Jurídica) to 14-cyfrowy numer identyfikacyjny przypisany do firm i podmiotów prawnych przez brazylijską Służbę Skarbową. Służy jako brazylijski odpowiednik numeru rejestracyjnego firmy lub identyfikatora podatkowego. Każda firma działająca legalnie w Brazylii musi mieć CNPJ, który jest używany do:
CNPJ jest niezbędnym identyfikatorem w ekosystemie biznesowym Brazylii i pojawia się na oficjalnych dokumentach, umowach i zapisach finansowych.
Brazylijski CNPJ składa się z 14 cyfr, zazwyczaj sformatowanych jako: XX.XXX.XXX/YYYY-ZZ
Struktura dzieli się na następujące części:
Na przykład, poprawnie sformatowany CNPJ może wyglądać tak: 12.345.678/0001-95
Cyfry kontrolne (ostatnie dwie liczby) są obliczane za pomocą konkretnego algorytmu matematycznego, który waliduje autentyczność CNPJ. Ten algorytm zapewnia, że losowo generowane numery nie mogą przejść walidacji bez zastosowania odpowiedniej metody obliczeniowej.
Algorytm walidacji CNPJ wykorzystuje ważoną kalkulację do określenia cyfr kontrolnych. Oto jak to działa:
Aby CNPJ był ważny, obie cyfry kontrolne muszą odpowiadać obliczonym wartościom.
Nasze narzędzie do generowania i walidacji CNPJ w Brazylii oferuje dwie główne funkcje: generowanie ważnych CNPJ i walidację istniejących numerów CNPJ.
Aby wygenerować ważny CNPJ do celów testowych:
Wygenerowany CNPJ będzie przestrzegał wszystkich reguł matematycznej walidacji rzeczywistego CNPJ, ale nie będzie zarejestrowany w brazylijskiej Służbie Skarbowej.
Aby sprawdzić, czy CNPJ jest matematycznie ważny:
Walidator sprawdza, czy CNPJ przestrzega poprawnego formatu i czy cyfry kontrolne odpowiadają oczekiwanym wartościom zgodnie z algorytmem walidacji.
To narzędzie do generowania i walidacji CNPJ w Brazylii jest szczególnie przydatne w następujących scenariuszach:
Chociaż nasze narzędzie zapewnia prostą, opartą na przeglądarce rozwiązanie do generowania i walidacji CNPJ, istnieje kilka alternatyw w zależności od Twoich specyficznych potrzeb:
Dla programistów integrujących walidację CNPJ bezpośrednio w aplikacjach dostępnych jest kilka bibliotek specyficznych dla języków:
cpf_cnpj.js
, validator.js
python-cnpj
, validate-docbr
brazilianutils
, respect/validation
caelum-stella
, commons-validator
cpf_cnpj
, brazilian-rails
Te biblioteki często oferują dodatkową funkcjonalność, taką jak formatowanie, analizowanie i walidacja innych brazylijskich dokumentów.
Dla aplikacji wymagających walidacji bez wdrażania algorytmu:
Dla celów edukacyjnych lub jednorazowych walidacji można ręcznie zastosować algorytm:
Jednak ręczne obliczenia są podatne na błędy i nieefektywne w regularnym użyciu.
Generator i walidator CNPJ w tym narzędziu są zaimplementowane przy użyciu JavaScript, co czyni je szybkim i zdolnym do działania całkowicie w Twojej przeglądarce bez wysyłania danych na serwer. Oto jak działają podstawowe funkcje:
1function generateCNPJ() {
2 // Wygeneruj pierwsze 12 cyfr losowo
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // Oblicz pierwszą cyfrę kontrolną
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // Oblicz drugą cyfrę kontrolną
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // Sformatuj 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
1function validateCNPJ(cnpj) {
2 // Usuń znaki nienumeryczne
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Sprawdź, czy ma poprawną długość
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Sprawdź znane wzorce nieważne (wszystkie te same cyfry)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Przekształć na tablicę cyfr
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // Sprawdź pierwszą cyfrę kontrolną
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // Sprawdź drugą cyfrę kontrolną
19 const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20 if (digits[13] !== expectedSecondDigit) return false;
21
22 return true;
23}
24
1function formatCNPJ(cnpj) {
2 // Usuń znaki nienumeryczne
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Formatuj na podstawie długości
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
Te podstawowe funkcje można zaimplementować w innych językach programowania, stosując tę samą logikę. Oto przykłady w Pythonie i Javie:
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 # Wygeneruj pierwsze 12 cyfr losowo
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # Oblicz pierwszą cyfrę kontrolną
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # Oblicz drugą cyfrę kontrolną
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # Sformatuj 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 # Usuń znaki nienumeryczne
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Sprawdź długość
34 if len(cnpj) != 14:
35 return False
36
37 # Sprawdź, czy wszystkie cyfry są takie same
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Przekształć na listę cyfr
42 digits = [int(d) for d in cnpj]
43
44 # Waliduj pierwszą cyfrę kontrolną
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # Waliduj drugą cyfrę kontrolną
50 second_check = calculate_check_digit(digits[:13])
51 if digits[13] != second_check:
52 return False
53
54 return True
55
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 // Wygeneruj pierwsze 12 cyfr losowo
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // Oblicz pierwszą cyfrę kontrolną
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // Oblicz drugą cyfrę kontrolną
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // Sformatuj 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 // Usuń znaki nienumeryczne
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Sprawdź długość
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Sprawdź, czy wszystkie cyfry są takie same
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 // Przekształć na tablicę cyfr
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 // Waliduj pierwszą cyfrę kontrolną
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // Waliduj drugą cyfrę kontrolną
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
Podczas korzystania z tego narzędzia do generowania i walidacji CNPJ, pamiętaj o następujących uwagach:
CNPJ to krajowy numer rejestracyjny dla firm i podmiotów prawnych w Brazylii. Jest używany do celów podatkowych, rejestracji firm, otwierania kont bankowych i identyfikowania firm w oficjalnych transakcjach.
Nie. CNPJ generowane przez to narzędzie są matematycznie ważne zgodnie z algorytmem cyfr kontrolnych, ale nie są zarejestrowane w brazylijskiej Służbie Skarbowej i nie należą do rzeczywistych firm.
Nie. Aby uzyskać legalny CNPJ dla firmy, musisz zarejestrować się w brazylijskiej Służbie Skarbowej (Receita Federal) zgodnie z oficjalnym procesem. Wygenerowane CNPJ są przeznaczone tylko do celów testowych.
Aby zweryfikować, czy CNPJ jest zarejestrowany na rzeczywistą firmę, musisz skonsultować się z bazą danych brazylijskiej Służby Skarbowej. Nasze narzędzie sprawdza tylko, czy CNPJ jest matematycznie ważne, a nie czy jest oficjalnie zarejestrowane.
CNPJ z wszystkimi tymi samymi cyframi (jak 11.111.111/1111-11) są automatycznie uznawane za nieważne, nawet jeśli matematycznie przechodzą algorytm cyfr kontrolnych. To zasada ustalona przez brazylijską Służbę Skarbową.
Nie. Całe przetwarzanie odbywa się w Twojej przeglądarce, a my nie przechowujemy ani nie przesyłamy żadnych CNPJ, które generujesz lub walidujesz.
Obecna wersja narzędzia generuje jeden CNPJ na raz. Dla masowej generacji możesz rozważyć użycie jednej z bibliotek programistycznych wymienionych w sekcji Alternatywy.
To oficjalny format wymagany przez brazylijskie władze. Konkretne grupowanie pomaga zidentyfikować różne komponenty CNPJ, takie jak numer podstawowy i identyfikator oddziału.
Możesz zaimplementować algorytm walidacji w swoim preferowanym języku programowania, korzystając z przykładów kodu podanych w sekcji Implementacja techniczna, lub użyć jednej z bibliotek wymienionych w sekcji Alternatywy.
Tak. Podmioty rządowe w Brazylii mają specyficzne wzorce CNPJ. Na przykład, federalne podmioty rządowe często zaczynają się od konkretnych cyfr. Nasz generator tworzy losowe CNPJ i nie generuje specyficznych CNPJ dla podmiotów rządowych.
Nasze narzędzie do generowania i walidacji CNPJ w Brazylii sprawia, że praca z tymi numerami identyfikacyjnymi jest prosta i efektywna. Niezależnie od tego, czy testujesz aplikacje, przygotowujesz dane przykładowe, czy walidujesz istniejące CNPJ, to narzędzie zapewnia proste rozwiązanie bez złożoności integracji API lub zaawansowanych konfiguracji.
Wygeneruj swój pierwszy ważny CNPJ teraz lub zwaliduj istniejący, korzystając z naszego prostego interfejsu!
Odkryj więcej narzędzi, które mogą być przydatne dla Twojego przepływu pracy