Μετάβαση στο περιεχόμενο

Γεννήτρια & Επαληθευτής CNPJ - Εργαλείο Αναγνωριστικού Επιχειρήσεων της Βραζιλίας

Δημιουργήστε έγκυρους αριθμούς CNPJ για δοκιμή ή επαληθεύστε αμέσως αναγνωριστικά επιχειρήσεων της Βραζιλίας. Δωρεάν εργαλείο με επαλήθευση ψηφίου ελέγχου για προγραμματιστές που εργάζονται με το Εθνικό Μητρώο Νομικών Προσώπων.

Γεννήτρια και Επαληθευτής Βραζιλιάνου CNPJ

Γεννήτρια CNPJ

Δημιουργήστε έναν έγκυρο αριθμό CNPJ της Βραζιλίας για σκοπούς δοκιμής.

Επαληθευτής CNPJ

Ελέγξτε εάν ένας αριθμός CNPJ της Βραζιλίας είναι έγκυρος.

Υπολογιστής φόρτωσης...
📚

Τεκμηρίωση

Κατανόηση των Αριθμών CNPJ της Βραζιλίας

Το CNPJ (Cadastro Nacional da Pessoa Jurídica) είναι η βραζιλιάνικη εκδοχή του εταιρικού φορολογικού αναγνωριστικού - ένας 14-ψήφιος αριθμός που προσδιορίζει κάθε νομική επιχειρηματική οντότητα στη χώρα. Εάν αναπτύσσετε λογισμικό που διαχειρίζεται βραζιλιάνικα επιχειρηματικά δεδομένα, θα συναντήσετε γρήγορα αυτούς τους αριθμούς σε φόρμες εγγραφής, τιμολόγια και ενσωματώσεις API.

Ακριβώς αυτό το καθιστά πρακτικό: δημιουργεί μαθηματικά έγκυρα CNPJ για δοκιμές χωρίς να χρησιμοποιεί πραγματικά αναγνωριστικά εταιρειών. Όταν ρυθμίζετε μια δοκιμαστική βάση δεδομένων με 1.000 εγγραφές ή κάνετε διόρθωση σφαλμάτων σε μια ρουτίνα επικύρωσης στις 2 π.μ., χρειάζεστε CNPJ που περνούν τους αλγοριθμικούς ελέγχους αλλά δεν θα ταιριάζουν τυχαία με πραγματικές επιχειρήσεις. Ακριβώς αυτό παράγει.

Οι αριθμοί που δημιουργούνται εδώ ακολουθούν τον επίσημο αλγόριθμο επικύρωσης της Receita Federal (Βραζιλιάνικη Υπηρεσία Ομοσπονδιακών Εσόδων). Έχουν σωστά ψηφία ελέγχου και σωστή μορφοποίηση - απλώς δεν είναι καταχωρημένοι στη βάση δεδομένων της κυβέρνησης. Σκεφτείτε τα ως συντακτικά σωστά δεδομένα δοκιμής που δεν θα δημιουργήσουν ζητήματα συμμόρφωσης στο περιβάλλον ανάπτυξής σας.

Τι είναι το CNPJ και γιατί έχει σημασία

Το CNPJ λειτουργεί ως αναγνωριστικό εταιρειών της Βραζιλίας - παρόμοιο με το EIN στις Ηνωμένες Πολιτείες ή τον Αριθμό Καταχώρισης Εταιρείας στο Ηνωμένο Βασίλειο. Κάθε επιχειρηματική οντότητα που λειτουργεί νόμιμα στη Βραζιλία πρέπει να έχει ένα, το οποίο εκδίδεται από την Receita Federal (Ομοσπονδιακή Υπηρεσία Εσόδων).

