নলেজ বেস

WHMCS থেকে Zinn® হোস্টিং বিক্রি করুন

WHMCS-এ ফ্রি Zinn Digital প্রভিশনিং মডিউল ইনস্টল করুন: API কী এবং এর প্রয়োজনীয় সাতটি অনুমতি, মডিউল ডিরেক্টরি কোথায় রাখতে হবে এবং কেন এর নাম গুরুত্বপূর্ণ, প্রোডাক্ট ফিল্ডগুলো এবং প্রতিটি WHMCS বোতাম আসলে কী করে।

Zinn Digital® মডিউলটি WHMCS-এর নিজস্ব বোতামগুলোকে আমাদের প্ল্যাটফর্মে প্রকৃত কার্যক্রমে রূপান্তরিত করে। একটি অর্ডার আপনার ক্লায়েন্টের হোস্টিং প্রভিশন করে। WHMCS-এর ওভারডি-ইনভয়েস অটোমেশন এটি সাসপেন্ড করে। ইনভয়েস পরিশোধিত হিসেবে চিহ্নিত করা হলে এটি রিলিজ হয়। বাতিল করার ফলে এটি ডিলিট করার সময়সূচি নির্ধারিত হয়। এবং আপনার ক্লায়েন্ট তাদের ক্লায়েন্ট এরিয়াতে একটি Log in to hosting panel বোতাম পান যা সরাসরি তাদের সাইটে লগইন করিয়ে দেয়।

এটি বিনামূল্যে পাওয়া যায়, GPL-2.0-or-later লাইসেন্সযুক্ত এবং আমাদের প্ল্যাটফর্মে প্রবেশের কোনো বিশেষ সুবিধা নেই: এটি যে সমস্ত কল করে তা প্রতিটিই নথিবদ্ধ এন্ডপয়েন্ট যা আপনি নিজের এপিআই কি (API key) দিয়ে নিজে করতে পারেন।

শুরু করার আগে

আপনার দুটি জিনিস প্রয়োজন, এবং দ্বিতীয় বিষয়টি অনেকেই বুঝতে ভুল করেন।

  1. একটি সক্রিয় প্রোগ্রামসহ Zinn® রিসেলার অ্যাকাউন্ট। zinndigital.com-এ সাইন আপ করুন এবং রিসেলিং চালু করুন।
  2. সাইট অ্যালাউন্সসহ একটি রিসেলার প্ল্যান। আপনার ক্লায়েন্টরা যে সাইটগুলোর অর্ডার দেন তা আপনার প্ল্যান থেকে কেটে নেওয়া হয়, তাই আপনার এমন একটি প্ল্যান প্রয়োজন যাতে পর্যাপ্ত জায়গা থাকে।

⚠️ টেস্ট কানেকশন (Test Connection) আপনাকে বলতে পারে না যে কোনো অর্ডার সফল হবে কি না। এটি আপনার প্রোগ্রাম রিড করে এবং কোনো কিছু প্রভিশন করে না, তাই এটি একটি সুস্থ active অ্যাকাউন্ট রিপোর্ট করে যা এখনও কিছু বিক্রি করতে পারে না। যদি আপনার প্রথম অর্ডারটি "This organization has no hosting plan, so it cannot host a site yet" ত্রুটির কারণে ব্যর্থ হয়, তবে ঠিক এই কারণেই তা ঘটেছে — আপনার রিসেলার প্ল্যান কিনুন বা মেয়াদ বাড়ান এবং আবার অর্ডার দিন। মডিউলে কোনো সমস্যা নেই।

১. এপিআই কি (API key) তৈরি করুন

আপনার Zinn® ড্যাশবোর্ডে, API keys খুলুন এবং ঠিক এই এগারোটি পারমিশনসহ একটি তৈরি করুন:

