CNPJ जनरेटर आणि व्हॅलिडेटर - ब्राझिलियन व्यवसाय ओळख साधन
परीक्षण किंवा ब्राझिलियन व्यवसाय ओळखपत्रांची त्वरित पडताळणी करण्यासाठी वैध CNPJ क्रमांक तयार करा. डेव्हलपर्ससाठी चेक अंक पडताळणीसह मोफत साधन जे कॅडास्ट्रो नॅशनल डा पेसोआ जुरिडिका सह काम करत आहेत.
ब्राझिलियन CNPJ जनरेटर आणि व्हॅलिडेटर
CNPJ जनरेटर
चाचणी करण्याच्या उद्देशाने वैध ब्राझिलियन CNPJ क्रमांक तयार करा.
CNPJ व्हॅलिडेटर
तपासा की ब्राझिलियन CNPJ क्रमांक वैध आहे की नाही.
साहित्यिकरण
ब्राझिलियन CNPJ क्रमांकांचे समझणे
CNPJ (कॅडास्ट्रो नॅशनल डा पेसोआ जुरिडिका) हा ब्राझिलचा कॉर्पोरेट कर ओळखपत्र आहे—14 अंकी क्रमांक जो देशातील प्रत्येक कायदेशीर व्यावसायिक संस्थेला ओळखतो. जर तुम्ही ब्राझिलच्या व्यावसायिक डेटा हाताळणाऱ्या सॉफ्टवेअर बनवत असाल, तर तुम्ही लगेच नोंदणी फॉर्म, बिले आणि API एकीकरणांमध्ये या क्रमांकांना भेटाल.
येथे हे साधन व्यावहारिक बनवणारे काय आहे: हे वास्तविक कंपनी ओळखकर्त्यांचा वापर न करता गणितीय रित्या वैध CNPJ तयार करते. जेव्हा तुम्ही 1,000 रेकॉर्ड्सच्या टेस्ट डेटाबेस सेट करत असाल किंवा 2 AM वर एखाद्या सत्यापन रूटीनचा डीबग करत असाल, तेव्हा तुम्हाला अशा CNPJ ची आवश्यकता असते जे अल्गोरिदम तपासणी पास करतात पण अचानक वास्तविक व्यवसायांशी जुळणार नाहीत. हेच हे तयार करते.
येथे तयार केलेले क्रमांक अधिकृत रेसीटा फेडेरल (ब्राझिलियन फेडरल रेव्हेन्यू सेवा) सत्यापन अल्गोरिदमचे अनुसरण करतात. त्यांच्याकडे योग्य तपासणी अंक आणि उचित स्वरूपण आहे—ते फक्त सरकारी डेटाबेसमध्ये नोंदवलेले नाहीत. त्यांना तुमच्या विकास वातावरणात अनुपालन समस्या निर्माण करणार्या चाचणी डेटा म्हणून समजा.
CNPJ म्हणजे काय आणि त्याचे महत्व काय आहे
CNPJ हा ब्राझिलचा कॉर्पोरेट ओळखकारक आहे - अमेरिकेतील EIN किंवा यूकेतील कंपनी नोंदणी क्रमांकासारखा. ब्राझिलमध्ये कायदेशीरपणे कार्यरत असलेल्या प्रत्येक व्यावसायिक संस्थेला रेसीटा फेडेरल (फेडरल महसूल सेवा) द्वारे जारी केलेला असावा लागतो.
तुम्ही CNPJ सामना कराल तेव्हा:
- पेमेंट प्रक्रिया: ब्राझिलच्या पेमेंट गेटवे द्वारे व्यापारी खात्यांसाठी CNPJ सत्यापन आवश्यक आहे
- कर अनुपालन: ब्राझिलमध्ये जारी केलेल्या प्रत्येक बिलामध्ये वैध CNPJ असणे आवश्यक आहे
- व्यवसाय नोंदणी: सरकारी यंत्रणा CNPJ चा वापर कायदेशीर संस्थांचा मागोवा घेण्यासाठी करतात
- बँकिंग कार्ये: कॉर्पोरेट खाती उघडणे किंवा आंतरराष्ट्रीय हस्तांतरण प्रक्रिया
- आयात/निर्यात: सीमाशुल्क दस्तऐवजांसाठी CNPJ सत्यापन आवश्यक आहे
- सरकारी करार: सार्वजनिक निविदा प्रणाली बोली स्वीकारण्यापूर्वी CNPJ सत्यापित करते
माझ्या ब्राझिलच्या ई-कॉमर्स प्लॅटफॉर्मवरील अनुभवानुसार, सर्वात सामान्य एकीकरण बिंदू म्हणजे चेकआउट प्रवाह जिथे वापरकर्ते कॉर्पोरेट खरेदीसाठी आपला CNPJ प्रविष्ट करतात. तुमच्या सत्यापन तर्कामध्ये फॉर्मेटिंग त्रुटी पकडणे आवश्यक आहे पेमेंट प्रोसेसर करण्यापूर्वी - अन्यथा तुम्हाला असे अपयशी व्यवहार दिसतील जे टाळले जाऊ शकले असते.
सीएनपीजे संरचना आणि स्वरूप
सीएनपीजे 14 अंकांचा असतो जो असा स्वरूपित केला जातो: XX.XXX.XXX/YYYY-ZZ
संरचनेचा तपशील:
- पहिले 8 अंक (XX.XXX.XXX): कंपनीला विशिष्टपणे दिलेला मूल नोंदणी क्रमांक
- पुढील 4 अंक (/YYYY): शाखा किंवा स्थापना ओळखकर्ता—
/0001मुख्यालय दर्शविते, तर/0002,/0003शाखा स्थानांना संदर्भित करतात - शेवटचे 2 अंक (-ZZ): वजनित अल्गोरिदमद्वारे गणित केलेले सत्यापन अंक
उदाहरण: 12.345.678/0001-95
शाखा ओळखकर्त्याबद्दल रोचक गोष्ट: जेव्हा एखादी कंपनी अनेक ठिकाणी उघडते, तेव्हा प्रत्येकाला पहिले 8 अंक समान असतात पण वेगवेगळा शाखा क्रमांक असतो. म्हणजे जर एखाद्या खुदरा साखळी मध्ये 50 दुकाने असतील, तर त्यांना /0001 ते /0050 पर्यंत संपणारे सीएनपीजे असतील, सर्वांना समान मूल क्रमांक असेल. हे ओळखणे सोपे होते की अनेक सीएनपीजे एकाच मूल संस्थेचे आहेत.
तपासणी अंक अनियमित नसतात—ते विशिष्ट वजन अनुक्रमासह मॉड्यूलस-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).
एक व्यावहारिक टीप: सर्व समान अंकांचे CNPJ (जसे 11.111.111/1111-11) स्वयंचलितपणे अवैध असतात, दुसऱ्या शब्दांत गणितीय तपासणी पास करूनही ते अवैध ठरतात. रेसीटा फेडरल स्पष्टपणे या नमुन्यांना वगळते ज्यामुळे साधी प्रकरणे टाळली जातात.
CNPJ जनरेटर आणि व्हॅलिडेटर वापरण्याचे मार्ग
टेस्ट CNPJs तयार करणे
आपल्या टेस्ट डेटाबेससाठी वैध CNPJ पाहिजे आहे? येथे कसे करावे:
- "CNPJ जनरेट करा" वर क्लिक करा
- साधन तत्काल गणितीय दृष्ट्या वैध क्रमांक तयार करते
- क्लिपबोर्डवर घेण्यासाठी "कॉपी करा" वर क्लिक करा
- आपल्या टेस्ट फॉर्म, डेटाबेस सीड्स किंवा युनिट टेस्टमध्ये पेस्ट करा
प्रत्येक जनरेट केलेला CNPJ सर्व अल्गोरिदम व्हॅलिडेशन तपासण्या पास करतो परंतु रेसीटा फेडरलमध्ये नोंदणीकृत नाही. याचा अर्थ आपण त्याचा विकासात मोकळेपणाने वापर करू शकता कारण अचानक कोणत्याही वास्तविक कंपनीचा ओळखकारक वापरण्याची चिंता नाही.
CNPJ क्रमांक व्हॅलिडेट करणे
आपल्याकडे CNPJ आहे ज्याची आपल्याला पडताळणी करायची आहे? व्हॅलिडेटर त्याचा हाताळ करतो:
- इनपुट फील्डमध्ये CNPJ पेस्ट किंवा टाइप करा
- फॉर्मेटिंगबद्दल चिंता करू नका—ते
12345678000195किंवा12.345.678/0001-95सह काम करते - "व्हॅलिडेट करा" वर क्लिक करा
- चेक अंक बरोबर आहेत की नाही याबद्दल तत्काल अभिप्राय मिळवा
व्हॅलिडेटर काय तपासते: योग्य लांबी (14 अंक), बरोबर चेक अंक गणना, आणि सर्व-समान-अंक सारख्या अवैध पॅटर्नचा अपवाद. ते काय तपासत नाही: CNPJ सरकारी डेटाबेसमध्ये नोंदणीकृत आहे की नाही—त्यासाठी थेट रेसीटा फेडरलला क्वेरी करणे आवश्यक आहे.
CNPJ जनरेटर आणि व्हॅलिडेटरचे वास्तविक जगातील वापर प्रकरण
सॉफ्टवेअर विकास आणि चाचणी
डेटाबेस बीज टाकणे: जेव्हा वास्तविक चाचणी डेटासह एक स्टेजिंग पर्यावरण सेट करत असता, आपल्याला दर्जेदार CNPJ च्या दर्जेदार डझनो किंवा शेकडो आवश्यक असतात. हस्तपाठ करून त्यांची निर्मिती करणे कठीण असते, आणि वास्तविक कंपनी ओळखकर्त्यांचा वापर करणे गोपनीयता संबंधी चिंता निर्माण करते. जनरेट केलेले CNPJ दोन्ही समस्या सोडवतात.
युनिट चाचणी काठी: आपल्या व्हॅलिडेशन फंक्शनने 00.000.000/0000-00 नाकारले पाहिजे पण 11.222.333/0001-81 स्वीकारले पाहिजे. जनरेटर असल्याने आपण लगेच वैध आणि जाणीवपूर्वक अवैध चाचणी प्रकरणे तयार करू शकता जेणेकरून आपली तर्कशुद्ध सीमा परिस्थितींना हाताळते याची पुष्टी करता येईल.
QA पुनरावृत्ती चाचणी: नोंदणी फॉर्म किंवा B2B चेकआउट प्रवाह चाचणी करताना, QA टीम्सना प्रत्येक रनसाठी ताजा चाचणी डेटा आवश्यक असतो. एक सामान्य समस्या जी मी पाहिली आहे: चाचणी पर्यावरण सारखेच 5-6 CNPJ वापरले जातात, जे काही विशिष्ट अंक पॅटर्नमध्ये येणाऱ्या बगना झाकून टाकतात.
API एकीकरण चाचणी: जर आपण PagSeguro किंवा Mercado Pago सारख्या ब्राझीलियन पेमेंट प्रोसेसर्शी एकीकरण करत असाल, तर त्यांच्या सँडबॉक्स पर्यावरणाला वैध CNPJ स्वरूप आवश्यक असते. गणित बरोबर असले पाहिजे, जरी आपण उत्पादन डेटाबेसला स्पर्श करत नसाल.
डेटा प्रक्रिया आणि व्हॅलिडेशन
आयात केलेला डेटा स्वच्छ करणे: आपल्याला 10,000 ब्राझीलियन कंपनी रेकॉर्ड्स असलेला CSV मिळाला आहे. प्रक्रिया करण्यापूर्वी, आपल्याला कोणते CNPJ अपूर्ण आहेत हे ओळखायचे आहे. त्यांना व्हॅलिडेटरमधून चालवून, टाइपो, कापणी किंवा चुकीच्या तपासणी अंकांसह नोंदी फ्लॅग केल्या जातात - डाउनस्ट्रीम डीबगिंगच्या तासांची बचत होते.
क्लायंट-बाजू फॉर्म व्हॅलिडेशन: फॉर्म सबमिशनपूर्वी अवैध CNPJ पकडणे वापरकर्ता अनुभव सुधारते. कोणीही असे नको की 20-फील्ड नोंदणी फॉर्म भरून, त्यांच्या CNPJ मध्ये दोन अंक बदलल्यामुळे सबमिशनवेळी त्रुटी मिळावी.
विश्लेषणासाठी डेटा अनामता: जेव्हा उत्पादन डेटा विश्लेषण टीम्स किंवा बाह्य भागीदारांसह शेअर करण्यासाठी तयार करत असता, आपल्याला वास्तविक CNPJ ऐवजी वैध पण बनावट CNPJ बदलावे लागतात. हे आपल्या डेटासेटमध्ये संदर्भ अखंडता राखते तर वास्तविक व्यवसाय ओळखी संरक्षित करते.
आंतरराष्ट्रीय व्यवसाय कार्यप्रणाली
ब्राझीलियन आवश्यकता समजून घेणे: जर आपण ब्राझीलियन बाजारात विस्तार करत असाल, तर आपण करारनामे, चलन आणि शिपिंग दस्तऐवजांमध्ये CNPJ आवश्यकता भेटाल. स्वरूपाशी प्रयोग करण्यासाठी साधन असल्याने आपल्या प्रणालींना काय हाताळावे लागेल हे समजते.
तृतीय-पक्ष एकीकरण तपशील: जेव्हा ब्राझीलियन SaaS प्रदात्यांच्या API दस्तऐवजाचा आढावा घेत असाल, तेव्हा पेलोड उदाहरणांमध्ये CNPJ फील्ड्स दिसतील. वैध चाचणी मूल्य जनरेट करण्यास सक्षम असल्याने आपण एकीकरणांना अधिक वेगाने प्रोटोटाइप करू शकता.
वैकल्पिक CNPJ सत्यापन दृष्टिकोन
प्रोग्रामिंग लायब्ररी
जर तुम्हाला तुमच्या अनुप्रयोग तर्कात CNPJ सत्यापन आवश्यक असेल, तर या लायब्ररी चेक अंक अल्गोरिदम अंमलात आणतात:
- JavaScript/Node.js:
cpf-cnpj-validator(130k+ साप्ताहिक डाउनलोड),validator.js(ब्राझिलियन दस्तऐवज समर्थित) - Python:
validate-docbr(CPF, CNPJ आणि इतर ब्राझिलियन दस्तऐवज सत्यापित करते),python-cnpj - PHP:
respect/validation(CNPJ नियम समाविष्ट),brazilianutils - Java:
caelum-stella(व्यापक ब्राझिलियन दस्तऐवज सत्यापन) - Ruby:
cpf_cnpjजेम
या लायब्ररी सामान्यतः बहु ब्राझिलियन दस्तऐवज प्रकारांसाठी (CPF, CNPJ, इ.) स्वरूपण, पार्सिंग आणि सत्यापन हाताळतात.
अधिकृत सत्यापन API
उत्पादन प्रणालींसाठी जे वास्तविक व्यावसायिक नोंदणी सत्यापित करू इच्छितात:
- रेसीटा फेडरल सार्वजनिक सेवा: कंसल्टा CNPJ API अधिकृत डेटाबेसविरुद्ध सत्यापन अनुमती देते (योग्य अधिकार आणि दर मर्यादा आवश्यक)
- तृतीय-पक्ष डेटा प्रदाता: सेरासा एक्सपेरियन आणि बोआ विस्टा SCPC सारख्या सेवा व्यावसायिक तपशील, नोंदणी स्थिती आणि क्रेडिट माहिती परत करणाऱ्या वाणिज्यिक API प्रदान करतात
टीप: या सेवा वास्तविक नोंदणी तपासतात, केवळ गणितीय वैधता नाही. तुम्हाला योग्य अधिकार लागतील आणि उत्पादन वापरासाठी API खर्च अपेक्षित असेल.
कोणत्या दृष्टिकोनाचा वापर करावा
हा ब्राउझर साधन वापरा जेव्हा: तुम्हाला निर्भंग स्थापित न करता त्वरित सत्यापन, डेमोसाठी चाचणी डेटा तयार करणे किंवा CNPJ सत्यापन कसे काम करते ते शिकणे आवश्यक असेल.
लायब्ररी वापरा जेव्हा: तुम्ही अनुप्रयोग तयार करत असाल ज्याला फॉर्म प्रक्रियेचा भाग म्हणून क्लायंट-बाजू किंवा सर्व्हर-बाजू सत्यापन आवश्यक असेल.
अधिकृत API वापरा जेव्हा: तुम्हाला असे सत्यापित करायचे असेल की CNPJ एक खरे, सक्रिय व्यावसायिक संस्थेशी जुळते ज्याची सध्याची नोंदणी स्थिती आहे.
तांत्रिक अंमलबजावणी तपशील
हे साधन पूर्णपणे आपल्या ब्राउझरमध्ये जावास्क्रिप्ट वापरून चालते - कोणतीही सर्व्हर विनंती नाही, कोणताही डेटा आपल्या मशीनबाहेर जात नाही. येथे अंतर्गत अल्गोरिदम कसे काम करतात याचा तपशील आहे, ज्याचा कोड आपण स्वतःच्या प्रकल्पांसाठी अनुकूलित करू शकता:
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}
29CNPJ सत्यापन अल्गोरिदम
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}
24CNPJ स्वरूपण फंक्शन
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या मूलभूत फंक्शन्स इतर प्रोग्रामिंग भाषांमध्ये समान तर्कासह अंमलात आणल्या जाऊ शकतात. येथे पायथन आणि जावामधील उदाहरणे आहेत:
पायथन अंमलबजावणी
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 केवळ चाचणी आणि विकासासाठी आहेत. ते गणितीय दृष्ट्या वैध आहेत परंतु ब्राझिलियन अधिकाऱ्यांकडे नोंदणीकृत नाहीत, याचा अर्थ:
- ✅ वापरण्यासाठी सुरक्षित: चाचणी डेटाबेस भरणे, युनिट टेस्टिंग वैधता तर्क, QA वातावरण, दस्तऐवजीकरणातील कोड उदाहरणे
- ❌ कधीही वापरू नका: कर दाखल करणे, व्यवसाय नोंदणी, करार स्वाक्षरी करणे, वास्तविक व्यवहार प्रक्रिया करणे, किंवा व्यवसाय ओळखीचे चुकीचे प्रतिनिधित्व करणे
अधिकृत हेतूंसाठी बनावट CNPJ वापरणे केवळ अनैतिक नाही—ते ब्राझिलियन कायद्याखाली बेकायदेशीर आहे आणि फसवणूक आरोपांमध्ये परिणामी होऊ शकते.
माहित असलेल्या तांत्रिक मर्यादा
यादृच्छिक उत्पादनाचे परिणाम: साधन पहिल्या 12 अंक यादृच्छिकरित्या उत्पन्न करते. रेसीटा फेडरलद्वारे जारी केलेल्या वास्तविक CNPJ नोंदणी तारीख, प्रादेशिक कार्यालय आणि व्यवसाय प्रकार संबंधित आंतरिक पॅटर्न अनुसरतात. उत्पन्न संख्या या पॅटर्नशी जुळणार नाहीत, ज्याचे परिष्कृत वैधता प्रणाली चिन्ह करू शकतात.
कोणतीही अर्थपूर्ण वैधता नाही: वैध CNPJ स्वरूप म्हणजे वैध व्यवसाय संदर्भ नाही. उदाहरणार्थ, सरकारी संस्थांना विशिष्ट CNPJ श्रेणी असतात—हा जनरेटर अचानक एक तयार करू शकतो, परंतु ते अर्थपूर्ण नसेल.
स्वरूप हाताळणी: वैधकर्ता विविध इनपुट स्वरूप स्वीकारतो (12345678000195, 12.345.678/0001-95), परंतु काही जुने सिस्टम्स अचूक स्वरूप अपेक्षित करतात. नेहमी आपल्या विशिष्ट एकीकरण आवश्यकतांसह चाचणी करा.
गोपनीयता आणि सुरक्षा
सर्व प्रक्रिया आपल्या ब्राउझरमध्ये क्लाइंट-बाजूस होतात. आपण उत्पन्न किंवा वैध केलेले कोणतेही CNPJ सर्व्हरवर पाठविले जात नाहीत, लॉग केले जात नाहीत किंवा संग्रहित केले जात नाहीत. साधन कोणतीही वैयक्तिक माहिती विनंती, हाताळणी किंवा प्रक्रिया करत नाही.
CNPJ वैधतेबद्दल वारंवार विचारले जाणारे प्रश्न
CNPJ वैधता आणि सत्यापनात काय फरक आहे?
वैधता तपासते की संख्या गणितीय दृष्ट्या बरोबर आहे—योग्य स्वरूप, बरोबर तपासणी अंक, कोणतेही अवैध पॅटर्न नाही. हे साधन वैधता करते.
सत्यापन तपासते की CNPJ रेसीटा फेडरलच्या डेटाबेसमध्ये खरोखरीच एखाद्या कंपनीसह नोंदवलेला आहे. सत्यापनासाठी सरकारी डेटाबेसला क्वेरी करणे आवश्यक असते आणि हे साधन ते करत नाही.
तुम्हाला एक पूर्णपणे वैध CNPJ असू शकतो जो सत्यापित नाही (जसे हे साधन तयार करते), किंवा एक अवैध CNPJ जो एखाद्या खरी कंपनीचा आहे (कारण कोणीतरी त्याला प्रवेश करताना टाइपो केला आहे).
मी उत्पादन चाचणीसाठी जनरेट केलेले CNPJ वापरू शकतो का?
हे त्यावर अवलंबून आहे की तुम्ही "उत्पादन चाचणी" म्हणजे काय समजता. ते स्टेजिंग वातावरण, लोड चाचणी आणि लाँच-पूर्व QA साठी ठीक आहेत. पण जर "उत्पादन चाचणी" म्हणजे खरी व्यवहारांसह, खरी सरकारी API किंवा खरी आर्थिक प्रणालींसह चाचणी करणे—तर नाही, तुम्हाला खरी नोंदणीकृत CNPJ लागतील.
एक सुरक्षित दृष्टिकोन: जनरेट केलेले CNPJ वेगळ्या चाचणी वातावरणात वापरा, नंतर उत्पादन एकीकरणांची चाचणी करताना थोड्या खरी चाचणी कंपनी CNPJ (ज्या तुम्ही नियंत्रित करता) वापरा.
वैधकर्ता 11.111.111/1111-11 का नाकारतो?
जरी सर्व समान अंकांचा CNPJ गणितीय दृष्ट्या वैध तपासणी अंक तयार करू शकतो, रेसीटा फेडरल स्पष्टपणे या पॅटर्नला वगळते. हे एक व्यावसायिक नियम आहे, गणितीय नाही. काही वैधता प्रणालींमध्ये अनुक्रमिक पॅटर्नसाठी हेच लागू होते.
हे अशाप्रकारे आहे जसे अनेक प्रणाली "password123" सारखे पासवर्ड नाकारतात, जरी ते लांबी आवश्यकता पूर्ण करतात—ते तांत्रिकदृष्ट्या वैध असले तरी व्यावहारिकदृष्ट्या स्वीकार्य नाहीत.
मी वेगवेगळ्या लोकेलमध्ये CNPJ वैधता कशी हाताळावी?
ब्राझीलच्या कंपन्या आंतरराष्ट्रीय व्यवसाय करताना कधीकधी परदेशी प्रणालींमध्ये CNPJ प्रवेश करताना फॉर्मेटिंग वर्ण काढून टाकतात. तुमच्या वैधता तर्कात तपासण्यापूर्वी अ-संख्यात्मक वर्ण काढून टाकले पाहिजेत:
1const cleanCNPJ = input.replace(/\D/g, ''); // केवळ अंक वगळून
212.345.678/0001-95, 12345678000195, आणि 12 345 678 0001 95 समान इनपुट म्हणून स्वीकारा.
CNPJ vs CPF वैधतेबद्दल काय?
CPF (कॅडास्ट्रो डी पेसोआस फिसिकास) ब्राझीलचा व्यक्तिगत कर ओळखपत्र, तर CNPJ व्यवसायांसाठी आहे. त्यांच्याकडे वेगवेगळे तपासणी अंक अल्गोरिदम आणि लांबी आहेत (CPF मध्ये 11 अंक, CNPJ मध्ये 14). जर तुम्ही ब्राझीलचे अनुप्रयोग बनवत असाल जे दोन्ही हाताळतात, तर तुम्हाला वेगवेगळ्या वैधता फंक्शन्स लागतील—जरी अनेक लायब्ररी दोन्ही स्वरूपांना समर्थन देतात.
एक सामान्य पॅटर्न: वापरकर्त्यांना एकाच फील्डमध्ये CPF किंवा CNPJ प्रवेश करू द्या, नंतर फॉर्मेटिंग वर्ण काढल्यानंतर लांबीच्या आधारे कोणता प्रकार हे शोधा.
हे परदेशी कंपन्यांसाठी काम करते का जे ब्राझीलमध्ये कार्यरत आहेत?
ब्राझीलमध्ये कार्यरत परदेशी कंपन्यांनाही रेसीटा फेडरलकडून CNPJ मिळवावे लागते. त्यांचे CNPJ घरेलू कंपन्यांसारखेच स्वरूप आणि वैधता नियम पाळतात. "परदेशी कंपनी" CNPJ स्वरूपासाठी काहीही विशेष नाही.
तथापि, परदेशी कंपन्यांना अतिरिक्त दस्तऐवज आवश्यकता आणि वेगवेगळ्या नोंदणी प्रक्रिया असू शकतात—तपशिलांसाठी एका ब्राझीलच्या व्यावसायिक वकीलाशी सल्ला घ्या.
मी CNPJ नोंदणी सत्यापित करण्यासाठी सरकारी डेटाबेसला क्वेरी करू शकतो का?
होय, रेसीटा फेडरल त्यांच्या कन्सल्टा पब्लिका CNPJ सेवेद्वारे CNPJ माहितीचे सार्वजनिक प्रवेश प्रदान करते. तुम्ही CNPJ मॅन्युअली शोधू शकता किंवा, योग्य अधिकारासह, कार्यक्रमात्मक प्रवेशासाठी त्यांच्या API वापरू शकता.
लक्षात ठेवा की जड वापरासाठी नोंदणी आवश्यक असते आणि दुरुपयोग रोखण्यासाठी दर मर्यादा आहेत.
CNPJ किती वेळा बदलतात?
CNPJ कायमचे ओळखपत्र आहेत जे कंपनीचे नाव, पत्ता किंवा मालकी संरचना बदलल्यावर बदलत नाहीत. तथापि, जर एखादी कंपनी बंद होते आणि नंतर पुन्हा नोंदणी करते, तर त्याला नवीन CNPJ मिळू शकतो. शाखा क्रमांक (.../XXXX भाग) कंपन्या नवीन ठिकाणे उघडताना जोडले जाऊ शकतात, पण आधारभूत 8-अंकी संख्या स्थिर राहते.
संदर्भ आणि अतिरिक्त संसाधने
अधिकृत सरकारी स्रोत
- रेसीटा फेडरल डो ब्राझील - अधिकृत पोर्टल - ब्राझीलच्या संघीय महसूल सेवेचे अधिकृत संकेतस्थळ सीएनपीजे नोंदणी आणि सत्यापन सेवांसह
- कन्सल्टा पब्लिका सीएनपीजे - सार्वजनिक सीएनपीजे शोध - सीएनपीजे नोंदणी स्थिती सत्यापित करण्यासाठी अधिकृत सरकारी सेवा
- नॉर्मेटिव्ह इंस्ट्रक्शन आरएफबी क्र. १८६३/२०१८ - ब्राझीलमध्ये सीएनपीजे नोंदणी आणि वापरास लागू कायदेशीर नियमन
तांत्रिक मानके आणि दस्तऐवजीकरण
- मॉड्युलर अंकगणित ॲल्गोरिदम - चेक अंक गणनेत मॉड्युलो ११ अंकगणित वापरले जाते, जो सत्यापन अंकांसाठी एक मानक दृष्टिकोन आहे
- आयएसओ/आयईसी ७०६४ - चेक अंक प्रणालींसाठी आंतरराष्ट्रीय मानक ज्याने ब्राझीलच्या दस्तऐवज सत्यापन डिझाइनला प्रभावित केले
- ब्राझीलचा सिव्हिल कोड (कायदा क्र. १०.४०६/२००२) - व्यावसायिक संस्था वर्गीकरण परिभाषित करणारा कायदेशीर फ्रेमवर्क ज्यास सीएनपीजे नोंदणी आवश्यक आहे
डेव्हलपर संसाधने
- एनपीएम पॅकेज रजिस्ट्री - npmjs.com - जावास्क्रिप्ट लायब्ररीज संग्रह ज्यामध्ये ब्राझीलचे दस्तऐवज सत्यापक समाविष्ट आहेत
- पायपाय (पायथन पॅकेज इंडेक्स) - pypi.org - सीएनपीजे सत्यापन आणि ब्राझीलचे दस्तऐवज प्रक्रिया करण्यासाठी पायथन लायब्ररी
- गिटहब - बहुतेक प्रोग्रामिंग भाषांमध्ये सीएनपीजे सत्यापनाची ओपन-सोर्स अंमलबजावणी
CNPJ जनरेट आणि वैध करणे सुरू करा
तुम्ही ब्राझिलियन ई-कॉमर्स प्लॅटफॉर्म तयार करत असाल, मर्कॅडो पागो सह पेमेंट इंटिग्रेशन्स तपासत असाल, किंवा CNPJ वैधता कशी काम करते ते समजून घेत असाल, तर हे साधन तुम्हाला जनरेशन आणि वैधता क्षमता तत्काल उपलब्ध करून देते.
कोणतीही इंस्टॉलेशन नाही, कोणतीही API किल्ली नाही, कोणताही जटिल सेटअप नाही. फक्त तुमचा ब्राउझर उघडा आणि वैध ब्राझिलियन व्यावसायिक ओळखकर्त्यांसह काम करणे सुरू करा.