Θα συναντήσετε CNPJs όταν:

  • Επεξεργάζεστε πληρωμές: Οι βραζιλιάνικες πύλες πληρωμών απαιτούν επικύρωση CNPJ για εμπορικούς λογαριασμούς
  • Φορολογική συμμόρφωση: Κάθε τιμολόγιο που εκδίδεται στη Βραζιλία πρέπει να περιλαμβάνει έγκυρο CNPJ
  • Επιχειρηματική καταχώριση: Οι κρατικές υπηρεσίες χρησιμοποιούν CNPJs για να παρακολουθούν νομικές οντότητες σε διάφορα συστήματα
  • Τραπεζικές λειτουργίες: Άνοιγμα εταιρικών λογαριασμών ή επεξεργασία διεθνών μεταφορών
  • Εισαγωγή/εξαγωγή: Τα τελωνειακά έγγραφα απαιτούν επαλήθευση CNPJ
  • Κρατικές συμβάσεις: Τα συστήματα δημόσιων διαγωνισμών επικυρώνουν CNPJs πριν δεχτούν προσφορές

Από την εμπειρία μου με βραζιλιάνικες πλατφόρμες ηλεκτρονικού εμπορίου, ένα από τα πιο συνηθισμένα σημεία ενοποίησης είναι η ροή ολοκλήρωσης της αγοράς όπου οι χρήστες εισάγουν το CNPJ τους για εταιρικές αγορές. Η λογική επικύρωσής σας πρέπει να εντοπίζει σφάλματα μορφοποίησης πριν από τον επεξεργαστή πληρωμών - διαφορετικά θα δείτε αποτυχημένες συναλλαγές που θα μπορούσαν να είχαν προληφθεί.

Δομή και Μορφή CNPJ

Ένα CNPJ αποτελείται από 14 ψηφία με μορφή: XX.XXX.XXX/YYYY-ZZ

Ανάλυση της δομής:

  1. Πρώτα 8 ψηφία (XX.XXX.XXX): Ο βασικός αριθμός εγγραφής που εκχωρείται μοναδικά στην εταιρεία
  2. Επόμενα 4 ψηφία (/YYYY): Αναγνωριστικό υποκαταστήματος ή εγκατάστασης—/0001 υποδηλώνει την έδρα, ενώ /0002, /0003 αντιπροσωπεύουν τοποθεσίες υποκαταστημάτων
  3. Τελευταία 2 ψηφία (-ZZ): Ψηφία ελέγχου που υπολογίζονται μέσω ενός σταθμισμένου αλγορίθμου

Παράδειγμα: 12.345.678/0001-95

Το ενδιαφέρον σχετικά με το αναγνωριστικό υποκαταστήματος: όταν μια εταιρεία ανοίγει πολλές τοποθεσίες, κάθε μία λαμβάνει τα ίδια πρώτα 8 ψηφία αλλά διαφορετικό αριθμό υποκαταστήματος. Έτσι, εάν μια αλυσίδα λιανικής έχει 50 καταστήματα, θα έχουν CNPJs που τελειώνουν σε /0001 έως /0050, όλα με τον ίδιο βασικό αριθμό. Αυτό διευκολύνει τον προσδιορισμό ότι πολλά CNPJs ανήκουν στον ίδιο γονικό οργανισμό.

Τα ψηφία ελέγχου δεν είναι τυχαία—υπολογίζονται χρησιμοποιώντας έναν αλγόριθμο modulus-11 με συγκεκριμένες ακολουθίες βαρών. Αυτή η επιλογή σχεδιασμού, κοινή σε βραζιλιάνικα διοικητικά έγγραφα, καθιστά μαθηματικά δύσκολη την πλαστογράφηση έγκυρων αριθμών ή την τυχαία δημιουργία έγκυρων αριθμών μέσω ορθογραφικών λαθών.

Πώς λειτουργεί στην πραγματικότητα η επικύρωση CNPJ

Ο αλγόριθμος επικύρωσης χρησιμοποιεί υπολογισμό με σταθμισμένο modulus-11. Εδώ είναι η λογική πίσω από αυτό:

Υπολογισμός του Πρώτου Ψηφίου Ελέγχου

  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 - υπόλοιπο