| পারমিশন | কেন এটি প্রয়োজন | | -------------------- | ----------------------------------------------------------- | | org.create | প্রথম অর্ডারে আপনার ক্লায়েন্টের Zinn® অ্যাকাউন্ট খুলুন। | | org.read | আপনার ক্লায়েন্ট অ্যাকাউন্টগুলো রিড করুন। | | sites.create | সাইট প্রভিশন করুন। | | sites.view | একটি সার্ভিস এবং এর ব্যবহার রিড করুন। | | sites.delete | সমাপ্ত করুন। | | reseller.view | আপনি কী বিক্রি করেছেন তার তালিকা তৈরি করুন এবং ডিস্ক ও ব্যান্ডউইথ রিড করুন। | | reseller.provision | সাসপেন্ড করুন, রিলিজ করুন, ক্লায়েন্টকে সাইন ইন করান, তাদের প্ল্যান সেট করুন এবং তাদের প্যাকেজ পরিবর্তন করুন। | | billing.view | কোনো আপগ্রেড করার আগে এর খরচ কত হবে তা রিড করুন। | | sites.manage | বোতাম থেকে ক্যাশ পার্জ করুন এবং ব্যাকআপ নিন। | | sites.panel_access | WordPress অ্যাডমিনিস্ট্রেটরের পাসওয়ার্ড পরিবর্তন করুন। | | hosting.php.manage | আপগ্রেড বা ডাউনগ্রেডের সময় পিএইচপি (PHP) সংস্করণ পরিবর্তন করুন। |

reseller.manage পারমিশন দেবেন না। বিলিং প্যানেলে পেস্ট করা কোনো কি (key)-এর উচিত অর্থ প্রদানের ব্যর্থতার কারণে ক্লায়েন্টকে আটকে রাখা এবং তাদের সাইন ইন করানো। এটি আপনার নিজের পেমেন্ট-গেটওয়ে শংসাপত্রগুলো রিড এবং রিরাইট করতে সক্ষম হওয়া উচিত নয়। বড় পারমিশনটি যেন দিতে না হয় সেজন্যই reseller.provision রয়েছে। ⛔ org.create ঐচ্ছিক নয়। এটি ছাড়া মডিউলটি আপনার অ্যাকাউন্টগুলো রিড করতে পারে কিন্তু কোনো অ্যাকাউন্ট খুলতে পারে না, তাই টেস্ট কানেকশন সফল হয় এবং প্রথম অর্ডার 403 ত্রুটি দেখায়। ⛔⛔ সম্পূর্ণ টেবিলটির পারমিশন দিন এবং মনে রাখবেন যে আপনার তা না থাকলে টেস্ট কানেকশন তা ধরতে পারে না। এটি আপনার রিসেলার প্রোগ্রাম রিড করে এবং কোনো কিছু প্রভিশন করে না, তাই এই পারমিশনগুলোর কোনোটি অনুপস্থিত থাকলেও একটি কি (key)-এর জন্য এটি সবুজ দেখায়। পরিবর্তে যা ঘটে তা হলো মাসখানেক পরে একজন গ্রাহকের ক্ষেত্রে অনুপস্থিত পারমিশনের অপারেশনটিতে একটি 403 ত্রুটি দেখা দেয়।

২. মডিউল ইনস্টল করুন

  1. মডিউল ডাউনলোড করুন এবং এর জিপ ফাইল আনজিপ করুন।
  2. WHMCS ইনস্টলেশনে zinn ডিরেক্টরি আপলোড করুন যাতে মডিউল ফাইলটি modules/servers/zinn/zinn.php-এ পৌঁছায়।

ডিরেক্টরিটির নাম অবশ্যই zinn হতে হবে। WHMCS এর ডিরেক্টরির নাম থেকে প্রভিশনিং মডিউলের ফাংশনের নাম নির্ধারণ করে, তাই এর নাম পরিবর্তন করে zinn-whmcs বা zinndigital করলে এমন একটি মডিউল তৈরি হয় যা WHMCS তালিকাভুক্ত করে, আপনাকে নির্বাচন করতে দেয়, কিন্তু কোনো ত্রুটি না দেখিয়েও কখনই তা কল করে না। জিপ ফাইলটি আগে থেকেই সঠিক নামে আনপ্যাক হয়; তাই এর নাম পরিবর্তন করবেন না।

৩. সার্ভার যোগ করুন

WHMCS-এ যান: Configuration → System Settings → Servers → Add New Server

  • Name: যেকোনো নাম, যেমন Zinn Digital®
  • Hostname: api.zinndigital.com
  • Type: Zinn Digital®
  • Password: ধাপ ১ থেকে প্রাপ্ত আপনার এপিআই কি (API key)

