🛠️

Whiz Tools

Build • Create • Innovate

أداة توليد والتحقق من CNPJ البرازيلية للاختبار

قم بتوليد أرقام CNPJ البرازيلية الصالحة والتحقق من الأرقام الموجودة باستخدام هذه الأداة البسيطة المصممة للمطورين والمختبرين الذين يعملون مع معرفات الأعمال البرازيلية.

مولد ومحقق CNPJ البرازيلي

مولد CNPJ

قم بإنشاء رقم CNPJ برازيلي صالح لأغراض الاختبار.

محقق CNPJ

تحقق مما إذا كان رقم CNPJ البرازيلي صالحًا.

📚

الوثائق

أداة توليد والتحقق من CNPJ البرازيلية

المقدمة

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

توليد CNPJ

لتوليد CNPJ صالح لأغراض الاختبار:

  1. انتقل إلى قسم "مولد CNPJ" في الأداة
  2. انقر على زر "توليد CNPJ"
  3. سيظهر CNPJ صالح رياضيًا في العرض المنسق
  4. استخدم زر "نسخ" لنسخ CNPJ المولد إلى حافظة Clipboard الخاصة بك

سيكون CNPJ المولد متوافقًا مع جميع قواعد التحقق الرياضية لـ CNPJ حقيقي ولكنه غير مسجل لدى وزارة المالية البرازيلية.

التحقق من CNPJ

للتحقق مما إذا كان CNPJ صالحًا رياضيًا:

  1. انتقل إلى قسم "مدقق CNPJ" في الأداة
  2. أدخل CNPJ الذي تريد التحقق منه في حقل الإدخال
    • تقبل الأداة CNPJs مع أو بدون تنسيق (نقاط، شرطات، وشرائح)
  3. انقر على زر "التحقق"
  4. ستعرض الأداة ما إذا كان CNPJ صالحًا أو غير صالح بناءً على خوارزمية أرقام التحقق

يتحقق المدقق مما إذا كان CNPJ يتبع التنسيق الصحيح وما إذا كانت أرقام التحقق تتطابق مع القيم المتوقعة وفقًا لخوارزمية التحقق.

حالات الاستخدام

تكون أداة توليد والتحقق من CNPJ البرازيلية هذه مفيدة بشكل خاص في السيناريوهات التالية:

تطوير البرمجيات والاختبار

  • إنشاء بيانات اختبار: توليد CNPJs صالحة لملء قواعد بيانات الاختبار دون استخدام معرفات الشركات الحقيقية
  • اختبار الوحدة: التحقق من وظائف التعامل مع CNPJ في الكود الخاص بك باستخدام أمثلة صالحة وغير صالحة معروفة
  • اختبار ضمان الجودة: إنشاء حالات اختبار للنماذج والواجهات التي تتطلب إدخال CNPJ
  • اختبار التكامل: اختبار الأنظمة التي تتبادل البيانات مع الخدمات الحكومية البرازيلية أو المؤسسات المالية

التعليم والتدريب

  • تعلم تنسيق CNPJ: فهم كيفية هيكلة معرفات الأعمال البرازيلية
  • دراسة الخوارزمية: فحص كيفية عمل التحقق من أرقام التحقق في الممارسة العملية
  • تقنيات التحقق من البيانات: دراسة أمثلة حقيقية لمتطلبات التحقق من البيانات

معالجة البيانات

  • تنظيف البيانات: التحقق من CNPJs في مجموعات البيانات الحالية لتحديد الأخطاء المحتملة
  • تحقق من النماذج: تنفيذ التحقق من صحة العميل أو الخادم لإدخالات CNPJ
  • إخفاء البيانات: استبدال CNPJs الحقيقية بأرقام مولدة صالحة عند إعداد مجموعات البيانات للتحليل

الأعمال الدولية

  • التحضير لدخول السوق: فهم متطلبات التعريف بالأعمال البرازيلية
  • إعداد الوثائق: ضمان التنسيق الصحيح عند إعداد الوثائق التجارية للبرازيل
  • التحقق من الامتثال: التحقق من أن أرقام CNPJ المجمعة على الأقل صالحة رياضيًا

البدائل

بينما توفر أداتنا حلاً بسيطًا يعتمد على المتصفح لتوليد والتحقق من CNPJs، هناك العديد من البدائل حسب احتياجاتك المحددة:

مكتبات البرمجة

للمطورين الذين يدمجون التحقق من 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

للتطبيقات التي تتطلب التحقق دون تنفيذ الخوارزمية:

  • واجهات برمجة التطبيقات الحكومية البرازيلية (تتطلب تسجيل)
  • واجهات برمجة التطبيقات التجارية للتحقق التي تتضمن التحقق من 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 هذه، يجب أن تأخذ في الاعتبار الاعتبارات التالية:

الاعتبارات القانونية والأخلاقية

  • ليس للغش: يجب ألا تُستخدم CNPJs المولدة لأغراض احتيالية أو تمثيل زائف
  • للاختبار فقط: هذه CNPJs لأغراض الاختبار والتطوير فقط
  • غير مسجلة: CNPJs المولدة صالحة رياضيًا ولكنها غير مسجلة لدى السلطات البرازيلية
  • لا صلاحية في العالم الحقيقي: لا يمكن استخدامها للتسجيل التجاري الفعلي أو أغراض الضرائب