Γιατί αυτή η προσέγγιση λειτουργεί: Το σύστημα σταθμισμένου πολλαπλασιασμού δημιουργεί μια μοναδική σχέση μεταξύ όλων των 12 βασικών ψηφίων και των προκύπτοντων ψηφίων ελέγχου. Η αλλαγή ακόμα και ενός ψηφίου στον βασικό αριθμό παράγει διαφορετικά ψηφία ελέγχου, που εντοπίζει συνήθη σφάλματα μεταγραφής όπως την αντιμετάθεση δύο ψηφίων (πληκτρολόγηση 12.345 αντί 12.354).

Μια πρακτική σημείωση: Τα CNPJ με όλα τα ψηφία πανομοιότυπα (όπως 11.111.111/1111-11) είναι αυτόματα άκυρα, ακόμα και αν περάσουν τον μαθηματικό έλεγχο. Η Receita Federal αποκλείει ρητά αυτά τα μοτίβα για να αποτρέψει τετριμμένες περιπτώσεις.

Πώς να Χρησιμοποιήσετε τον Γεννήτορα και Επαληθευτή CNPJ

Δημιουργία Δοκιμαστικών CNPJ

Χρειάζεστε έναν έγκυρο CNPJ για τη βάση δεδομένων δοκιμών σας; Δείτε πώς:

  1. Κάντε κλικ στο "Δημιουργία CNPJ"
  2. Το εργαλείο δημιουργεί ένα μαθηματικά έγκυρο αριθμό αμέσως
  3. Κάντε κλικ στο "Αντιγραφή" για να το πάρετε στο πρόχειρο
  4. Επικολλήστε το σε φόρμες δοκιμών, σπορείς βάσης δεδομένων ή μονάδες ελέγχου

Κάθε δημιουργημένος CNPJ περνάει όλους τους αλγοριθμικούς ελέγχους επικύρωσης αλλά δεν είναι καταχωρημένος στην Receita Federal. Αυτό σημαίνει ότι μπορείτε να τους χρησιμοποιήσετε ελεύθερα στην ανάπτυξη χωρίς να ανησυχείτε ότι θα χρησιμοποιήσετε κατά λάθος το αναγνωριστικό μιας πραγματικής εταιρείας.

Επικύρωση Αριθμών CNPJ

Έχετε έναν CNPJ που χρειάζεται να επαληθεύσετε; Ο επαληθευτής το χειρίζεται:

  1. Επικολλήστε ή πληκτρολογήστε τον CNPJ στο πεδίο εισαγωγής
  2. Μην ανησυχείτε για τη μορφοποίηση—λειτουργεί με 12345678000195 ή 12.345.678/0001-95
  3. Κάντε κλικ στο "Επικύρωση"
  4. Λάβετε άμεση ανατροφοδότηση σχετικά με το αν οι ψηφίοι ελέγχου είναι σωστοί

Τι ελέγχει ο επαληθευτής: σωστό μήκος (14 ψηφία), σωστούς υπολογισμούς ψηφίων ελέγχου και αποκλεισμό μη έγκυρων προτύπων όπως ψηφία όλα ίδια. Τι δεν ελέγχει: εάν ο CNPJ είναι καταχωρημένος στη βάση δεδομένων της κυβέρνησης—αυτό απαιτεί απευθείας αναζήτηση στην Receita Federal.

Πραγματικές Περιπτώσεις Χρήσης για Γεννήτρια και Επικυρωτή CNPJ

Ανάπτυξη Λογισμικού και Δοκιμές

Πλήρωση βάσης δεδομένων: Κατά τη δημιουργία περιβάλλοντος σταδιακής ανάπτυξης με ρεαλιστικά δεδομένα δοκιμής, χρειάζεστε δεκάδες ή εκατοντάδες έγκυρα CNPJs. Η χειροκίνητη δημιουργία είναι κουραστική, και η χρήση πραγματικών αναγνωριστικών εταιρειών θέτει ζητήματα ιδιωτικότητας. Τα παραγόμενα CNPJs λύνουν και τα δύο προβλήματα.

