مولد ومتحقق CNPJ - أداة معرف الأعمال البرازيلي
توليد أرقام CNPJ صالحة للاختبار أو التحقق من معرفات الأعمال البرازيلية على الفور. أداة مجانية مع التحقق من الرقم التحقق للمطورين الذين يعملون مع سجل الشركات الوطني.
مولد ومتحقق من CNPJ البرازيلي
مولد CNPJ
توليد رقم CNPJ برازيلي صالح لأغراض الاختبار.
متحقق من CNPJ
التحقق مما إذا كان رقم CNPJ البرازيلي صالحًا.
التوثيق
فهم أرقام CNPJ البرازيلية
CNPJ (Cadastro Nacional da Pessoa Jurídica) هو النسخة البرازيلية من معرف الضرائب الشركات - وهو رقم مكون من 14 رقمًا يحدد كل كيان تجاري قانوني في البلاد. إذا كنت تبني برنامجًا يتعامل مع بيانات الأعمال البرازيلية، فستواجه بسرعة هذه الأرقام في نماذج التسجيل والفواتير وتكاملات واجهة برمجة التطبيقات.
إليك ما يجعل هذه الأداة عملية: فهي تولد CNPJs صالحة رياضيًا للاختبار دون استخدام معرفات الشركات الحقيقية. عندما تقوم بإعداد قاعدة بيانات اختبار تحتوي على 1,000 سجل أو تصحح روتين التحقق في الساعة 2 صباحًا، ستحتاج إلى CNPJs تجتاز الفحوصات الخوارزمية ولكنها لن تتطابق بشكل عرضي مع الشركات الفعلية. هذا بالضبط ما يتم إنشاؤه هنا.
الأرقام المنشأة هنا تتبع خوارزمية التحقق الرسمية لـ Receita Federal (الخدمة الضريبية الفيدرالية البرازيلية). لديها أرقام تحقق صحيحة وتنسيق مناسب - فهي مجرد أرقام غير مسجلة في قاعدة بيانات الحكومة. فكر فيها كبيانات اختبار صحيحة بنحويًا لن تسبب مشاكل في بيئة التطوير الخاصة بك.
ما هو CNPJ ولماذا يهم
يعمل CNPJ كمعرف للشركات في البرازيل - مشابه للـ EIN في الولايات المتحدة أو رقم تسجيل الشركة في المملكة المتحدة. يجب على كل كيان تجاري يعمل بشكل قانوني في البرازيل أن يكون لديه واحد، يصدره الريسيتا فيديرال (خدمة الإيرادات الفيدرالية).
ستواجه CNPJs عند:
- معالجة المدفوعات: تتطلب بوابات الدفع البرازيلية التحقق من CNPJ لحسابات التجار
- الامتثال الضريبي: يجب أن تتضمن كل فاتورة صادرة في البرازيل CNPJ صالحًا
- تسجيل الأعمال: تستخدم الوكالات الحكومية CNPJs لتتبع الكيانات القانونية عبر الأنظمة
- العمليات المصرفية: فتح حسابات شركات أو معالجة التحويلات الدولية
- الاستيراد/التصدير: تتطلب مستندات الجمارك التحقق من CNPJ
- العقود الحكومية: تتحقق أنظمة المناقصات العامة من CNPJs قبل قبول العطاءات
من خلال خبرتي في العمل مع منصات التجارة الإلكترونية البرازيلية، فإن نقطة التكامل الأكثر شيوعًا هي تدفق الدفع حيث يدخل المستخدمون CNPJ للمشتريات التجارية. يجب أن يلتقط منطق التحقق الخاص بك أخطاء التنسيق قبل معالج الدفع - وإلا ستشاهد معاملات فاشلة كان من الممكن منعها.
هيكل وتنسيق CNPJ
يتكون CNPJ من 14 رقمًا منسقًا كالتالي: XX.XXX.XXX/YYYY-ZZ
تفصيل الهيكل:
- أول 8 أرقام (XX.XXX.XXX): رقم التسجيل الأساسي الفريد المخصص للشركة
- الـ 4 أرقام التالية (/YYYY): معرف الفرع أو المؤسسة—
/0001يشير إلى المقر الرئيسي، بينما/0002،/0003يمثلان مواقع الفروع - آخر رقمين (-ZZ): أرقام التحقق المحسوبة من خلال خوارزمية موزونة
مثال: 12.345.678/0001-95
ما يثير الاهتمام حول معرف الفرع: عندما تفتح شركة مواقع متعددة، يحصل كل موقع على نفس الـ 8 أرقام الأولى ولكن برقم فرع مختلف. لذا إذا كانت سلسلة تجزئة تمتلك 50 متجرًا، فستكون لديها أرقام CNPJ تنتهي بـ /0001 حتى /0050، مع مشاركة نفس الرقم الأساسي. هذا يجعل من السهل التعرف على أن أرقام CNPJ المتعددة تنتمي إلى نفس المنظمة الأم.
أرقام التحقق ليست عشوائية—بل يتم حسابها باستخدام خوارزمية المودولوس-11 مع تسلسلات أوزان محددة. هذا الاختيار التصميمي، الشائع في الوثائق الإدارية البرازيلية، يجعل من الصعب رياضيًا تزوير أرقام صالحة أو إنشاء أرقام صالحة عن طريق الخطأ.
كيف يعمل التحقق من CNPJ بالفعل
يستخدم خوارزمية التحقق حساب المعامل بنظام القسمة-11 المرجح. إليك المنطق وراء ذلك:
حساب الرقم التحققي الأول
- خذ أول 12 رقم واضرب كل رقم بالأوزان التالية:
5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 - اجمع كل المنتجات
- اقسم المجموع على 11 واحصل على المتبقي
- إذا كان المتبقي < 2، يكون الرقم التحققي 0؛ وإلا يكون
11 - المتبقي
حساب الرقم التحققي الثاني
- خذ أول 13 رقم (بما في ذلك الرقم التحققي الأول) واضرب بالأوزان:
6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 - اجمع كل المنتجات
- اقسم على 11 واحصل على المتبقي
- إذا كان المتبقي < 2، يكون الرقم التحققي 0؛ وإلا يكون
11 - المتبقي
لماذا ينجح هذا النهج: يخلق نظام الضرب المرجح علاقة فريدة بين جميع 12 رقمًا أساسيًا والأرقام التحققية الناتجة. يؤدي تغيير رقم واحد فقط في الرقم الأساسي إلى إنتاج أرقام تحققية مختلفة، مما يكشف عن أخطاء النسخ الشائعة مثل تبديل رقمين (كتابة 12.345 بدلاً من 12.354).
ملاحظة عملية: يتم اعتبار CNPJs التي تحتوي على أرقام متطابقة (مثل 11.111.111/1111-11) غير صالحة تلقائيًا، حتى لو اجتازت التحقق الرياضي. تستبعد Receita Federal هذه الأنماط صراحةً لمنع الحالات التافهة.
كيفية استخدام مولد ومتحقق CNPJ
توليد CNPJs للاختبار
تحتاج إلى CNPJ صالح لقاعدة بيانات الاختبار الخاصة بك؟ إليك كيفية ذلك:
- انقر على "توليد CNPJ"
- يقوم الأداة بإنشاء رقم رياضيًا صالحًا على الفور
- انقر على "نسخ" للحصول عليه في الحافظة
- الصق في نماذج الاختبار الخاصة بك، أو بذور قاعدة البيانات، أو اختبارات الوحدة
كل CNPJ تم توليده يمر بجميع عمليات التحقق الخوارزمية ولكنه غير مسجل في Receita Federal. هذا يعني أنه يمكنك استخدامها بحرية في التطوير دون القلق من استخدام معرف شركة حقيقية عن طريق الخطأ.
التحقق من أرقام CNPJ
هل لديك CNPJ تحتاج إلى التحقق منه؟ يتعامل المتحقق معه:
- الصق أو اكتب CNPJ في حقل الإدخال
- لا تقلق بشأن التنسيق - يعمل مع
12345678000195أو12.345.678/0001-95 - انقر على "التحقق"
- احصل على تغذية راجعة فورية حول صحة أرقام التحقق
ما يتحقق منه المتحقق: الطول الصحيح (14 رقمًا)، وحسابات رقم التحقق الصحيحة، واستبعاد الأنماط غير الصالحة مثل الأرقام المتطابقة. ما لا يتحقق منه: ما إذا كان CNPJ مسجلاً في قاعدة بيانات الحكومة - وهذا يتطلب الاستعلام مباشرة من Receita Federal.
الاستخدامات العملية لمولد ومتحقق CNPJ
تطوير البرمجيات والاختبار
بذر قاعدة البيانات: عند إعداد بيئة مرحلية مع بيانات اختبار واقعية، تحتاج إلى عشرات أو مئات من CNPJs الصالحة. إنشاء هذه البيانات يدويًا مرهق، واستخدام معرفات الشركات الحقيقية يثير مخاوف الخصوصية. يحل CNPJ المولد كلا المشكلتين.
اختبار الحالات الحدية: يجب على دالة التحقق الخاصة بك رفض 00.000.000/0000-00 وقبول 11.222.333/0001-81. يتيح لك المولد إنشاء حالات اختبار صالحة وغير صالحة عمدًا للتحقق من معالجة المنطق الخاص بك للظروف الحدية بشكل صحيح.
اختبار التراجع للجودة: عند اختبار نماذج التسجيل أو تدفقات الدفع بين الشركات، تحتاج فرق ضمان الجودة إلى بيانات اختبار جديدة لكل تشغيل. مشكلة شائعة رأيتها: تتلوث بيئات الاختبار بنفس 5-6 CNPJs المستخدمة بشكل متكرر، مما يخفي الأخطاء التي تظهر فقط مع أنماط الأرقام المحددة.
اختبار تكامل واجهة برمجة التطبيقات: إذا كنت تقوم بالتكامل مع معالجي المدفوعات البرازيليين مثل PagSeguro أو Mercado Pago، فإن بيئاتهم التجريبية غالبًا ما تتطلب تنسيق CNPJ صالح. يجب أن تكون الرياضيات صحيحة حتى عند عدم الوصول إلى قواعد البيانات الإنتاجية.
معالجة وتحقق البيانات
تنظيف البيانات المستوردة: لقد استلمت ملف CSV يحتوي على 10,000 سجل شركة برازيلية. قبل المعالجة، تحتاج إلى تحديد CNPJs التالفة. تمرير هذه البيانات عبر المتحقق يميز الإدخالات بها أخطاء مطبعية أو اختصار أو أرقام تحقق غير صحيحة - مما يوفر ساعات من التصحيح.
التحقق من النموذج من جانب العميل: اكتشاف CNPJs غير الصالحة قبل إرسال النموذج يحسن تجربة المستخدم. لا أحد يريد ملء نموذج تسجيل من 20 حقلًا ليحصل على خطأ عند الإرسال لأنه قلب رقمين في CNPJ الخاص به.
إخفاء هوية البيانات للتحليل: عند إعداد بيانات الإنتاج للمشاركة مع فرق التحليلات أو الشركاء الخارجيين، تحتاج إلى استبدال CNPJs الحقيقية بأخرى صالحة ومزيفة. هذا يحافظ على سلامة المرجع في مجموعة البيانات الخاصة بك مع حماية الهويات التجارية الفعلية.
العمليات التجارية الدولية
فهم متطلبات البرازيل: إذا كنت تتوسع إلى السوق البرازيلية، ستواجه متطلبات CNPJ في العقود والفواتير ووثائق الشحن. وجود أداة للتجريب مع التنسيق يساعدك على فهم ما يجب على أنظمتك التعامل معه.
مواصفات التكامل مع الطرف الثالث: عند مراجعة وثائق واجهة برمجة التطبيقات من مزودي البرامج كخدمة البرازيليين، غالبًا ما ترى حقول CNPJ في أمثلة الحمولة. القدرة على توليد قيم اختبار صالحة تساعدك على نمذجة التكاملات بشكل أسرع.
طرق بديلة للتحقق من صحة CNPJ
مكتبات البرمجة
إذا كنت بحاجة إلى التحقق من صحة CNPJ مدمجًا في منطق التطبيق الخاص بك، فهذه المكتبات تنفذ خوارزمية رقم التحقق:
- JavaScript/Node.js:
cpf-cnpj-validator(130 ألف تحميل أسبوعيًا)،validator.js(يدعم الوثائق البرازيلية) - Python:
validate-docbr(يتحقق من CPF وCNPJ والوثائق البرازيلية الأخرى)،python-cnpj - PHP:
respect/validation(يتضمن قواعد CNPJ)،brazilianutils - Java:
caelum-stella(تحقق شامل من الوثائق البرازيلية) - Ruby: مكتبة
cpf_cnpj
عادة ما تتعامل هذه المكتبات مع التنسيق والتحليل والتحقق من أنواع الوثائق البرازيلية المختلفة (CPF وCNPJ وغيرها).
واجهات برمجة التطبيقات الرسمية للتحقق
للأنظمة الإنتاجية التي تحتاج إلى التحقق من التسجيل التجاري الفعلي:
- الخدمة العامة للإيرادات الفيدرالية: توفر واجهة برمجة تطبيقات Consulta CNPJ التحقق مقابل قاعدة البيانات الرسمية (تتطلب تفويضًا مناسبًا وتحديد معدل)
- مزودو البيانات من طرف ثالث: تقدم خدمات مثل Serasa Experian وBoa Vista SCPC واجهات برمجة تطبيقات تجارية تعيد تفاصيل الشركة وحالة التسجيل ومعلومات الائتمان
ملاحظة: تتحقق هذه الخدمات من التسجيل الفعلي، وليس فقط الصلاحية الرياضية. ستحتاج إلى تفويض مناسب ويجب توقع تكاليف واجهة برمجة التطبيقات للاستخدام الإنتاجي.
متى تستخدم كل نهج
استخدم هذه الأداة في المتصفح عندما: تحتاج إلى تحقق سريع دون تثبيت التبعيات، أو إنشاء بيانات اختبار للعروض التوضيحية، أو تعلم كيفية عمل التحقق من CNPJ.
استخدم مكتبة عندما: تقوم ببناء تطبيق يحتاج إلى تحقق من جانب العميل أو الخادم كجزء من معالجة النموذج.
استخدم واجهة برمجة تطبيقات رسمية عندما: تحتاج إلى التحقق من أن 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 مسجلاً لدى Receita Federal، أو ما إذا كان ينتمي لشركة نشطة، أو ما إذا كان مرتبطًا باسم الشركة الذي تتوقعه.
فكر في الأمر كالتدقيق الإملائي مقابل التحقق من الحقائق. هذه الأداة تخبرك إذا كان CNPJ "مكتوبًا" بشكل صحيح وفقًا للقواعد الرياضية، لكنها لا تستطيع إخبارك ما إذا كان الرقم يتوافق مع كيان تجاري حقيقي ونشط.
الاستخدام القانوني والأخلاقي
يتم إنشاء CNPJs للاختبار والتطوير فقط. وهي رياضيًا صالحة لكنها غير مسجلة لدى السلطات البرازيلية، مما يعني:
- ✅ آمن للاستخدام في: ملء قواعد بيانات الاختبار، اختبار وحدة منطق التحقق، بيئات ضمان الجودة، أمثلة التعليمات البرمجية في الوثائق
- ❌ لا تستخدم أبدًا في: تقديم الضرائب، تسجيل الشركات، توقيع العقود، معالجة المعاملات الحقيقية، أو التظاهر بهوية تجارية
استخدام CNPJ مزيف للأغراض الرسمية ليس غير أخلاقي فحسب - بل هو غير قانوني بموجب القانون البرازيلي ويمكن أن يؤدي إلى تهم الاحتيال.
قيود تقنية يجب معرفتها
الإنشاء العشوائي له تداعيات: تقوم الأداة بإنشاء الأرقام الـ 12 الأولى بشكل عشوائي. يتبع CNPJs الفعلية الصادرة عن Receita Federal أنماطًا داخلية مرتبطة بتاريخ التسجيل والمكتب الإقليمي ونوع الشركة. لن تتطابق الأرقام المولدة مع هذه الأنماط، والتي قد تشير إليها أنظمة التحقق المتطورة.
لا يوجد تحقق دلالي: صحة تنسيق CNPJ لا تعني السياق التجاري الصالح. على سبيل المثال، للهيئات الحكومية نطاقات CNPJ محددة - قد ينشئ هذا المولد واحدًا بالصدفة، لكنه لن يكون ذا معنى.
معالجة التنسيق: يقبل المتحقق تنسيقات إدخال مختلفة (12345678000195، 12.345.678/0001-95)، لكن بعض الأنظمة القديمة تتوقع تنسيقًا دقيقًا. تأكد دائمًا من الاختبار مع متطلبات التكامل الخاصة بك.
الخصوصية والأمان
تتم جميع المعالجات على جانب العميل في متصفحك. لا يتم إرسال أو تسجيل أو تخزين أي CNPJs تقوم بإنشائها أو التحقق منها. لا تطلب الأداة أو تعالج أو تستخدم أي معلومات شخصية.
أسئلة شائعة حول التحقق من صحة CNPJ
ما الفرق بين التحقق من صحة وتأكيد CNPJ؟
التحقق من الصحة يتحقق من أن الرقم صحيح رياضياً - التنسيق الصحيح، وأرقام التحقق الصحيحة، وعدم وجود أنماط غير صالحة. يقوم هذا الأداة بالتحقق من الصحة.
التأكيد يتحقق مما إذا كان CNPJ مسجلاً في قاعدة بيانات Receita Federal الفعلية. يتطلب التأكيد الاستعلام من قاعدة بيانات الحكومة وهو ليس شيئًا تقوم به هذه الأداة.
يمكنك أن يكون لديك CNPJ صالح تمامًا غير مؤكد (مثل الأرقام التجريبية التي يولدها هذا الأداة)، أو CNPJ غير صالح ينتمي لشركة حقيقية (لأن شخصًا ما أخطأ في إدخاله).
هل يمكنني استخدام CNPJs المولدة للاختبار الإنتاجي؟
يعتمد ذلك على ما تقصده بـ "الاختبار الإنتاجي". إنها مناسبة لبيئات التجهيز، واختبار التحميل، والتأكيد قبل الإطلاق. ولكن إذا كان "الاختبار الإنتاجي" يعني الاختبار مع معاملات حقيقية، أو واجهات برمجة حكومية حقيقية، أو أنظمة مالية حقيقية - فالإجابة هي لا، ستحتاج إلى CNPJs مسجلة فعلية.
نهج أكثر أمانًا: استخدم CNPJs المولدة في بيئات اختبار معزولة، ثم التبديل إلى مجموعة صغيرة من CNPJs الاختبارية الحقيقية (التي تتحكم بها) عند اختبار التكاملات الإنتاجية.
لماذا يرفض المتحقق 11.111.111/1111-11؟
على الرغم من أن CNPJ بأرقام متطابقة يمكن أن ينتج أرقام تحقق صالحة رياضيًا، إلا أن Receita Federal يستبعد صراحةً هذه الأنماط. إنها قاعدة عمل، وليست رياضية. ينطبق الأمر نفسه على الأنماط المتسلسلة في بعض أنظمة التحقق.
هذا مشابه لكيفية رفض العديد من الأنظمة لكلمات المرور مثل "password123" حتى لو كانت تستوفي متطلبات الطول - فهي صالحة تقنيًا لكنها غير مقبولة عمليًا.
كيف أتعامل مع التحقق من CNPJ في مناطق مختلفة؟
تقوم الشركات البرازيلية التي تزاول أعمالًا دولية أحيانًا بإسقاط الأحرف المنسقة عند إدخال CNPJs في أنظمة أجنبية. يجب أن يقوم منطق التحقق لديك بإزالة الأحرف غير الرقمية قبل الفحص:
1const cleanCNPJ = input.replace(/\D/g, ''); // إزالة كل شيء باستثناء الأرقام
2اقبل 12.345.678/0001-95، 12345678000195، و 12 345 678 0001 95 كمدخلات مكافئة.
ماذا عن التحقق من CNPJ مقابل CPF؟
CPF (Cadastro de Pessoas Físicas) هو الرقم التعريفي الضريبي الفردي في البرازيل، بينما CNPJ هو للشركات. يستخدمان خوارزميات أرقام تحقق مختلفة وأطوال مختلفة (CPF به 11 رقمًا، CNPJ به 14 رقمًا). إذا كنت تبني تطبيقًا برازيليًا يتعامل مع كليهما، ستحتاج إلى وظائف تحقق منفصلة - على الرغم من أن العديد من المكتبات تدعم كلا التنسيقين.
نمط شائع: اسمح للمستخدمين بإدخال CPF أو CNPJ في نفس الحقل، ثم اكتشف نوعه بناءً على الطول بعد إزالة الأحرف المنسقة.
هل يعمل هذا للشركات الأجنبية التي تعمل في البرازيل؟
يجب على الشركات الأجنبية العاملة في البرازيل الحصول أيضًا على CNPJs من Receita Federal. تتبع CNPJs الخاصة بهم نفس التنسيق وقواعد التحقق الخاصة بالشركات المحلية. لا يوجد تنسيق CNPJ خاص للشركات الأجنبية.
ومع ذلك، قد يكون لدى الشركات الأجنبية متطلبات توثيق إضافية وعمليات تسجيل مختلفة - استشر محاميًا برازيليًا للأعمال للحصول على التفاصيل.
هل يمكنني الاستعلام من قاعدة بيانات الحكومة للتحقق من تسجيل CNPJ؟
نعم، توفر Receita Federal وصولًا عامًا للتحقق من معلومات CNPJ الأساسية من خلال خدمة Consulta Pública CNPJ. يمكنك البحث يدويًا عن CNPJs أو، مع التفويض المناسب، استخدام واجهات برمجة التطبيقات الخاصة بهم للوصول البرمجي.
لاحظ أن الاستخدام الكثيف يتطلب التسجيل وهناك حدود معدل للمنع إساءة الاستخدام.
ما مدى تكرار تغير CNPJs؟
تعتبر CNPJs معرفات دائمة لا تتغير عندما تغير الشركة اسمها أو عنوانها أو هيكلها الملكي. ومع ذلك، إذا أغلقت شركة وأعادت التسجيل لاحقًا، فقد تحصل على CNPJ جديد. يمكن إضافة أرقام الفروع (الجزء /XXXX) مع فتح الشركات لمواقع جديدة، لكن الرقم الأساسي المكون من 8 أرقام يبقى ثابتًا.
مراجع ومصادر إضافية
مصادر حكومية رسمية
- الإيرادات الفيدرالية البرازيلية - البوابة الرسمية - الموقع الرسمي لخدمة الإيرادات الفيدرالية البرازيلية مع خدمات تسجيل وتحقق CNPJ
- البحث العام CNPJ - البحث العام عن CNPJ - الخدمة الحكومية الرسمية للتحقق من حالة تسجيل CNPJ
- التعليمات التنظيمية RFB رقم 1863/2018 - اللوائح القانونية التي تحكم تسجيل واستخدام CNPJ في البرازيل
المعايير والوثائق التقنية
- خوارزميات الحساب الوحدوي - يستخدم حساب الرقم التحقق الحساب الوحدوي 11، وهو نهج قياسي للأرقام التحققية
- ISO/IEC 7064 - المعيار الدولي لأنظمة الأرقام التحققية الذي أثر على تصميم التحقق من الوثائق البرازيلية
- القانون المدني البرازيلي (القانون رقم 10.406/2002) - الإطار القانوني الذي يحدد تصنيفات الكيانات التجارية التي تتطلب تسجيل CNPJ
موارد المطورين
- مستودع حزم NPM - npmjs.com - مستودع لمكتبات JavaScript بما في ذلك أدوات التحقق من الوثائق البرازيلية
- PyPI (فهرس حزم Python) - pypi.org - مكتبات Python للتحقق من CNPJ ومعالجة الوثائق البرازيلية
- GitHub - تنفيذات مفتوحة المصدر للتحقق من CNPJ بلغات برمجة متعددة
ابدأ بإنشاء وتحقق من أرقام التسجيل الضريبي البرازيلية (CNPJ)
سواء كنت تبني منصة للتجارة الإلكترونية البرازيلية، أو تختبر تكاملات الدفع مع ميركادو باغو، أو تحتاج فقط إلى فهم كيفية عمل التحقق من أرقام التسجيل الضريبي، فإن هذه الأداة توفر لك وصولًا فوريًا لقدرات الإنشاء والتحقق.
لا تحتاج إلى تثبيت، ولا مفاتيح API، ولا إعداد معقد. فقط افتح متصفحك وابدأ العمل مع معرفات الأعمال البرازيلية الصالحة.