القيود الفنية

  • لا معلومات تجارية: CNPJs المولدة لا تحتوي على رموز قطاع حقيقية أو معلومات الموقع
  • لا تحقق من قاعدة البيانات: المدقق يتحقق من الصحة الرياضية فقط، وليس حالة التسجيل
  • تباينات التنسيق: بينما تتعامل الأداة مع تباينات التنسيق الشائعة، قد تتطلب بعض الأنظمة تنسيقات محددة

اعتبارات الأمان

  • معالجة جانب العميل: تتم جميع المعالجات في متصفحك؛ لا تُرسل بياناتك إلى الخوادم
  • لا تخزين البيانات: لا تُخزن أو تُسجل CNPJs المولدة أو التي تم التحقق منها
  • لا بيانات شخصية: الأداة لا تتعامل أو تعالج أي معلومات شخصية

الأسئلة الشائعة

ما هو استخدام CNPJ في البرازيل؟

CNPJ هو رقم التسجيل الوطني للأعمال والكيانات القانونية في البرازيل. يُستخدم لأغراض ضريبية، تسجيل الأعمال، فتح حسابات مصرفية، وتحديد الشركات في المعاملات الرسمية.

هل CNPJs التي تولدها هذه الأداة حقيقية؟

لا. CNPJs التي تولدها هذه الأداة صالحة رياضيًا وفقًا لخوارزمية أرقام التحقق، لكنها غير مسجلة لدى وزارة المالية البرازيلية ولا تنتمي إلى شركات حقيقية.

هل يمكنني استخدام CNPJs المولدة في عملي؟

لا. للحصول على CNPJ شرعي لشركة، يجب عليك التسجيل لدى وزارة المالية البرازيلية (Receita Federal) وفقًا للعملية الرسمية. CNPJs المولدة هي لأغراض الاختبار فقط.

كيف يمكنني معرفة ما إذا كان CNPJ ينتمي لشركة حقيقية؟

للتحقق مما إذا كان CNPJ مسجلاً لشركة فعلية، تحتاج إلى استشارة قاعدة بيانات وزارة المالية البرازيلية. أداتنا تتحقق فقط مما إذا كان CNPJ صالحًا رياضيًا، وليس إذا كان مسجلاً رسميًا.

لماذا يرفض المدقق CNPJ بجميع الأرقام المتشابهة؟

تعتبر CNPJs التي تحتوي على جميع الأرقام المتشابهة (مثل 11.111.111/1111-11) غير صالحة تلقائيًا، حتى لو نجحت رياضيًا في خوارزمية أرقام التحقق. هذه قاعدة وضعتها وزارة المالية البرازيلية.

هل الأداة تخزن CNPJs التي أولدها أو أتحقق منها؟

لا. تتم جميع المعالجات في متصفحك، ولا نقوم بتخزين أو نقل أي من CNPJs التي تولدها أو تتحقق منها.

هل يمكنني توليد عدة CNPJs في وقت واحد؟

الإصدار الحالي من الأداة يولد CNPJ واحدًا في كل مرة. للتوليد بالجملة، قد ترغب في النظر في استخدام إحدى المكتبات البرمجية المذكورة في قسم البدائل.

لماذا يعتبر تنسيق XX.XXX.XXX/XXXX-XX مهمًا؟

هذا هو التنسيق الرسمي المطلوب من قبل السلطات البرازيلية. يساعد الترتيب المحدد في تحديد مكونات مختلفة من CNPJ، مثل الرقم الأساسي ومعرف الفرع.

كيف يمكنني التحقق من CNPJ برمجيًا؟

يمكنك تنفيذ خوارزمية التحقق في لغة البرمجة المفضلة لديك باستخدام أمثلة التعليمات البرمجية المقدمة في قسم التنفيذ الفني، أو استخدام إحدى المكتبات المذكورة في قسم البدائل.

هل هناك CNPJs خاصة بالكيانات الحكومية؟

نعم. تحتوي الكيانات الحكومية في البرازيل على أنماط CNPJ محددة. على سبيل المثال، غالبًا ما تبدأ الكيانات الحكومية الفيدرالية بأرقام محددة. تقوم أداتنا بإنشاء CNPJs عشوائية ولا تولد CNPJs خاصة بالكيانات الحكومية.

المراجع

  1. وزارة المالية البرازيلية (Receita Federal do Brasil) - الموقع الرسمي
  2. "CNPJ - Cadastro Nacional da Pessoa Jurídica" - ويكيبيديا
  3. القانون المدني البرازيلي (القانون رقم 10.406/2002) - الإطار القانوني للكيانات التجارية في البرازيل
  4. تعليمات التسجيل الخاصة بالأعمال البرازيلية (IN RFB رقم 1863/2018) - اللوائح المتعلقة بتسجيل CNPJ

جربها الآن

تجعل أداة توليد والتحقق من CNPJ البرازيلية لدينا العمل مع هذه الأرقام التعريفية بسيطًا وفعالًا. سواء كنت تختبر التطبيقات، أو تعد بيانات عينة، أو تتحقق من CNPJs الحالية، توفر هذه الأداة حلاً مباشرًا دون تعقيد تكامل واجهات برمجة التطبيقات أو التكوينات المتقدمة.

قم بتوليد أول CNPJ صالح لك الآن أو تحقق من CNPJ موجود باستخدام واجهتنا البسيطة!