Δοκιμή οριακών περιπτώσεων μονάδων: Η συνάρτηση επικύρωσης θα πρέπει να απορρίπτει 00.000.000/0000-00 αλλά να δέχεται 11.222.333/0001-81. Η ύπαρξη γεννήτριας σάς επιτρέπει να δημιουργείτε γρήγορα τόσο έγκυρες όσο και σκόπιμα μη έγκυρες περιπτώσεις δοκιμής για να επαληθεύσετε ότι η λογική σας χειρίζεται σωστά τις οριακές συνθήκες.

Παλινδρομικός έλεγχος ποιότητας: Κατά τον έλεγχο φορμών εγγραφής ή ροών ολοκλήρωσης B2B, οι ομάδες ποιοτικού ελέγχου χρειάζονται φρέσκα δεδομένα δοκιμής για κάθε εκτέλεση. Ένα κοινό πρόβλημα που έχω δει: τα περιβάλλοντα δοκιμών μολύνονται με τα ίδια 5-6 CNPJs που χρησιμοποιούνται επανειλημμένα, το οποίο καλύπτει σφάλματα που εμφανίζονται μόνο με συγκεκριμένα μοτίβα ψηφίων.

Δοκιμή ενοποίησης API: Εάν ενοποιείτε με βραζιλιάνικους επεξεργαστές πληρωμών όπως το PagSeguro ή το Mercado Pago, τα περιβάλλοντα sandbox τους συχνά απαιτούν έγκυρη μορφοποίηση CNPJ. Τα μαθηματικά πρέπει να είναι σωστά, ακόμα και αν δεν προσπελάζετε παραγωγικές βάσεις δεδομένων.

Επεξεργασία και Επικύρωση Δεδομένων

Καθαρισμός εισαγόμενων δεδομένων: Λάβατε ένα CSV με 10.000 εγγραφές βραζιλιάνικων εταιρειών. Πριν από την επεξεργασία, πρέπει να προσδιορίσετε ποια CNPJs είναι εσφαλμένα. Περνώντας τα από τον επικυρωτή, επισημαίνονται καταχωρήσεις με ορθογραφικά λάθη, περικοπή ή λανθασμένα ψηφία ελέγχου - εξοικονομώντας ώρες αποσφαλμάτωσης.

Επικύρωση φόρμας από την πλευρά του πελάτη: Ο εντοπισμός μη έγκυρων CNPJs πριν την υποβολή φόρμας βελτιώνει την εμπειρία χρήστη. Κανείς δεν θέλει να συμπληρώσει μια φόρμα εγγραφής 20 πεδίων και στη συνέχεια να λάβει σφάλμα κατά την υποβολή επειδή άλλαξε δύο ψηφία στο CNPJ του.

Ανωνυμοποίηση δεδομένων για ανάλυση: Κατά την προετοιμασία παραγωγικών δεδομένων για κοινή χρήση με αναλυτικές ομάδες ή εξωτερικούς συνεργάτες, πρέπει να αντικαταστήσετε πραγματικά CNPJs με έγκυρα αλλά ψεύτικα. Αυτό διατηρεί την αναφορική ακεραιότητα στο σύνολο δεδομένων σας ενώ προστατεύει τις πραγματικές επιχειρηματικές ταυτότητες.

Διεθνείς Επιχειρηματικές Λειτουργίες

Κατανόηση βραζιλιάνικων απαιτήσεων: Εάν επεκτείνεστε στην βραζιλιάνικη αγορά, θα συναντήσετε απαιτήσεις CNPJ σε συμβόλαια, τιμολόγια και έγγραφα αποστολής. Η ύπαρξη ενός εργαλείου για πειραματισμό με τη μορφή βοηθά να κατανοήσετε τι πρέπει να χειριστούν τα συστήματά σας.

Προδιαγραφές ενοποίησης τρίτων: Κατά την εξέταση τεκμηρίωσης API από βραζιλιάνικους παρόχους SaaS, συχνά θα δείτε πεδία CNPJ σε παραδείγματα payload. Η δυνατότητα δημιουργίας έγκυρων τιμών δοκιμής σάς βοηθά να δημιουργήσετε ενοποιήσεις ταχύτερα.