⛔ কি (key)-টি Password ফিল্ডে দিতে হবে, যা WHMCS এনক্রিপ্ট করে সংরক্ষণ করে। এটি কোনো প্রোডাক্ট কনফিগারেশন অপশনে রাখবেন না — এগুলো ডাটাবেজে প্লেইন টেক্সট হিসেবে থাকে এবং প্রতিটি অ্যাডমিনের কাছে দৃশ্যমান হয়, আর এই শংসাপত্রটি আপনার ক্লায়েন্টদের হোস্টিং তৈরি ও ধ্বংস করতে পারে।

Test Connection-এ প্রেস করুন। এটি ফিল্ডগুলো পূরণ করা হয়েছে কি না তা পরীক্ষা করার পরিবর্তে একটি প্রকৃত কল করে এবং আমাদের প্ল্যাটফর্ম কী প্রতিক্রিয়া জানিয়েছে তা রিপোর্ট করে।

৪. প্রোডাক্ট তৈরি করুন

Configuration → System Settings → Products/Services-এ যান, তারপর Module Settings-কে আপনার এইমাত্র যোগ করা সার্ভারে সেট করুন। ফিল্ডগুলো হলো:

| ফিল্ড | আবশ্যক | এটি কী | | ---------------- | -------- | -------------------------------------------------------------------------- | | Product line | হ্যাঁ | আপনি যে Zinn® লাইন বিক্রি করছেন — mainstream (managed WordPress), footprint_free, wordpress, linux, cloud, agency, app_hosting, ai_hosting, lms_hosting, managed_database, vector_hosting, zinn_compute, fleet_linux, fleet_enterprise, mail অথবা reseller। | | Stack | হ্যাঁ | যা তৈরি করা হয়: wordpress (ডিফল্ট), woocommerce, php, static, node, one_click, headless_cms, nextcloud অথবা owncloud। | | Application | না | শুধুমাত্র one_click এবং headless_cms স্ট্যাকের জন্য — কোন অ্যাপ্লিকেশন ইনস্টল করতে হবে। অন্য কোনো স্ট্যাকে এর নাম দিলে তা প্রত্যাখ্যান করা হবে, কারণ সেই স্ট্যাকটি আগেই নির্ধারণ করে যে কী ইনস্টল করা হবে। | | PHP version | না | যেমন 8.3। লাইনের ডিফল্টের জন্য এটি খালি রাখুন। লাইনটি অফার করে না এমন কোনো সংস্করণ দিলে তা প্রত্যাখ্যাত হবে এবং যে সংস্করণগুলো উপলব্ধ তার তালিকা দেখানো হবে। | | Plan code | হ্যাঁ | Zinn® প্ল্যান যা এই প্রোডাক্টটি বিক্রি করে। GET /v1/reseller/prices কমান্ড আপনারগুলো তালিকাভুক্ত করে। এটি ছাড়া দেওয়া যেকোনো অর্ডার প্রত্যাখ্যাত হবে — নিচের সতর্কতা দেখুন। | | Billing interval | না | monthly (ডিফল্ট) অথবা annual — যে ইন্টারভেলে এই ক্লায়েন্টের জন্য আপনার হোলসেল লাইন বিল করা হয়। আপনি আপনার নিজের ক্লায়েন্টের কাছ থেকে কত চার্জ করবেন তা WHMCS প্রোডাক্টে সেট করা হয় এবং এতে কোনো প্রভাব পড়ে না। |

⛔⛔ প্ল্যান কোড আবশ্যক এবং এটি ছাড়া দেওয়া কোনো অর্ডার ইচ্ছাকৃতভাবে প্রত্যাখ্যান করা হয়। ২০২৬-০৯-০১ তারিখের আগে এই ফিল্ডটি কেবল সাজসজ্জার জন্য ছিল এবং কেউ এটি রিড করত না, তাই মডিউলটি এমন হোস্টিং অর্ডার করত যাতে কোনো প্ল্যানই ছিল না — এবং এর প্রতিটি পরিণতি ছিল নীরব। আপনার হোলসেল স্টেটমেন্টটি আপনার ক্লায়েন্টদের লাইভ সাবস্ক্রিপশন থেকে তৈরি হয়, তাই সার্ভিসের জন্য কোনো লাইন ছিল না এবং যতদিন এটি চলেছে আপনার কোনো বিল করা হয়নি; আপনার ক্লায়েন্ট কোনো অ্যালাউন্স পাননি, তাই তাদের সাইটে কোনো ডিস্ক বা ফাইল কোটা প্রয়োগ করা হয়নি; এবং Change Package-এর পরিবর্তন করার মতো কিছুই ছিল না, তাই আপনি যে আপগ্রেড বিক্রি করেছেন তা সম্পন্ন করা যায়নি। সাইটটি পুরো সময় ধরে নিখুঁতভাবে প্রভিশন এবং পরিবেশন করা হয়েছিল।

