Δημιουργήστε έγκυρους αριθμούς 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
Τα ψηφία ελέγχου (τα τελευταία δύο νούμερα) υπολογίζονται χρησιμοποιώντας έναν συγκεκριμένο μαθηματικό αλγόριθμο που επαληθεύει την αυθεντικότητα του 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 τώρα ή επαληθεύστε έναν υπάρχοντα χρησιμοποιώντας τη απλή διεπαφή μας!
Ανακαλύψτε περισσότερα εργαλεία που μπορεί να είναι χρήσιμα για τη ροή εργασίας σας