צור מספרי CNPJ ברזילאיים תקפים ואמת מספרים קיימים עם הכלי הפשוט הזה שנועד למפתחים ובודקים העובדים עם מזהי עסקים ברזילאיים.
צור מספר CNPJ ברזילאי תקף למטרות בדיקה.
בדוק אם מספר CNPJ ברזילאי תקף.
ה- CNPJ (Cadastro Nacional da Pessoa Jurídica) הברזילאי הוא מספר זיהוי ייחודי המוקצה לעסקים ולישויות משפטיות בברזיל. כלי זה ליצירת ואימות CNPJ ברזילאי מספק דרך פשוטה ויעילה ליצירת מספרי CNPJ תקפים למטרות בדיקה ולאימות מספרי CNPJ קיימים בהתאם לאלגוריתם הרשמי הברזילאי. בין אם אתה מפתח הבודק יישומים המטפלים בנתוני עסקים ברזילאיים, איש QA יוצר מקרים לבדיקות, או כל אחד שעובד עם מידע על חברות ברזילאיות, כלי זה מפשט את התהליך של עבודה עם מספרי CNPJ.
בניגוד למספרי CNPJ אמיתיים המונפקים על ידי רשות המסים הברזילאית (Receita Federal), ה-CNPJs המיוצרים על ידי כלי זה תקפים מתמטית אך אינם רשומים לחברות אמיתיות. זה הופך אותם למושלמים לתרחישי בדיקה, נתוני דוגמה וסביבות פיתוח שבהן אתה זקוק למספרי CNPJ מעוצבים כראוי ותקפים מבלי להשתמש בזיהוי עסקי אמיתי.
CNPJ (Cadastro Nacional da Pessoa Jurídica) הוא מספר זיהוי בן 14 ספרות המוקצה לעסקים ולישויות משפטיות על ידי רשות המסים הברזילאית. הוא משמש כאקווולנט הברזילאי למספר רישום חברה או מספר זיהוי מס. כל עסק הפועל באופן חוקי בברזיל חייב להיות לו CNPJ, המשמש עבור:
ה-CNPJ הוא מזהה חיוני במערכת העסקית של ברזיל ומופיע במסמכים רשמיים, חוזים ורשומות פיננסיות.
CNPJ ברזילאי מורכב מ-14 ספרות, בדרך כלל מעוצב כך: XX.XXX.XXX/YYYY-ZZ
המבנה מתפרק כך:
לדוגמה, CNPJ מעוצב כראוי עשוי להיראות כך: 12.345.678/0001-95
ספרות הבדיקה (המספרים האחרונים) מחושבות באמצעות אלגוריתם מתמטי ספציפי המוודא שהמספרים שנוצרו באקראי אינם יכולים לעבור אימות מבלי לעקוב אחר שיטת החישוב הנכונה.
אלגוריתם האימות של CNPJ משתמש בחישוב משוקלל כדי לקבוע את ספרות הבדיקה. כך זה עובד:
כדי ש-CNPJ יהיה תקף, שתי ספרות הבדיקה חייבות להתאים לערכים המחושבים.
כלי זה ליצירת ואימות CNPJ ברזילאי מציע שתי פונקציות עיקריות: יצירת CNPJs תקפים ואימות מספרי CNPJ קיימים.
כדי ליצור CNPJ תקף למטרות בדיקה:
ה-CNPJ שנוצר יעמוד בכללי האימות המתמטיים של CNPJ אמיתי אך אינו רשום עם רשות המסים הברזילאית.
כדי לבדוק אם CNPJ הוא תקף מתמטית:
המאמת בודק אם ה-CNPJ עומד בפורמט הנכון ואם ספרות הבדיקה תואמות לערכים הצפויים בהתאם לאלגוריתם האימות.
כלי זה ליצירת ואימות CNPJ ברזילאי שימושי במיוחד בתרחישים הבאים:
בעוד שהכלי שלנו מספק פתרון פשוט, מבוסס דפדפן ליצירה ואימות CNPJs, ישנן מספר חלופות בהתאם לצרכים הספציפיים שלך:
עבור מפתחים המשלבים אימות CNPJ ישירות לתוך יישומים, ישנן מספר ספריות בשפות ספציפיות:
cpf_cnpj.js
, validator.js
python-cnpj
, validate-docbr
brazilianutils
, respect/validation
caelum-stella
, commons-validator
cpf_cnpj
, brazilian-rails
ספריות אלו מספקות לעיתים קרובות פונקציות נוספות כמו עיצוב, ניתוח ואימות של מסמכים ברזילאיים אחרים.
עבור יישומים הדורשים אימות מבלי ליישם את האלגוריתם:
למטרות חינוכיות או לאימות חד פעמי, ניתן ליישם את האלגוריתם ידנית:
עם זאת, חישוב ידני עלול להיות רגיש לטעויות ואינו יעיל לשימוש רגיל.
היוצר והמאמת CNPJ בכלי זה מיושמים באמצעות JavaScript, מה שהופך אותו למהיר ויכול לפעול לחלוטין בדפדפן שלך מבלי לשלוח את הנתונים שלך לשרת. כך פועלות הפונקציות המרכזיות:
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
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
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:
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
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 הוא מספר הרישום הלאומי עבור עסקים ויישויות משפטיות בברזיל. הוא משמש למטרות מס, רישום עסק, פתיחת חשבונות בנק, וזיהוי חברות בעסקאות רשמיות.
לא. ה-CNPJs שנוצרים על ידי כלי זה תקפים מתמטית בהתאם לאלגוריתם ספרת הבדיקה, אך הם אינם רשומים עם רשות המסים הברזילאית ואינם שייכים לחברות אמיתיות.
לא. כדי לקבל CNPJ לגיטימי עבור עסק, עליך להירשם עם רשות המסים הברזילאית (Receita Federal) בהתאם לתהליך הרשמי. CNPJs שנוצרו מיועדים רק למטרות בדיקה.
כדי לאמת אם CNPJ רשום לחברה אמיתית, עליך לפנות למסד הנתונים של רשות המסים הברזילאית. הכלי שלנו בודק רק אם CNPJ תקף מתמטית, לא אם הוא רשום באופן רשמי.
CNPJs עם כל הספרות זהות (כמו 11.111.111/1111-11) נחשבים אוטומטית לא תקפים, גם אם הם עולים בקנה אחד עם האלגוריתם של ספרת הבדיקה. זו כלל שהוקם על ידי רשות המסים הברזילאית.
לא. כל העיבוד מתרחש בדפדפן שלך, ואנחנו לא שומרים או מעבירים שום CNPJs שאתה מייצר או מאמת.
הגרסה הנוכחית של הכלי יוצרת CNPJ אחד בכל פעם. עבור יצירה המונית, ייתכן שתרצה לשקול להשתמש באחת מהספריות המוזכרות בסעיף החלופות.
זהו הפורמט הרשמי הנדרש על ידי הרשויות הברזילאיות. הקבוצות הספציפיות עוזרות לזהות רכיבים שונים של ה-CNPJ, כגון מספר הבסיס ומזהה הסניף.
אתה יכול לממש את אלגוריתם האימות בשפת התכנות המועדפת עליך באמצעות הקוד שהוצג בסעיף היישום הטכני, או להשתמש באחת מהספריות המוזכרות בסעיף החלופות.
כן. ליישויות ממשלתיות בברזיל יש דפוסי CNPJ ספציפיים. לדוגמה, ישויות ממשלתיות פדרליות לעיתים קרובות מתחילות עם ספרות ספציפיות. היוצר שלנו יוצר CNPJs אקראיים ואינו יוצר במיוחד CNPJs של ישויות ממשלתיות.
כלי זה ליצירת ואימות CNPJ ברזילאי הופך את העבודה עם מספרי הזיהוי הללו לפשוטה ויעילה. בין אם אתה בודק יישומים, מכין נתוני דוגמה, או מאמת CNPJs קיימים, כלי זה מספק פתרון פשוט ללא המורכבות של אינטגרציות API או קונפיגורציות מתקדמות.
צור את ה-CNPJ התקף הראשון שלך עכשיו או אמת אחד קיים באמצעות הממשק הפשוט שלנו!
גלה עוד כלים שעשויים להיות שימושיים עבור זרימת העבודה שלך