মডিউলটি এখন এর পরিবর্তে অর্ডারটি প্রত্যাখ্যান করে, কারণ অনুমান করার মতো কোনো নিরাপদ প্ল্যান নেই: অনুমান করলে এমন একটি প্ল্যানে হোস্টিং প্রভিশন হবে যা আপনি বেছে নেননি এবং যার মূল্য নির্ধারণ নাও করে থাকতে পারেন, এবং — একটি প্রত্যাখ্যানের বিপরীতে, যা আপনি অবিলম্বে দেখতে পান — এটি শুধুমাত্র তখনই সামনে আসত যখন কোনো স্টেটমেন্ট এসে পৌঁছাত, যদি আসতও।

আপনার পছন্দের যেকোনোটিতে Auto Setup সেট করুন — মডিউলটি WHMCS সার্ভিস আইডির সাপেক্ষে আইডেমপোটেন্ট (idempotent), তাই রিট্রাই করা প্রভিশন দ্বিতীয়বার বিল করার পরিবর্তে একই সাইট রিটার্ন করে।

প্রতিটি WHMCS অ্যাকশন যা করে

| WHMCS অ্যাকশন | আমাদের সাইটে যা ঘটে | | --------------------------- | ---------------------------------------------------------------------------------------- | | Create | ক্লায়েন্টের Zinn® অ্যাকাউন্ট তৈরি করে (অথবা তাদের ইতিমধ্যে থাকা অ্যাকাউন্টটি পুনরায় ব্যবহার করে) এবং তাদের সাইট প্রভিশন করে। | | Suspend | সাইটটিকে পেমেন্ট না করার কারণে হোল্ডে রাখে। কন্টেন্ট সংরক্ষিত থাকে; কিছুই ডিলিট করা হয় না। | | Unsuspend | আপনার দেওয়া হোল্ড রিলিজ করে। | | Terminate | গ্রেস পিরিয়ডসহ সাইট ডিলিট করার সময়সূচি নির্ধারণ করে। তারিখটি ক্লায়েন্ট এরিয়াতে দেখা যায়। | | Usage update | দিনে একবার প্রতিটি সার্ভিসের ডিস্ক এবং ব্যান্ডউইথ রিফ্রেশ করে। | | Log in to hosting panel | সরাসরি আপনার ক্লায়েন্টের প্যানেলে যাওয়ার জন্য একটি এককালীন, একক ব্যবহারের সাইন-ইন লিঙ্ক খোলে। | | Change Package | সার্ভিস আপগ্রেড বা ডাউনগ্রেড করে। প্যাকেজ এবং নতুন প্রোডাক্টে কোনো পিএইচপি (PHP) সংস্করণ উল্লেখ থাকলে তা পরিবর্তন করে। | | Change Password | WordPress অ্যাডমিনিস্ট্রেটরের পাসওয়ার্ড সেট করে। এই ধরনের অ্যাকাউন্ট নেই এমন স্ট্যাকে এই বক্সটি প্রদর্শিত হয় না। | | Renew | সার্ভিসটি এখনও বিদ্যমান তা নিশ্চিত করে। Zinn® হোস্টিং একটানা চলে, তাই বাড়ানোর জন্য কোনো রিমোট টার্ম নেই। | | Sync Usage / Purge Cache / Take Backup | অ্যাডমিন সার্ভিস পেজের বোতাম। আপনার ক্লায়েন্ট তাদের ক্লায়েন্ট এরিয়াতে Purge Cache এবং Take Backup পান। | | Service tab | স্ট্যাটাস, প্ল্যান, ডিস্ক, ব্যান্ডউইথ, যেকোনো নির্ধারিত ডিলিট এবং কে সাসপেনশন দিয়েছেন তা দেখায়। | | Import | ListAccounts প্রতিটি পেজ রিড করে, ফলে কোনো ইমপোর্ট নীরবে প্রথম পেজে গিয়ে থেমে যায় না। |

