আপনি আমাদের হোস্টিং রিসেল করছেন। আপনার ক্লায়েন্টরা সম্পূর্ণ আপনারই: আপনার মূল্য, আপনার ইনভয়েস, আপনার পেমেন্ট প্রোভাইডার। আপনি ইতোমধ্যে যা চালাচ্ছেন — বিলিং প্যানেল, আপনার নিজস্ব WordPress সাইট, বা কোনো স্ক্রিপ্ট — সেখান থেকেই আমাদের প্ল্যাটফর্ম কীভাবে পরিচালনা করবেন, তা এখানে দেওয়া হলো।
আপনার ক্লায়েন্টরা আসলে কী দেখতে পান
প্রক্রিয়াটির বিস্তারিত জানার আগে: আপনার ক্লায়েন্টদের কখনোই আমাদের দেখতে হবে না। তিনটি মাধ্যম রয়েছে, এবং আপনি বেছে নেবেন কোনটি ব্যবহার করবেন।
| মাধ্যম | এটি কার |
|---|
| আপনার নিজস্ব হোস্টনেমে হোস্টিং প্যানেল | রিসেলিং → আপনার ব্র্যান্ড-এর অধীনে একটি প্যানেল হোস্টনেম সেট করুন এবং আপনার ক্লায়েন্টরা আপনার লোগো ও আপনার রঙের সাথে panel.yourcompany.com-এ সাইন ইন করবেন। একই প্যানেল, কিন্তু আপনার ঠিকানা। |
| আপনার নিজস্ব ওয়েবসাইট | WordPress প্লাগইনটি আপনার সাইটে ডোমেন সার্চ এবং এক-ক্লিকে সাইন-ইন করার লিঙ্ক যুক্ত করে, এবং আপনার নিজস্ব WooCommerce চেকআউটের মাধ্যমে অর্ডার গ্রহণ করে। |
| আপনার বিলিং প্যানেল | WHMCS বা HostBill প্রধান প্রবেশদ্বার হিসেবে থাকে; মডিউলটি এর পেছনে প্রোভিশনিং সম্পন্ন করে এবং ক্লায়েন্ট-এরিয়ার বোতাম তাদের সরাসরি তাদের হোস্টিংয়ে সাইন ইন করিয়ে দেয়। |
⛔ আপনি যেটিই বেছে নিন না কেন, আপনিই আপনার ক্লায়েন্টদের জন্য মার্চেন্ট অব রেকর্ড: আপনার মূল্য, আপনার ইনভয়েস, আপনার ভ্যাট নম্বর, আপনার পেমেন্ট প্রোভাইডার। আমরা পাইকারি মূল্যে মাসে একবার আপনার কাছে বিল পাঠাই।
একবার প্যানেল হোস্টনেম সেট করার পর, এটি WordPress প্লাগইনের প্যানেল ঠিকানা ফিল্ডে বসান এবং অন্য কোথাও নয় — এই API যে সাইন-ইন লিঙ্ক তৈরি করে, তা স্বয়ংক্রিয়ভাবে এটি অনুসরণ করে।
যুক্ত হওয়ার চারটি উপায়
যুক্ত হওয়ার চারটি উপায় রয়েছে, এবং পর্দার আড়ালে সেগুলি সবই একই কাজ করে:
| যার জন্য |
|---|
| WHMCS মডিউল | একটি WHMCS শপ |
| HostBill মডিউল | একটি HostBill শপ |
| WordPress প্লাগইন | আপনার নিজস্ব WordPress বা WooCommerce সাইট থেকে বিক্রি করা |
| API | অন্য যেকোনো কিছু — Blesta, কোনো অভ্যন্তরীণ সিস্টেম, একটি ক্রন স্ক্রিপ্ট |
১. একটি API কী সংগ্রহ করুন
আপনার ড্যাশবোর্ডে, API কীসমূহ-এ যান এবং একটি তৈরি করুন। এটিকে কেবল প্রয়োজনীয় অনুমতিগুলোই দিন:
| অনুমতি | কারণ |
|---|
org.read | আপনার ক্লায়েন্ট অ্যাকাউন্টগুলো পড়তে |
sites.create | একটি সাইট প্রোভিশন করতে |
sites.view | একটি সার্ভিস দেখতে |
sites.delete | টার্মিনেট করতে |
reseller.view | আপনার সার্ভিসগুলোর তালিকা দেখতে এবং ব্যবহারের পরিমাপ পড়তে |
reseller.provision | কোনো ক্লায়েন্টকে সাসপেন্ড, রিলিজ এবং সাইন ইন করাতে |
⛔ কোনো ইন্টিগ্রেশনকে reseller.manage অনুমতি দেবেন না। এই অনুমতিটি আপনার মূল্য তালিকা এবং আপনার নিজস্ব পেমেন্ট-গেটওয়ের তথ্য সম্পাদনা করে। reseller.provision ঠিক এই কারণেই রয়েছে, যাতে বিলিং প্যানেল বা ওয়েবসাইটে পেস্ট করা কোনো কী-এর জন্য সেটির প্রয়োজন না হয়।
কী-টি কেবল একবারই দেখানো হয়। আপনার অন্যান্য গোপন তথ্যাদি যেখানে রাখেন সেখানেই এটি সংরক্ষণ করুন — এমন কোনো ফাইলে কখনোই নয় যা আপনার ওয়েব সার্ভার প্রদর্শন করতে পারে।
২. আপনার প্রথম কলটি সম্পন্ন করুন
curl https://api.zinndigital.com/v1/reseller/services \
-H "Authorization: Bearer zdk_live_…"
এটি আপনার প্রোভিশন করা প্রতিটি সার্ভিস ফিরিয়ে দেয়—প্রতি সাইটের জন্য একটি করে সারি, এটি কোন ক্লায়েন্টের অন্তর্ভুক্ত, এর স্ট্যাটাস এবং এর জন্য আপনি কত চার্জ নিচ্ছেন তা সহ। নতুন অ্যাকাউন্টের ক্ষেত্রে এটি একটি ফাঁকা তালিকা দেখায় — যা সঠিক ফলাফল, কোনো ত্রুটি নয়।
৩. সম্পূর্ণ ইন্টিগ্রেশন, ছয়টি কলে
কখন কল
অর্ডার পরিশোধ হলে POST /v1/orgs CUSTOMER প্রতি একবার
POST /v1/sites SERVICE প্রতি একবার
পরিশোধ না করলে POST /v1/reseller/services/{siteId}/suspend
পরিশোধ করলে POST /v1/reseller/services/{siteId}/unsuspend
বাতিল করলে DELETE /v1/sites/{siteId}
"হোস্টিংয়ে লগ ইন" POST /v1/reseller/services/{siteId}/sso
প্রোভিশনিং হলো দুটি কল, এবং কী-গুলো অত্যন্ত গুরুত্বপূর্ণ:
# ১. গ্রাহকের অ্যাকাউন্ট — আপনার গ্রাহক আইডি (CUSTOMER id)-র সাথে সম্পর্কিত
curl -X POST https://api.zinndigital.com/v1/orgs \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: account-4211" \
-d '{"type":"customer","name":"Acme Ltd"}'
# ২. তাদের সাইট — আপনার সার্ভিস আইডি (SERVICE id)-র সাথে সম্পর্কিত
curl -X POST https://api.zinndigital.com/v1/sites \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: service-9915" \
-d '{"org_id":"<from step 1>","product_line":"mainstream","primary_domain":"acme.com"}'
দুটি নিয়ম, যা ভুল হলে আপনাকে আর্থিক মাশুল দিতে হবে
১. অ্যাকাউন্টকে আপনার CUSTOMER-এর সাথে এবং সাইটকে আপনার SERVICE-এর সাথে সম্পর্কিত করুন। কোনো গ্রাহকের দ্বিতীয় অর্ডারটি অবশ্যই তাঁর ইতোমধ্যে থাকা অ্যাকাউন্টেই যুক্ত হতে হবে। উভয়কেই সার্ভিসের সাথে সম্পর্কিত করলে দেখা যাবে একজন গ্রাহক তিনটি অসম্পর্কিত অ্যাকাউন্ট এবং তিনটি আলাদা প্যানেল পেয়ে বসে আছেন। ২. প্রতিটি POST-এ একটি Idempotency-Key পাঠান, যা উক্ত বিষয়ের জন্য আপনার নিজস্ব আইডি থেকে তৈরি। প্রতিটি বিলিং সিস্টেম পুনরায় চেষ্টা করে (রিট্রাই করে) — গেটওয়ে কলব্যাক দুবার আসে, একজন অ্যাডমিন ব্যর্থ হওয়া প্রোভিশন পুনরায় চালু করেন, গ্রাহক দুবার ক্লিক করেন। এই কী ছাড়া দ্বিতীয় চেষ্টার ফলে একটি দ্বিতীয় সাইট তৈরি হবে এবং তার জন্য আপনাকে বিল পরিশোধ করতে হবে।
তিনটি প্রতিক্রিয়া, যা কোনোভাবেই গুলিয়ে এক করা যাবে না
unsuspend থেকে 409 প্রতিক্রিয়া আসতে পারে। এর অর্থ হলো আমাদের অ্যাবিউজ টিম সাইটটি আটকে রেখেছে, আপনি নন। বার্তাটি প্রদর্শন করুন; পুনরায় চেষ্টা করবেন না।
- টার্মিনেট করার অর্থ ডিলিট করার শিডিউল নির্ধারণ করা, এটি তাৎক্ষণিকভাবে মুছে ফেলে না। তারিখটি
pending_deletion_at হিসেবে ফিরে আসে। কোনো গ্রাহককে তাঁর ডেটা মুছে গেছে বলা, যখন তা বাস্তবে হয়নি, কিছু না বলার চেয়েও খারাপ।
disk_used_bytes কখনো null হতে পারে, এবং null মানে শূন্য নয়। এর অর্থ হলো আমরা পরিমাপ করতে পারিনি, এমন নয় যে কিছুই ব্যবহার করা হয়নি। এটি এড়িয়ে যান — আপনার নিজস্ব রেকর্ডে 0 লিখবেন না, অন্যথায় যে সাইটের কোনো রিডিং আপনার কাছে নেই তার জন্য গ্রাহককে একটি সবুজ রঙের ব্যবহারের বার দেখতে হবে।
৪. ক্লায়েন্টকে সাইন ইন করান
POST /v1/reseller/services/{siteId}/sso একটি এককালীন ব্যবহারের ইউআরএল (URL) পাঠায় যা আপনার ক্লায়েন্টকে সরাসরি তাঁর নিজস্ব অ্যাকাউন্টে নিয়ে যায়, যেখানে তিনি আগে থেকেই সাইন ইন অবস্থায় থাকেন।
⛔ তাঁরা যখন ক্লিক করবেন তখনই এটি তৈরি করুন, পেজ রেন্ডার করার সময় কখনোই নয়। লিঙ্কটি একবার ব্যবহারের জন্য এবং কয়েক মিনিটের মধ্যেই মেয়াদোত্তীর্ণ হয়ে যায়, তাই পেজের মধ্যে লেখা কোনো লিঙ্ক প্রথম পেজ ভিউতেই নষ্ট হয়ে যায় এবং আপনার ও ব্রাউজারের মধ্যবর্তী প্রতিটি ক্যাশেতে থেকে যায়।
৫. এর পরিবর্তে একটি মডিউল ইনস্টল করুন
- WHMCS — মডিউলটি
modules/servers/zinn/-এ কপি করুন, একটি সার্ভার যোগ করুন যার Password হবে আপনার API কী, এবং প্রোডাক্টের প্রোডাক্ট লাইন সেট করুন। Test Connection চাপুন: এটি একটি বাস্তব কল করে এবং প্ল্যাটফর্ম কী প্রতিক্রিয়া জানিয়েছে তা আপনাকে বলে দেয়।
- HostBill —
includes/modules/Hosting/zinn/-এ কপি করুন এবং একই পদ্ধতিতে সংযুক্ত করুন।
- WordPress — Zinn® Reseller Toolkit: ডোমেন সার্চ, ক্লায়েন্টদের হোস্টিংয়ে সাইন-ইন লিঙ্ক, এবং অর্ডার পরিশোধিত হলে WooCommerce প্রোভিশনিং। এটি ওপেন সোর্স হিসেবে রয়েছে <https://github.com/Zinn-Digital/zinn-reseller-toolkit>-এ, অথবা আপনার ড্যাশবোর্ডের প্লাগইন থেকে এটি ডাউনলোড করুন।
৬. লাইভ চালু করুন
একটি বাস্তব অর্ডার নেওয়ার আগে এগুলো যাচাই করে নিন:
- মডিউলে সংযোগ পরীক্ষা সফল হয়েছে, অথবা আপনার প্রথম
curl একটি তালিকা ফিরিয়ে দিয়েছে।
- আপনার মূল্য তালিকা সেট করা আছে (রিসেলিং → আপনার মূল্যসমূহ)।
- আপনার পেমেন্ট গেটওয়ে সংযুক্ত আছে (রিসেলিং → পেমেন্ট গেটওয়েসমূহ) — আপনার ক্লায়েন্টরা আপনাকে আপনার নিজস্ব অ্যাকাউন্টের মাধ্যমে অর্থ প্রদান করবেন।
- আপনার কোম্পানির বিবরণ দেওয়া আছে (রিসেলিং → আপনার কোম্পানি) যাতে আপনার ক্লায়েন্ট ইনভয়েসে আপনার আইনি সত্তা এবং ভ্যাট নম্বর থাকে, আমাদের নয়।
- আপনি শুরু থেকে শেষ পর্যন্ত একটি বাস্তব অর্ডার সম্পন্ন করেছেন এবং সাইটটি দৃশ্যমান হতে দেখেছেন।
বাকি সবকিছু যেখানে রয়েছে
সম্পূর্ণ API রেফারেন্স — আমাদের স্পেসিফিকেশন থেকে প্রস্তুতকৃত প্রতিটি এন্ডপয়েন্ট এবং প্রতিটির জন্য প্রয়োজনীয় অনুমতিসমূহ — রয়েছে <https://zinndigital.com/developers/api>-এ।