সিএনপিজে জেনারেটর এবং ভ্যালিডেটর - ব্রাজিলিয়ান ব্যবসায়িক আইডি টুল
পরীক্ষা বা ব্রাজিলিয়ান ব্যবসায়িক আইডি অবিলম্বে যাচাই করার জন্য বৈধ সিএনপিজে নম্বর তৈরি করুন। ক্যাডাস্ট্রো নাসিওনাল দা পেসোয়া জুরিডিকা সহ ডেভেলপারদের জন্য বিনামূল্যে টুল যা চেক ডিজিট যাচাইকরণ করে।
ব্রাজিলিয়ান সিএনপিজে জেনারেটর এবং ভ্যালিডেটর
সিএনপিজে জেনারেটর
পরীক্ষার উদ্দেশ্যে একটি বৈধ ব্রাজিলিয়ান সিএনপিজে নম্বর তৈরি করুন।
সিএনপিজে ভ্যালিডেটর
পরীক্ষা করুন যে ব্রাজিলিয়ান সিএনপিজে নম্বরটি বৈধ কিনা।
ডকুমেন্টেশন
ব্রাজিলীয় CNPJ নম্বর বোঝা
CNPJ (ক্যাডাস্ট্রো নাসিওনাল দা পেসোয়া জুরিডিকা) হল ব্রাজিলের কর্পোরেট ট্যাক্স আইডি—একটি 14-সংখ্যার নম্বর যা দেশের প্রতিটি আইনি ব্যবসায়িক সত্তাকে সনাক্ত করে। আপনি যদি ব্রাজিলীয় ব্যবসায়িক ডেটা পরিচালনা করে এমন সফটওয়্যার তৈরি করছেন, তাহলে আপনি দ্রুত নিবন্ধন ফর্ম, চালানপত্র এবং API ইন্টিগ্রেশনে এই নম্বরগুলি দেখতে পাবেন।
এই টুলটি ব্যবহারযোগ্য করে তোলে: এটি বাস্তব কোম্পানি সনাক্তকারী ব্যবহার না করে গাণিতিকভাবে বৈধ CNPJ তৈরি করে। যখন আপনি 1,000 রেকর্ডের একটি পরীক্ষার ডেটাবেস সেট আপ করছেন বা রাত 2 টায় একটি বৈধতা রুটিন ডিবাগ করছেন, আপনার এমন CNPJ প্রয়োজন যা অ্যালগরিদমিক পরীক্ষা পাস করে কিন্তু আসল ব্যবসায়ের সাথে মিলে যায় না। এটি ঠিক তাই তৈরি করে।
এখানে তৈরি সংখ্যাগুলি আনুষ্ঠানিক রেসিটা ফেডেরাল (ব্রাজিলীয় ফেডারাল রেভেনিউ সার্ভিস) বৈধতা অ্যালগরিদম অনুসরণ করে। এগুলোর সঠিক চেক ডিজিট এবং সঠিক ফরম্যাটিং রয়েছে—শুধুমাত্র সরকারি ডেটাবেসে নিবন্ধিত নয়। এটিকে বিবেচনা করুন একটি সিনট্যাক্টিকভাবে সঠিক পরীক্ষার ডেটা যা আপনার ডেভেলপমেন্ট পরিবেশে কোনো সামঞ্জস্যতা সমস্যা তৈরি করবে না।
CNPJ কী এবং এর গুরুত্ব
CNPJ হল ব্রাজিলের কর্পোরেট পরিচয়কারী—যেটি মার্কিন যুক্তরাষ্ট্রের EIN বা যুক্তরাজ্যের কোম্পানি রেজিস্ট্রেশন নম্বরের মতো। ব্রাজিলে আইনসঙ্গতভাবে পরিচালিত প্রতিটি ব্যবসা প্রতিষ্ঠানকে রেসিটা ফেডেরাল (ফেডারাল রেভেন্যু সার্ভিস) কর্তৃক জারিকৃত CNPJ থাকতে হবে।
আপনি CNPJ-এর সাথে যখন দেখা করবেন:
- পেমেন্ট প্রক্রিয়াকরণ: ব্রাজিলের পেমেন্ট গেটওয়ে মার্চেন্ট অ্যাকাউন্টের জন্য CNPJ যাচাইকরণ প্রয়োজন
- কর সম্মতি: ব্রাজিলে প্রতিটি চালানে একটি বৈধ CNPJ থাকতে হবে
- ব্যবসা নিবন্ধন: সরকারি সংস্থাগুলি সিস্টেমের মধ্যে আইনি সত্তাগুলি ট্র্যাক করতে CNPJ ব্যবহার করে
- ব্যাংকিং কার্যক্রম: কর্পোরেট অ্যাকাউন্ট খোলা বা আন্তর্জাতিক ট্রান্সফার প্রক্রিয়াকরণ
- আমদানি/রপ্তানি: মিত্রাক্ষর দলিলে CNPJ যাচাইকরণ প্রয়োজন
- সরকারি চুক্তি: সরকারি টেন্ডার সিস্টেম দরপত্র গ্রহণের আগে CNPJ যাচাই করে
ব্রাজিলীয় ই-কমার্স প্ল্যাটফর্মগুলির সাথে কাজ করার অভিজ্ঞতায়, সবচেয়ে সাধারণ ইন্টিগ্রেশন পয়েন্ট হল চেকআউট প্রবাহ যেখানে ব্যবহারকারীরা কর্পোরেট ক্রয়ের জন্য তাদের CNPJ প্রবেশ করে। আপনার যাচাইকরণ লজিকটিকে পেমেন্ট প্রসেসর করার আগে ফর্ম্যাটিং ত্রুটিগুলি ধরতে হবে—অন্যথায় আপনি এমন ব্যর্থ লেনদেন দেখতে পাবেন যা প্রতিরোধ করা যেত।
সিএনপিজে (CNPJ) কাঠামো এবং ফরম্যাট
একটি সিএনপিজে ১৪ সংখ্যার সমন্বয়ে গঠিত যা এভাবে বিন্যস্ত: XX.XXX.XXX/YYYY-ZZ
কাঠামোর বিশ্লেষণ:
- প্রথম ৮ সংখ্যা (XX.XXX.XXX): কোম্পানিকে অনন্যভাবে বরাদ্দকৃত মৌল নিবন্ধন নম্বর
- পরবর্তী ৪ সংখ্যা (/YYYY): শাখা বা প্রতিষ্ঠান সনাক্তকারী—
/0001মূল কার্যালয় নির্দেশ করে, যেখানে/0002,/0003শাখা অবস্থানগুলিকে প্রতিনিধিত্ব করে - শেষ ২ সংখ্যা (-ZZ): একটি ওজন যুক্ত অ্যালগরিদমের মাধ্যমে গণিত যাচাইকরণ সংখ্যা
উদাহরণ: 12.345.678/0001-95
শাখা সনাক্তকারী সম্পর্কে আকর্ষণীয় তথ্য: যখন একটি কোম্পানি বহু অবস্থান খোলে, প্রত্যেকটি একই প্রথম ৮ সংখ্যা পায় কিন্তু আলাদা শাখা নম্বর। সুতরাং যদি একটি খুচরা বাণিজ্য শৃঙ্খলে ৫০টি দোকান থাকে, তাদের সিএনপিজে /0001 থেকে /0050 পর্যন্ত শেষ হবে, সকলেই একই মৌল নম্বর ভাগ করে নেবে। এটি সহজে বোঝা যায় যে বিভিন্ন সিএনপিজে একই মূল সংগঠনের অন্তর্ভুক্ত।
যাচাইকরণ সংখ্যা এলোমেলো নয়—এগুলি একটি নির্দিষ্ট ওজন ক্রমের সঙ্গে মডুলাস-১১ অ্যালগরিদমের মাধ্যমে গণিত। এই ডিজাইন পছন্দ, যা ব্রাজিলীয় প্রশাসনিক নথিতে সাধারণ, গণিতিকভাবে বৈধ সংখ্যা জালিয়াতি বা টাইপো মাধ্যমে বৈধ সংখ্যা তৈরি করা কঠিন করে তোলে।
CNPJ বৈধকরণ কীভাবে কাজ করে
বৈধকরণ অ্যালগরিদম একটি ওজন যুক্ত মডুলাস-১১ গণনা ব্যবহার করে। এখানে এর তর্ক আছে:
প্রথম চেক ডিজিট গণনা
- প্রথম ১২ ডিজিট নিন এবং ওজন দ্বারা গুণ করুন:
5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 - সমস্ত গুণফলের যোগ করুন
- যোগফল ১১ দ্বারা ভাগ করে ভাগশেষ পান
- যদি ভাগশেষ < ২ হয়, তাহলে চেক ডিজিট হল ০; অন্যথায় এটি হল
11 - ভাগশেষ
দ্বিতীয় চেক ডিজিট গণনা
- প্রথম ১৩ ডিজিট (প্রথম চেক ডিজিট সহ) নিন এবং ওজন দ্বারা গুণ করুন:
6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 - সমস্ত গুণফলের যোগ করুন
- ১১ দ্বারা ভাগ করে ভাগশেষ পান
- যদি ভাগশেষ < ২ হয়, তাহলে চেক ডিজিট হল ০; অন্যথায় এটি হল
11 - ভাগশেষ
এই পদ্ধতি কেন কাজ করে: ওজন যুক্ত গুণন পদ্ধতি সমস্ত ১২ মূল ডিজিট এবং ফলাফল চেক ডিজিটের মধ্যে একটি অনন্য সম্পর্ক তৈরি করে। মূল সংখ্যার একটি ডিজিটও পরিবর্তন করলে ভিন্ন চেক ডিজিট তৈরি হয়, যা সাধারণ প্রতিলিপি ত্রুটি যেমন দুটি ডিজিট বিনিময় (টাইপ করা 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 জেনারেটর এবং ভ্যালিডেটরের বাস্তব ব্যবহার ক্ষেত্রসমূহ
সফটওয়্যার ডেভেলপমেন্ট এবং পরীক্ষণ
ডাটাবেজ সীডিং: যখন রিয়েলিস্টিক টেস্ট ডাটা সহ একটি স্টেজিং পরিবেশ সেট আপ করছেন, আপনার দশ বা শতভাগ বৈধ CNPJs প্রয়োজন। ম্যানুয়ালি এগুলি তৈরি করা ক্লান্তিকর, এবং বাস্তব কোম্পানি পরিচয়কারী ব্যবহার করলে গোপনীয়তা সমস্যা তৈরি হয়। জেনারেট করা CNPJs উভয় সমস্যা সমাধান করে।
ইউনিট টেস্টিংয়ের সীমান্ত ক্ষেত্রসমূহ: আপনার ভ্যালিডেশন ফাংশনটি 00.000.000/0000-00 প্রত্যাখ্যান করবে কিন্তু 11.222.333/0001-81 গ্রহণ করবে। একটি জেনারেটর থাকলে আপনি দ্রুত বৈধ এবং ইচ্ছাকৃতভাবে অবৈধ টেস্ট কেসগুলি তৈরি করতে পারবেন যাতে আপনি নিশ্চিত করতে পারেন যে আপনার যুক্তি সীমান্ত অবস্থাগুলি সঠিকভাবে পরিচালনা করে।
QA রিগ্রেশন পরীক্ষণ: রেজিস্ট্রেশন ফর্ম বা B2B চেকআউট প্রবাহ পরীক্ষা করার সময়, QA দল প্রত্যেক রানের জন্য নতুন টেস্ট ডাটা প্রয়োজন। একটি সাধারণ সমস্যা যা আমি দেখেছি: টেস্ট পরিবেশগুলি বারবার ব্যবহৃত একই 5-6 CNPJs দ্বারা দূষিত হয়, যা এমন বাগগুলিকে আড়াল করে যা শুধুমাত্র নির্দিষ্ট অঙ্ক প্যাটার্নগুলির সাথে প্রকাশ পায়।
API ইন্টিগ্রেশন পরীক্ষণ: যদি আপনি PagSeguro বা Mercado Pago এর মতো ব্রাজিলিয়ান পেমেন্ট প্রসেসরগুলির সাথে ইন্টিগ্রেট করছেন, তাদের স্যান্ডবক্স পরিবেশগুলিতে প্রায়শই বৈধ CNPJ ফরম্যাটিংয়ের প্রয়োজন হয়। গণিত সঠিক হতে হবে যদিও আপনি উৎপাদন ডাটাবেসগুলিতে হিট করছেন না।
ডাটা প্রসেসিং এবং ভ্যালিডেশন
আমদানি করা ডাটা পরিষ্কার করা: আপনি 10,000 ব্রাজিলিয়ান কোম্পানি রেকর্ড সহ CSV পেয়েছেন। প্রসেসিংয়ের আগে, আপনার জানা দরকার কোন CNPJs বিকৃত। ভ্যালিডেটরের মাধ্যমে চালিয়ে টাইপো, ট্রাঙ্কেশন, বা ভুল চেক অঙ্কগুলি সহ এন্ট্রিগুলিকে চিহ্নিত করা হবে - ডাউনস্ট্রিম ডিবাগিংয়ে ঘণ্টা বাঁচাচ্ছে।
ক্লায়েন্ট-সাইড ফর্ম ভ্যালিডেশন: ফর্ম জমা দেওয়ার আগে অবৈধ CNPJs ধরা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। কেউ 20-ক্ষেত্রের রেজিস্ট্রেশন ফর্ম পূরণ করতে চায় না শুধুমাত্র তারপর একটি ত্রুটি পেতে যাবে কারণ তারা তাদের CNPJ-এ দুটি অঙ্ক বিনিময় করেছে।
বিশ্লেষণের জন্য ডাটা বেনামী করা: যখন বিশ্লেষণ দলগুলি বা বাহ্যিক অংশীদারদের সাথে ব্যবহার করার জন্য উৎপাদন ডাটা প্রস্তুত করছেন, আপনার বাস্তব CNPJs কে বৈধ কিন্তু ভুয়ো CNPJs দ্বারা প্রতিস্থাপন করতে হবে। এটি আপনার ডাটাসেটে রেফারেনশিয়াল সত্যতা বজায় রাখে যখন বাস্তব ব্যবসায়িক পরিচয়গুলিকে সুরক্ষিত করে।
আন্তর্জাতিক ব্যবসায়িক কার্যক্রম
ব্রাজিলিয়ান প্রয়োজনীয়তা বোঝা: যদি আপনি ব্রাজিলিয়ান বাজারে প্রসারিত হন, আপনি চুক্তি, চালানপত্র এবং শিপিংয়ের নথিতে CNPJ প্রয়োজনীয়তার সাথে সাক্ষাৎ করবেন। ফরম্যাটটি পরীক্ষা করার জন্য একটি টুল থাকা আপনার সিস্টেমগুলিকে কী পরিচালনা করতে হবে তা বুঝতে সাহায্য করে।
তৃতীয়-পক্ষ ইন্টিগ্রেশন বিশেষাবলী: ব্রাজিলিয়ান SaaS প্রদানকারীদের API নথিতে পর্যালোচনা করার সময়, আপনি প্রায়শই পেলোড উদাহরণগুলিতে CNPJ ক্ষেত্রগুলি দেখতে পাবেন। বৈধ পরীক্ষা মানগুলি তৈরি করতে সক্ষম হওয়া আপনাকে ইন্টিগ্রেশনগুলি দ্রুত প্রোটোটাইপ করতে সাহায্য করে।
বিকল্প CNPJ যাচাইকরণ পদ্ধতিসমূহ
প্রোগ্রামিং লাইব্রেরি
আপনার অ্যাপ্লিকেশন লজিকে CNPJ যাচাইকরণ প্রয়োজন হলে, এই লাইব্রেরিগুলি চেক ডিজিট অ্যালগরিদম বাস্তবায়ন করে:
- JavaScript/Node.js:
cpf-cnpj-validator(১৩০ক+ সাপ্তাহিক ডাউনলোড),validator.js(ব্রাজিলীয় নথি সমর্থন করে) - Python:
validate-docbr(CPF, CNPJ এবং অন্যান্য ব্রাজিলীয় নথি যাচাই করে),python-cnpj - PHP:
respect/validation(CNPJ নিয়ম অন্তর্ভুক্ত),brazilianutils - Java:
caelum-stella(সম্পূর্ণ ব্রাজিলীয় নথি যাচাইকরণ) - Ruby:
cpf_cnpjজেম
এই লাইব্রেরিগুলি সাধারণত বহু ব্রাজিলীয় নথি প্রকারের (CPF, CNPJ ইত্যাদি) ফর্ম্যাটিং, পার্সিং এবং যাচাইকরণ পরিচালনা করে।
আনুষ্ঠানিক যাচাইকরণ API
উৎপাদন সিস্টেমের জন্য যা প্রকৃত ব্যবসায়িক নিবন্ধন যাচাই করতে চায়:
- রেসিটা ফেডেরাল পাবলিক সার্ভিস: Consulta CNPJ API আনুষ্ঠানিক ডাটাবেসের বিপরীতে যাচাইকরণ অনুমোদন করে (সঠিক অনুমোদন এবং হার সীমাবদ্ধতা প্রয়োজন)
- তৃতীয়-পক্ষ তথ্য সরবরাহকারী: Serasa Experian এবং Boa Vista 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 গাণিতিক নিয়মের অনুসারে "বানান" করা সঠিক কিনা, কিন্তু এটি বলতে পারে না যে সংখ্যাটি একটি বাস্তব, সক্রিয় ব্যবসায়িক সত্তার সাথে মেলে।
আইনগত এবং নৈতিক ব্যবহার
জেনারেট করা CNPJs শুধুমাত্র পরীক্ষা এবং উন্নয়নের জন্য। এগুলি গাণিতিকভাবে বৈধ কিন্তু ব্রাজিলীয় কর্তৃপক্ষের সাথে নিবন্ধিত নয়, যার অর্থ:
- ✅ ব্যবহার করা যাবে: পরীক্ষার ডাটাবেস পূরণ, ইউনিট টেস্টিং যাচাইকরণ লজিক, QA পরিবেশ, ডকুমেন্টেশনে কোড উদাহরণ
- ❌ কখনও ব্যবহার করবেন না: কর দাখিল, ব্যবসা নিবন্ধন, চুক্তি স্বাক্ষর, বাস্তব লেনদেন প্রক্রিয়াকরণ, অথবা ব্যবসার পরিচয় মিথ্যা করা
ব্যবহার করা ভুয়া CNPJ আনুষ্ঠানিক উদ্দেশ্যে শুধুমাত্র অনৈতিক নয়—এটি ব্রাজিলীয় আইনের অধীনে অবৈধ এবং প়্যাঞ্চাতিক চার্জ হতে পারে।
জানা দরকার তাৎপর্যপূর্ণ সীমাবদ্ধতা
এলোমেলো জেনারেশনের প্রভাব: টুলটি প্রথম ১২ ডিজিট এলোমেলোভাবে জেনারেট করে। রিসেইটা ফেডেরাল দ্বারা ইস্যুকৃত বাস্তব CNPJs অভ্যন্তরীণ প্যাটার্ন অনুসরণ করে যা নিবন্ধনের তারিখ, আঞ্চলিক অফিস, এবং ব্যবসার ধরন সম্পর্কিত। জেনারেট করা সংখ্যাগুলি এই প্যাটার্নগুলির সাথে মেলে না, যা পরিশিষ্ট যাচাইকরণ সিস্টেম চিহ্নিত করতে পারে।
কোন সেমান্টিক যাচাইকরণ নেই: বৈধ CNPJ ফরম্যাট বলে বৈধ ব্যবসার সন্দর্ভ নয়। উদাহরণস্বরূপ, সরকারি সত্তাগুলির নির্দিষ্ট CNPJ পরিসর রয়েছে—এই জেনারেটর সম্ভবত একটি তৈরি করতে পারে, কিন্তু এটি অর্থবহ হবে না।
ফরম্যাট হ্যান্ডলিং: ভ্যালিডেটর বিভিন্ন ইনপুট ফরম্যাট গ্রহণ করে (12345678000195, 12.345.678/0001-95), কিন্তু কিছু পুরোনো সিস্টেম সঠিক ফরম্যাটের প্রত্যাশা করে। সর্বদা আপনার নির্দিষ্ট ইন্টিগ্রেশন প্রয়োজনীয়তার সাথে পরীক্ষা করুন।
গোপনীয়তা এবং নিরাপত্তা
সমস্ত প্রক্রিয়াকরণ আপনার ব্রাউজারে ক্লায়েন্ট-সাইডে হয়। আপনি যে CNPJs জেনারেট বা যাচাই করেন তা সার্ভারে পাঠানো হয় না, লগ করা হয় না, বা সংরক্ষিত করা হয় না। টুলটি কোন ব্যক্তিগত তথ্য অনুরোধ, পরিচালনা, বা প্রক্রিয়া করে না।
সাধারণ জিজ্ঞাসা 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 বনাম CPF ভ্যালিডেশন সম্পর্কে কী?
CPF (ব্যক্তিগত কর আইডি) ব্রাজিলের ব্যক্তিগত কর আইডি, যেখানে CNPJ ব্যবসার জন্য। তারা ভিন্ন চেক ডিজিট অ্যালগরিদম এবং দৈর্ঘ্য ব্যবহার করে (CPF-এ 11 ডিজিট, CNPJ-এ 14)। যদি আপনি ব্রাজিলীয় অ্যাপ তৈরি করছেন যা উভয় ফরম্যাট পরিচালনা করে, তাহলে আপনার আলাদা ভ্যালিডেশন ফাংশন প্রয়োজন—যদিও অনেক লাইব্রেরি উভয় ফরম্যাটকে সমর্থন করে।
একটি সাধারণ প্যাটার্ন: ব্যবহারকারীকে CPF বা CNPJ একই ক্ষেত্রে প্রবেশ করতে দিন, তারপর ফরম্যাটিং অক্ষর সরিয়ে দৈর্ঘ্যের ভিত্তিতে কোন ধরনের তা সনাক্ত করুন।
এটি ব্রাজিলে কাজ করা বিদেশী কোম্পানিদের জন্য কাজ করে?
ব্রাজিলে কাজ করা বিদেশী কোম্পানিদেরও রেসিটা ফেডেরাল থেকে CNPJ পেতে হবে। তাদের CNPJ-গুলি দেশীয় কোম্পানিদের মতো একই ফরম্যাট এবং ভ্যালিডেশন নিয়ম অনুসরণ করে। "বিদেশী কোম্পানি" CNPJ-এর কোনো বিশেষ ফরম্যাট নেই।
তবে, বিদেশী কোম্পানিদের অতিরিক্ত ডকুমেন্টেশন প্রয়োজনীয়তা এবং ভিন্ন নিবন্ধন প্রক্রিয়া থাকতে পারে—বিশেষ বিবরণের জন্য একজন ব্রাজিলীয় ব্যবসায়িক আইনজীবীর সাথে পরামর্শ করুন।
আমি CNPJ নিবন্ধন ভেরিফাই করতে সরকারী ডাটাবেসে কোয়েরি করতে পারি?
হ্যাঁ, রেসিটা ফেডেরাল তাদের পাবলিক CNPJ কনসাল্টেশন পরিষেবার মাধ্যমে CNPJ তথ্য ভেরিফাই করার জন্য সর্বজনীন অ্যাক্সেস প্রদান করে। আপনি ম্যানুয়ালি CNPJ খুঁজে পেতে পারেন বা উপযুক্ত অনুমোদনের সাথে তাদের API-গুলি প্রোগ্রামাটিক অ্যাক্সেসের জন্য ব্যবহার করতে পারেন।
দ্রষ্টব্য যে ভারী ব্যবহারের জন্য নিবন্ধন প্রয়োজন এবং অপব্যবহার রোধের জন্য রেট সীমা রয়েছে।
CNPJ কতবার পরিবর্তন হয়?
CNPJ স্থায়ী সনাক্তকরণ যা কোম্পানির নাম, ঠিকানা বা মালিকানা পরিবর্তন হলে পরিবর্তিত হয় না। যাইহোক, যদি একটি কোম্পানি বন্ধ হয় এবং পরে আবার নিবন্ধন করে, তাহলে এটি নতুন CNPJ পেতে পারে। শাখা সংখ্যা (/XXXX অংশ) কোম্পানি নতুন অবস্থান খুলে দিলে যোগ করা যেতে পারে, কিন্তু মৌল 8-ডিজিটের সংখ্যা অপরিবর্তিত থাকে।
রেফারেন্স এবং অতিরিক্ত সংস্থান
সরকারি সূত্রসমূহ
- রেসিটা ফেডেরাল দো ব্রাজিল - অফিসিয়াল পোর্টাল - ব্রাজিলীয় ফেডারাল রেভেনিউ সার্ভিসের অফিসিয়াল ওয়েবসাইট CNPJ নিবন্ধন এবং যাচাইকরণ পরিষেবার সঙ্গে
- কনসুল্টা পাবলিকা CNPJ - পাবলিক CNPJ লুকআপ - CNPJ নিবন্ধন স্থিতি যাচাই করার জন্য সরকারি পরিষেবা
- নির্দেশিকা নির্দেশ RFB নং ১৮৬৩/২০১৮ - ব্রাজিলে CNPJ নিবন্ধন এবং ব্যবহার নিয়ন্ত্রণকারী আইনি বিধিসমূহ
প্রযুক্তিগত মান এবং নথিপত্র
- মডুলার পাইকা অ্যালগরিদম - চেক ডিজিট গণনা ব্যবহার করে মডুলো ১১ পাইকা, যাচাইকরণ ডিজিটের জন্য একটি মানক পদ্ধতি
- ISO/IEC ৭০৬৪ - চেক ডিজিট সিস্টেমের জন্য আন্তর্জাতিক মান যা ব্রাজিলীয় নথি যাচাইকরণ ডিজাইনকে প্রভাবিত করেছে
- ব্রাজিলীয় সিভিল কোড (আইন নং ১০.৪০৬/২০০২) - CNPJ নিবন্ধন প্রয়োজন এমন ব্যবসায়িক সত্তা শ্রেণীবিভাগ সংজ্ঞায়িত আইনি কাঠামো
ডেভেলপার সংস্থান
- NPM প্যাকেজ রেজিস্ট্রি - npmjs.com - ব্রাজিলীয় নথি যাচাইকারকসহ জাভাস্ক্রিপ্ট লাইব্রেরি সংগ্রহ
- PyPI (পাইথন প্যাকেজ ইনডেক্স) - pypi.org - CNPJ যাচাইকরণ এবং ব্রাজিলীয় নথি প্রক্রিয়াকরণের জন্য পাইথন লাইব্রেরি
- GitHub - বিভিন্ন প্রোগ্রামিং ভাষায় CNPJ যাচাইকরণের ওপেন-সোর্স বাস্তবায়ন
CNPJ তৈরি এবং যাচাই করা শুরু করুন
আপনি যদি একটি ব্রাজিলিয়ান ই-কমার্স প্ল্যাটফর্ম তৈরি করছেন, মার্কাডো পাগো-র সাথে পেমেন্ট ইন্টিগ্রেশন পরীক্ষা করছেন, অথবা শুধুমাত্র CNPJ যাচাই প্রক্রিয়া বুঝতে চাইছেন, এই টুল আপনাকে তাৎক্ষণিকভাবে তৈরি এবং যাচাই করার সুযোগ দেয়।
কোনো ইনস্টলেশন, কোনো API কী, কোনো জটিল সেটআপ নেই। শুধু আপনার ব্রাউজার খুলুন এবং বৈধ ব্রাজিলিয়ান ব্যবসায়িক পরিচয়কারী সনাক্তকরণ সরঞ্জাম ব্যবহার করা শুরু করুন।