আপগ্রেড: কে কার কাছ থেকে চার্জ করে

অর্ডারে বা আপগ্রেডে Zinn® দ্বারা আপনার ক্লায়েন্টকে কখনো বিল করা হয় না। আপনি WHMCS-এর মাধ্যমে তাদের বিল করেন; আমরা আপনার হোলসেল স্টেটমেন্টে আপনাকে বিল করি। সুতরাং, Change Package আপনার ক্লায়েন্টের এনটাইটেলমেন্ট এবং আপনার পরবর্তী স্টেটমেন্টের লাইনটি পরিবর্তন করে, এবং কোনো কার্ড স্পর্শ করে না — WHMCS ইতিমধ্যে আপনার ক্লায়েন্টের কাছ থেকে অর্থ সংগ্রহ করেছে এবং এর নিজস্ব প্রোরাশন (proration) হিসাব করেছে।

একজন ক্লায়েন্টের দ্বিতীয় সার্ভিস। একই প্ল্যানে এটি সেই প্ল্যানের নিজস্ব সাইট অ্যালাউন্সের অধীনে আরেকটি সাইট, এবং এর বেশি আর কিছু দেওয়া হয় না। একটি ভিন্ন প্ল্যানে এটি প্রত্যাখ্যাত হয়: লাইভ প্ল্যান প্রতিস্থাপন করলে দুটি সার্ভিসের একটির বিল করা যাবে না। হয় একই প্ল্যানে দুটোই বিক্রি করুন, অথবা WHMCS-এ ক্লায়েন্টকে একটি পৃথক ক্লায়েন্ট রেকর্ড হিসেবে সেটআপ করুন।

Change Password শুধুমাত্র WordPress-এর জন্য বিদ্যমান। Zinn® হোস্টিংয়ে কোনো একক "সার্ভিস পাসওয়ার্ড" নেই — আপনার ক্লায়েন্ট সাইন-ইন বোতাম দিয়ে তাদের প্যানেলে পৌঁছান — এবং একটি php বা static সাইটে পরিবর্তন করার মতো কোনো অ্যাপ্লিকেশন অ্যাকাউন্ট নেই। কাজ করতে পারে না এমন একটি বক্স দেখানোর চেয়ে WHMCS এই বক্সটি সম্পূর্ণ লুকিয়ে রাখে।

তিনটি উত্তর যা আপনি দুটিতে নামিয়ে আনতে পারবেন না

  • Unsuspend-এর উত্তর হিসেবে প্রত্যাখ্যান আসতে পারে। এর অর্থ হলো সাইটটি আপনার দ্বারা নয়, আমাদের অপব্যবহার (abuse) রোধকারী দল দ্বারা সাসপেন্ড করা হয়েছিল এবং কোনো বিলিং প্যানেল এটি রিলিজ করতে পারবে না। বার্তাটিতে তাই বলা হয়েছে; এটি আবার চেষ্টা করার পরিবর্তে আপনার অ্যাডমিনকে দেখান।
  • Terminate একটি ডিলিট করার সময়সূচি নির্ধারণ করে, এটি নিজে থেকে ডিলিট সম্পন্ন করে না। তারিখটি pending_deletion_at হিসেবে ফিরে আসে এবং ক্লায়েন্ট এরিয়া এটি প্রদর্শন করে। কোনো গ্রাহককে তাদের ডেটা চলে গেছে বলে জানানো, যখন আসলে তা যায়নি, তা তাদের কিছুই না জানানোর চেয়েও খারাপ।
  • ডিস্ক এবং ব্যান্ডউইথ অজানা হতে পারে, এবং অজানা মানে শূন্য নয়। যখন আমরা কোনো রিডিং নিতে পারি না তখন মডিউলটি 0 লেখার পরিবর্তে সংখ্যাটি অপরিবর্তিত রাখে — অন্যথায় WHMCS আপনার গ্রাহককে এমন একটি সাইটের জন্য একটি আশ্বস্তকারী খালি ব্যবহারের বার দেখাত যেখানকার কোনো রিডিং আমাদের কাছে নেই।

