สร้างหมายเลข CNPJ ที่ถูกต้องของบราซิลและตรวจสอบหมายเลขที่มีอยู่ด้วยเครื่องมือที่ออกแบบมาสำหรับนักพัฒนาและผู้ทดสอบที่ทำงานกับรหัสประจำตัวธุรกิจของบราซิล
สร้างหมายเลข CNPJ ของบราซิลที่ถูกต้องสำหรับการทดสอบ
ตรวจสอบว่าหมายเลข CNPJ ของบราซิลถูกต้องหรือไม่
CNPJ (Cadastro Nacional da Pessoa Jurídica) ของบราซิลคือหมายเลขระบุเฉพาะที่มอบให้กับธุรกิจและนิติบุคคลในบราซิล เครื่องมือสร้างและตรวจสอบ CNPJ ของบราซิลนี้ให้วิธีการที่ง่ายและมีประสิทธิภาพในการสร้างหมายเลข CNPJ ที่ถูกต้องสำหรับการทดสอบและตรวจสอบหมายเลข CNPJ ที่มีอยู่ตามอัลกอริธึมของบราซิลอย่างเป็นทางการ ไม่ว่าคุณจะเป็นนักพัฒนาที่กำลังทดสอบแอปพลิเคชันที่จัดการข้อมูลธุรกิจของบราซิล นักวิชาการ QA ที่สร้างกรณีทดสอบ หรือใครก็ตามที่ทำงานกับข้อมูลบริษัทของบราซิล เครื่องมือนี้จะช่วยให้คุณทำงานกับหมายเลข 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
หลักตรวจสอบ (2 ตัวเลขสุดท้าย) จะถูกคำนวณโดยใช้อัลกอริธึมทางคณิตศาสตร์เฉพาะที่ใช้ในการตรวจสอบความถูกต้องของ CNPJ อัลกอริธึมนี้ช่วยให้หมายเลขที่สร้างขึ้นแบบสุ่มไม่สามารถผ่านการตรวจสอบความถูกต้องได้หากไม่ปฏิบัติตามวิธีการคำนวณที่ถูกต้อง
อัลกอริธึมการตรวจสอบ CNPJ ใช้การคำนวณที่มีน้ำหนักเพื่อกำหนดหลักตรวจสอบ นี่คือวิธีการทำงาน:
เพื่อให้ CNPJ ถูกต้อง หลักตรวจสอบทั้งสองต้องตรงกับค่าที่คำนวณได้
เครื่องมือสร้างและตรวจสอบ CNPJ ของเรามีฟังก์ชันหลักสองอย่าง: การสร้าง CNPJ ที่ถูกต้องและการตรวจสอบหมายเลข CNPJ ที่มีอยู่
ในการสร้าง CNPJ ที่ถูกต้องสำหรับการทดสอบ:
CNPJ ที่สร้างขึ้นจะปฏิบัติตามกฎการตรวจสอบทางคณิตศาสตร์ทั้งหมดของ CNPJ ที่แท้จริง แต่ไม่ได้ลงทะเบียนกับหน่วยงานรายได้ของบราซิล
เพื่อตรวจสอบว่าหมายเลข CNPJ ถูกต้องทางคณิตศาสตร์หรือไม่:
ตัวตรวจสอบจะตรวจสอบว่าหมายเลข CNPJ ปฏิบัติตามรูปแบบที่ถูกต้องและหากหลักตรวจสอบตรงกับค่าที่คาดหวังตามอัลกอริธึมการตรวจสอบ
เครื่องมือสร้างและตรวจสอบ CNPJ ของบราซิลนี้มีประโยชน์โดยเฉพาะในสถานการณ์ต่อไปนี้:
ในขณะที่เครื่องมือของเรามีโซลูชันที่ง่ายและใช้เบราว์เซอร์ในการสร้างและตรวจสอบ CNPJ มีทางเลือกหลายอย่างขึ้นอยู่กับความต้องการเฉพาะของคุณ:
สำหรับนักพัฒนาที่ต้องการรวมการตรวจสอบ 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 คือหมายเลขทะเบียนระดับชาติสำหรับธุรกิจและนิติบุคคลในบราซิล ใช้สำหรับวัตถุประสงค์ทางภาษี การลงทะเบียนธุรกิจ การเปิดบัญชีธนาคาร และการระบุบริษัทในการทำธุรกรรมทางการ
ไม่. CNPJ ที่สร้างขึ้นโดยเครื่องมือนี้มีความถูกต้องทางคณิตศาสตร์ตามอัลกอริธึมหลักตรวจสอบ แต่ไม่ได้ลงทะเบียนกับหน่วยงานรายได้ของบราซิลและไม่เป็นของบริษัทจริง
ไม่. เพื่อให้ได้ CNPJ ที่ถูกต้องตามกฎหมายสำหรับธุรกิจ คุณต้องลงทะเบียนกับหน่วยงานรายได้ของบราซิล (Receita Federal) ตามกระบวนการอย่างเป็นทางการ CNPJ ที่สร้างขึ้นมีไว้สำหรับการทดสอบเท่านั้น
เพื่อยืนยันว่าหมายเลข CNPJ ลงทะเบียนกับบริษัทจริง คุณต้องตรวจสอบฐานข้อมูลของหน่วยงานรายได้ของบราซิล เครื่องมือของเราเพียงตรวจสอบว่าหมายเลข CNPJ ถูกต้องทางคณิตศาสตร์ ไม่ใช่ว่ามันถูกลงทะเบียนอย่างเป็นทางการ
CNPJ ที่มีตัวเลขทั้งหมดเหมือนกัน (เช่น 11.111.111/1111-11) จะถูกพิจารณาว่าไม่ถูกต้องโดยอัตโนมัติ แม้ว่าจะผ่านการตรวจสอบทางคณิตศาสตร์ นี่เป็นกฎที่กำหนดโดยหน่วยงานรายได้ของบราซิล
ไม่. การประมวลผลทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณ และเราไม่จัดเก็บหรือส่งข้อมูลใด ๆ ของ CNPJ ที่คุณสร้างหรือตรวจสอบ
เวอร์ชันปัจจุบันของเครื่องมือสร้าง CNPJ หนึ่งหมายเลขในแต่ละครั้ง สำหรับการสร้างแบบกลุ่ม คุณอาจต้องพิจารณาใช้หนึ่งในไลบรารีโปรแกรมมิ่งที่กล่าวถึงในส่วนทางเลือก
นี่คือรูปแบบทางการที่จำเป็นตามที่หน่วยงานบราซิลกำหนด การจัดกลุ่มเฉพาะช่วยระบุส่วนประกอบต่าง ๆ ของ CNPJ เช่น หมายเลขฐานและตัวระบุสาขา
คุณสามารถดำเนินการอัลกอริธึมการตรวจสอบในภาษาการเขียนโปรแกรมที่คุณต้องการโดยใช้ตัวอย่างโค้ดที่ให้ไว้ในส่วนการดำเนินการทางเทคนิค หรือใช้หนึ่งในไลบรารีที่กล่าวถึงในส่วนทางเลือก
ใช่ หน่วยงานรัฐบาลในบราซิลมีรูปแบบ CNPJ เฉพาะ ตัวอย่างเช่น หน่วยงานรัฐบาลกลางมักเริ่มต้นด้วยตัวเลขเฉพาะ เครื่องมือของเราสร้าง CNPJ แบบสุ่มและไม่ได้สร้าง CNPJ ของหน่วยงานรัฐบาลโดยเฉพาะ
เครื่องมือสร้างและตรวจสอบ CNPJ ของบราซิลของเราทำให้การทำงานกับหมายเลขระบุตัวตนเหล่านี้เป็นเรื่องง่ายและมีประสิทธิภาพ ไม่ว่าคุณจะทดสอบแอปพลิเคชัน เตรียมข้อมูลตัวอย่าง หรือตรวจสอบ CNPJ ที่มีอยู่ เครื่องมือนี้ให้โซลูชันที่ตรงไปตรงมาที่ไม่ต้องมีการรวม API หรือการกำหนดค่าที่ซับซ้อน
สร้าง CNPJ ที่ถูกต้องหมายเลขแรกของคุณตอนนี้หรือทำการตรวจสอบหมายเลขที่มีอยู่โดยใช้ส่วนติดต่อที่เรียบง่ายของเรา!
ค้นพบเครื่องมือเพิ่มเติมที่อาจมีประโยชน์สำหรับการทำงานของคุณ