قم بتوليد أرقام CNPJ البرازيلية الصالحة والتحقق من الأرقام الموجودة باستخدام هذه الأداة البسيطة المصممة للمطورين والمختبرين الذين يعملون مع معرفات الأعمال البرازيلية.
قم بإنشاء رقم CNPJ برازيلي صالح لأغراض الاختبار.
تحقق مما إذا كان رقم CNPJ البرازيلي صالحًا.
رقم CNPJ البرازيلي (Cadastro Nacional da Pessoa Jurídica) هو رقم تعريف فريد يُعطى للأعمال والكيانات القانونية في البرازيل. توفر أداة توليد والتحقق من CNPJ البرازيلية هذه وسيلة بسيطة وفعالة لتوليد أرقام CNPJ صالحة لأغراض الاختبار والتحقق من أرقام CNPJ الحالية وفقًا للخوارزمية الرسمية البرازيلية. سواء كنت مطورًا تختبر تطبيقات تتعامل مع بيانات الأعمال البرازيلية، أو محترف ضمان الجودة ينشئ حالات اختبار، أو أي شخص يعمل مع معلومات الشركات البرازيلية، فإن هذه الأداة تسهل عملية التعامل مع أرقام CNPJ.
على عكس أرقام CNPJ الحقيقية التي تصدر رسميًا من قبل وزارة المالية البرازيلية (Receita Federal)، فإن أرقام CNPJ التي يتم توليدها بواسطة هذه الأداة صالحة رياضيًا ولكنها غير مسجلة لدى شركات حقيقية. وهذا يجعلها مثالية لسيناريوهات الاختبار، وبيانات العينة، وبيئات التطوير حيث تحتاج إلى أرقام 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 صالحًا، يجب أن تتطابق كلا رقمي التحقق مع القيم المحسوبة.
تقدم أداة توليد والتحقق من 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 الحالية، توفر هذه الأداة حلاً مباشرًا دون تعقيد تكامل واجهات برمجة التطبيقات أو التكوينات المتقدمة.
قم بتوليد أول CNPJ صالح لك الآن أو تحقق من CNPJ موجود باستخدام واجهتنا البسيطة!
اكتشف المزيد من الأدوات التي قد تكون مفيدة لسير عملك