সমস্যা সমাধান (Troubleshooting)

টেস্ট কানেকশন সফল হয় এবং প্রথম অর্ডার পারমিশন ত্রুটির কারণে ব্যর্থ হয়। এপিআই কি (API key)-তে org.create অনুপস্থিত রয়েছে। সাইট তৈরি করার আগে মডিউলটিকে অবশ্যই ক্লায়েন্টের অ্যাকাউন্ট খুলতে হবে।

সংগঠনের কোনো হোস্টিং প্ল্যান নেই এই মর্মে একটি অর্ডার ব্যর্থ হয়। আপনার রিসেলার প্ল্যানে কোনো সাইট অ্যালাউন্স বাকি নেই, অথবা আপনার কাছে এখনও কোনো প্ল্যান নেই। উপরের শুরু করার আগে অংশটি দেখুন।

স্ট্যাক উল্লেখ করার কারণে একটি অর্ডার ব্যর্থ হয়। প্রোডাক্টের Stack ফিল্ডটি খালি রয়েছে অথবা এমন কিছুর নাম দিচ্ছে যা আমরা তৈরি করি না। আপনি যদি অন্য কিছু বিক্রি না করে থাকেন তবে এটি wordpress-এ সেট করুন।

বাতিলকরণগুলো ব্যর্থ হচ্ছে। নিশ্চিত করুন যে আপনি মডিউল সংস্করণ 1.0.0 বা তার পরবর্তী সংস্করণে আছেন। পূর্ববর্তী বিল্ডগুলো কোনো ডিলিট করার নিশ্চিতকরণ পাঠাত না এবং প্রতিটি সমাপ্তি প্রত্যাখ্যাত হতো, যার ফলে সার্ভিসটি সচল থাকত এবং বিল তৈরি হতো।

একটি প্রত্যাখ্যান যা একটি ফিল্ডের নাম নির্দেশ করে। আমাদের ভ্যালিডেশন ত্রুটিগুলোতে বার্তার পরে বন্ধনীতে ফিল্ডের নাম এবং কারণ উল্লেখ থাকে, যেমন (php_version: 7.2 এই প্রোডাক্ট লাইনে অফার করা হয় না)। এটি হলো কার্যকর অংশ — এর সামনের বাক্যটি উদ্দেশ্যপ্রণোদিতভাবে জেনেরিক।

আপনার ডাউনলোড যাচাই করুন

প্রতিটি আর্কাইভ আমাদের নিজস্ব হোস্টনেম থেকে TLS-এর মাধ্যমে পরিবেশিত হয় এবং কখনোই কোনো থার্ড-পার্টি হোস্টে রিডাইরেক্ট করা হয় না। এর SHA-256 চেকসাম ডাউনলোড পেজ-এ ডাউনলোড লিঙ্কের পাশে প্রিন্ট করা থাকে। ডাউনলোড করার পর এটি তুলনা করুন:

  • macOS বা Linux: shasum -a 256 zinn-whmcs-1.0.0.zip
  • Windows: certutil -hashfile zinn-whmcs-1.0.0.zip SHA256

WHMCS ব্যবহার করছেন না?

অন্য যেকোনো বিষয়ের জন্য একটি HostBill মডিউল এবং একটি একক ফাইলের পিএইচপি (PHP) ক্লায়েন্ট রয়েছে, উভয়ই বিনামূল্যে এবং একই ডাউনলোড পেজ-এ পাওয়া যায়। মডিউলগুলো যে সমস্ত এন্ডপয়েন্ট ব্যবহার করে তার প্রতিটি API reference-এ রয়েছে।

এখনও আটকে আছেন?

প্রতিটি প্ল্যানেই সহায়তা অন্তর্ভুক্ত রয়েছে এবং আপনার নিজের ভাষাতেই উত্তর দেওয়া হয়।

সহায়তার জন্য যোগাযোগ করুন সব নিবন্ধ
WHMCS থেকে Zinn® হোস্টিং বিক্রি করুন