Εναλλακτικές Προσεγγίσεις Επικύρωσης CNPJ

Βιβλιοθήκες Προγραμματισμού

Εάν χρειάζεστε επικύρωση CNPJ ενσωματωμένη στη λογική της εφαρμογής σας, αυτές οι βιβλιοθήκες υλοποιούν τον αλγόριθμο ελέγχου ψηφίων:

Αυτές οι βιβλιοθήκες συνήθως χειρίζονται μορφοποίηση, ανάλυση και επικύρωση για πολλούς τύπους βραζιλιάνων εγγράφων (CPF, CNPJ, κ.λπ.).

Επίσημα API Επαλήθευσης

Για παραγωγικά συστήματα που χρειάζονται επαλήθευση πραγματικής επιχειρηματικής καταχώρισης:

  • Δημόσια Υπηρεσία Receita Federal: Το API Consulta CNPJ επιτρέπει επαλήθευση έναντι της επίσημης βάσης δεδομένων (απαιτεί κατάλληλη εξουσιοδότηση και περιορισμό ρυθμού)
  • Πάροχοι δεδομένων τρίτων: Υπηρεσίες όπως Serasa Experian και Boa Vista SCPC προσφέρουν εμπορικά API που επιστρέφουν στοιχεία εταιρείας, κατάσταση καταχώρισης και πληροφορίες πίστωσης

Σημείωση: Αυτές οι υπηρεσίες ελέγχουν την πραγματική καταχώριση, όχι μόνο μαθηματική εγκυρότητα. Θα χρειαστείτε κατάλληλη εξουσιοδότηση και πρέπει να αναμένετε κόστη API για παραγωγική χρήση.

Πότε να Χρησιμοποιήσετε Κάθε Προσέγγιση

Χρησιμοποιήστε αυτό το εργαλείο προγράμματος περιήγησης όταν: Χρειάζεστε γρήγορη επικύρωση χωρίς εγκατάσταση εξαρτήσεων, δημιουργία δοκιμαστικών δεδομένων για επιδείξεις ή εκμάθηση λειτουργίας επικύρωσης CNPJ.

Χρησιμοποιήστε μια βιβλιοθήκη όταν: Δημιουργείτε μια εφαρμογή που χρειάζεται επικύρωση από την πλευρά του πελάτη ή του διακομιστή ως μέρος επεξεργασίας φόρμας.

Χρησιμοποιήστε ένα επίσημο API όταν: Χρειάζεστε να επαληθεύσετε ότι ένα 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 είναι "γραμμένο" σωστά σύμφωνα με τους μαθηματικούς κανόνες, αλλά δεν μπορεί να σας πει εάν ο αριθμός αντιστοιχεί σε μια πραγματική, ενεργή επιχειρηματική οντότητα.

Νόμιμη και Ηθική Χρήση

Τα παραγόμενα CNPJ προορίζονται μόνο για δοκιμή και ανάπτυξη. Είναι μαθηματικά έγκυρα αλλά δεν είναι καταχωρημένα στις βραζιλιάνικες αρχές, γεγονός που σημαίνει:

  • Ασφαλές να χρησιμοποιηθεί για: Συμπλήρωση βάσεων δοκιμών, μοναδιαίο έλεγχο λογικής επικύρωσης, περιβάλλοντα QA, παραδείγματα κώδικα σε τεκμηρίωση
  • Ποτέ μην χρησιμοποιείτε για: Φορολογική δήλωση, καταχώρηση επιχείρησης, υπογραφή συμβάσεων, επεξεργασία πραγματικών συναλλαγών ή παραπλάνηση επιχειρηματικής ταυτότητας

Η χρήση ενός ψεύτικου CNPJ για επίσημους σκοπούς δεν είναι απλώς ανήθικη—είναι παράνομη σύμφωνα με τον βραζιλιάνικο νόμο και μπορεί να οδηγήσει σε κατηγορίες απάτης.

Τεχνικοί Περιορισμοί προς Γνώση

Η τυχαία δημιουργία έχει επιπτώσεις: Το εργαλείο δημιουργεί τα πρώτα 12 ψηφία τυχαία. Τα πραγματικά CNPJ που εκδίδονται από την Receita Federal ακολουθούν εσωτερικά πρότυπα σχετικά με την ημερομηνία καταχώρησης, το περιφερειακό γραφείο και τον τύπο της επιχείρησης. Οι παραγόμενοι αριθμοί δεν θα ταιριάζουν με αυτά τα πρότυπα, κάτι που προηγμένα συστήματα επικύρωσης μπορεί να επισημάνουν.

Καμία σημασιολογική επικύρωση: Ένα έγκυρο μορφότυπο CNPJ δεν σημαίνει έγκυρο επιχειρηματικό πλαίσιο. Για παράδειγμα, οι κρατικοί φορείς έχουν συγκεκριμένες περιοχές CNPJ—αυτός ο γεννήτορας μπορεί να δημιουργήσει τυχαία ένα τέτοιο, αλλά δεν θα είναι ουσιαστικό.

Χειρισμός μορφοτύπου: Ο επικυρωτής δέχεται διάφορες μορφές εισόδου (12345678000195, 12.345.678/0001-95), αλλά ορισμένα παλαιότερα συστήματα αναμένουν ακριβή μορφοποίηση. Πάντα να δοκιμάζετε με τις συγκεκριμένες απαιτήσεις ολοκλήρωσης.

Ιδιωτικότητα και Ασφάλεια

Όλη η επεξεργασία πραγματοποιείται στην πλευρά του πελάτη στο πρόγραμμα περιήγησής σας. Κανένα CNPJ που δημιουργείτε ή επικυρώνετε δεν αποστέλλεται σε διακομιστές, δεν καταγράφεται ή δεν αποθηκεύεται. Το εργαλείο δεν ζητά, δεν χειρίζεται και δεν επεξεργάζεται καμία προσωπική πληροφορία.

Συχνές Ερωτήσεις σχετικά με την Επικύρωση CNPJ

Ποια είναι η διαφορά μεταξύ επικύρωσης και επαλήθευσης ενός CNPJ;

Επικύρωση ελέγχει εάν ο αριθμός είναι μαθηματικά σωστός—σωστή μορφή, σωστά ψηφία ελέγχου, χωρίς άκυρα μοτίβα. Αυτό το εργαλείο κάνει επικύρωση.

Επαλήθευση ελέγχει εάν το CNPJ είναι καταχωρημένο σε μια πραγματική εταιρεία στη βάση δεδομένων της Receita Federal. Η επαλήθευση απαιτεί ερώτημα στη βάση δεδομένων της κυβέρνησης και δεν είναι κάτι που κάνει αυτό το εργαλείο.

Μπορείτε να έχετε ένα τέλεια έγκυρο CNPJ που δεν είναι επαληθευμένο (όπως οι αριθμοί δοκιμής που παράγει αυτό το εργαλείο), ή ένα άκυρο CNPJ που ανήκει σε μια πραγματική εταιρεία (επειδή κάποιος έκανε ένα τυπογραφικό λάθος κατά την εισαγωγή).

Μπορώ να χρησιμοποιήσω παραγόμενα CNPJs για παραγωγική δοκιμή;

Εξαρτάται από το τι εννοείτε με "παραγωγική δοκιμή". Είναι εντάξει για περιβάλλοντα σταδιακής ανάπτυξης, δοκιμές φόρτωσης και προ-εκκίνησης QA. Αλλά αν "παραγωγική δοκιμή" σημαίνει δοκιμή με πραγματικές συναλλαγές, πραγματικά κυβερνητικά API ή πραγματικά οικονομικά συστήματα—τότε όχι, χρειάζεστε πραγματικά καταχωρημένα 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 ή, με κατάλληλη εξουσιοδότηση, να χρησιμοποιήσετε τα API τους για προγραμματιστική πρόσβαση.

Σημειώστε ότι η εκτεταμένη χρήση απαιτεί εγγραφή και υπάρχουν όρια ρυθμού για να αποτραπεί η κατάχρηση.

Πόσο συχνά αλλάζουν τα CNPJs;

Τα CNPJs είναι μόνιμα αναγνωριστικά που δεν αλλάζουν όταν μια εταιρεία αλλάζει όνομα, διεύθυνση ή δομή ιδιοκτησίας. Ωστόσο, αν μια εταιρεία κλείσει και αργότερα επανακαταχωρηθεί, μπορεί να λάβει ένα νέο CNPJ. Οι αριθμοί υποκαταστημάτων (το τμήμα /XXXX) μπορούν να προστεθούν καθώς οι εταιρείες ανοίγουν νέες τοποθεσίες, αλλά ο βασικός 8-ψήφιος αριθμός παραμένει σταθερός.

Παραπομπές και Πρόσθετοι Πόροι

Επίσημες Κυβερνητικές Πηγές

  1. Receita Federal do Brasil - Επίσημη Πύλη - Ο επίσημος ιστότοπος της Ομοσπονδιακής Υπηρεσίας Εσόδων της Βραζιλίας με υπηρεσίες εγγραφής και επαλήθευσης CNPJ
  2. Consulta Pública CNPJ - Δημόσια Αναζήτηση CNPJ - Επίσημη κυβερνητική υπηρεσία για επαλήθευση της κατάστασης εγγραφής CNPJ
  3. Κανονιστική Οδηγία RFB Αρ. 1863/2018 - Νομικοί κανονισμοί που διέπουν την εγγραφή και χρήση CNPJ στη Βραζιλία

Τεχνικά Πρότυπα και Τεκμηρίωση

  1. Αλγόριθμοι μοντουλικής αριθμητικής - Ο υπολογισμός του ψηφίου ελέγχου χρησιμοποιεί μοντουλική αριθμητική, μια τυπική προσέγγιση για ψηφία επικύρωσης
  2. ISO/IEC 7064 - Διεθνές πρότυπο για συστήματα ψηφίων ελέγχου που επηρέασε τον σχεδιασμό επικύρωσης εγγράφων στη Βραζιλία
  3. Βραζιλιάνικος Αστικός Κώδικας (Νόμος Αρ. 10.406/2002) - Νομικό πλαίσιο που ορίζει ταξινομήσεις επιχειρηματικών οντοτήτων που απαιτούν εγγραφή CNPJ

Πόροι Προγραμματιστών

  1. Μητρώο πακέτων NPM - npmjs.com - Αποθετήριο για βιβλιοθήκες JavaScript, συμπεριλαμβανομένων επικυρωτών βραζιλιάνικων εγγράφων
  2. PyPI (Ευρετήριο Πακέτων Python) - pypi.org - Βιβλιοθήκες Python για επικύρωση CNPJ και επεξεργασία βραζιλιάνικων εγγράφων
  3. GitHub - Υλοποιήσεις ανοικτού κώδικα επικύρωσης CNPJ σε πολλές γλώσσες προγραμματισμού

Έναρξη Δημιουργίας και Επικύρωσης CNPJs

Είτε δημιουργείτε μια βραζιλιάνικη πλατφόρμα ηλεκτρονικού εμπορίου, είτε δοκιμάζετε ενσωματώσεις πληρωμών με το Mercado Pago, ή απλώς χρειάζεστε να κατανοήσετε πώς λειτουργεί η επικύρωση CNPJ, αυτό το εργαλείο σας παρέχει άμεση πρόσβαση τόσο σε δυνατότητες δημιουργίας όσο και επικύρωσης.

Καμία εγκατάσταση, καμία κλείδα API, καμία περίπλοκη ρύθμιση. Απλώς ανοίξτε τον περιηγητή σας και ξεκινήστε να εργάζεστε με έγκυρα αναγνωριστικά βραζιλιάνικων επιχειρήσεων.