Хэрэв та WHMCS ашигладаг бол оронд нь WHMCS модулийг ашиглана уу — энэ хуудас нь бусад бүх зүйлд зориулагдсан болно. Хоёр сонголт байгаа бөгөөд хоёулаа үнэгүй бөгөөд хоёулаа GPL-2.0-or-later лицензтэй.
HostBill
WHMCS модультай адил зургаан үйлдлийг агуулсан хостинг модуль.
- Үүнийг татаж аваад задлаарай.
zinn лавлаline-ыг includes/modules/Hosting/ руу хуулж, файлуудыг
includes/modules/Hosting/zinn/class.zinn.php болон includes/modules/Hosting/zinn/ZinnHostBillClient.php байршилд оруулна.
- Тохиргоо → Модулиуд → Хостинг гэж ороод, Zinn Digital®-г идэвхжүүлж, холболт нэмнэ үү:
- API хаяг:
https://api.zinndigital.com
- API түлхүүр: таны Zinn® API түлхүүр (энэ нь
password талбар тул HostBill үүнийг шифрлэж хадгалдаг)
- Бүтээгдэхүүн дээр Бүтээгдэхүүний шугам (жишээ нь
mainstream), Стек (анхдагчаар wordpress), мөн сонголтоор Аппликейшн болон PHP хувилбар-ыг тохируулна уу.
- Холболтыг шалгах дээр дарна уу.
⛔ zinn лавлаline-ын нэрийг бүү өөрчлөөрэй. HostBill-ийн ачаалагч нь хайж буй классын нэрээ уг лавлаline-ын нэрээс үүсгэдэг тул нэрийг өөрчилбөл удирдлагын самбарт харагддаг ч хэзээ ч дуудагддаггүй модуль үүсэхэд хүрнэ.
Бусад бүх зүйл — PHP клиент
Нэг файл, ямар ч хамааралгүй, ямар ч удирдлагын самбарын шаардлагагүй. ZinnProvisioning.php файлыг өөрийн кодын санд оруулаад зургаан функцийг дуудна уу.
require_once 'ZinnProvisioning.php';
$zinn = new ZinnProvisioning(getenv('ZINN_API_KEY'));
// Захиалга төлөгдөх үед — ХАРИЛЦАГЧ тус бүрд нэг удаа, дараа нь ҮЙЛЧИЛГЭЭ тус бүрд нэг удаа:
$orgId = $zinn->account('customer-4211', 'Acme Ltd');
$siteId = $zinn->provision('service-9915', $orgId, 'acme.com', 'mainstream', 'wordpress');
// $orgId-г харилцагчийнхаа бүртгэлд, $siteId-г үйлчилгээнийхээ бүртгэлд хадгална уу.
$zinn->suspend($siteId, 'INV-2026-114 unpaid'); // нэхэмжлэх төлөгдөөгүй үед
$zinn->unsuspend($siteId); // төлбөр төлөгдөх үед
$zinn->terminate($siteId); // цуцлах үед — устгахаар товлоно
// Тэд "миний хостинг руу нэвтрэх" дээр дарах үед — хуудас ачааллахад биш, зөвхөн ДАРСАН ҮЕД уг холбоосыг үүсгэнэ үү:
header('Location: ' . $zinn->signInLink($siteId));
PHP хэл дээр бичихгүй байна уу? Ижил дуудлагууд API лавлах хэсэгт байгаа бөгөөд та тэдгээрийг дурын зүйлээс хийх боломжтой.
API түлхүүр
Долоон зөвшөөрөл, үүнээс илүүгүй: org.create, org.read, sites.create, sites.view, sites.delete, reseller.view, reseller.provision.
⛔ reseller.manage байж болохгүй. Төлбөр тооцооны самбарт оруулж буй түлхүүр нь төлбөр төлөөгүй харилцагчийг түдгэлзүүлэх, тэднийг нэвтрүүлэх чадвартай байх ёстой; энэ нь таны өөрийн төлбөрийн гарцын итгэмжлэлийг дахин бичих эрхгүй байх ёстой.
Зөрчсөн тохиолдолд санхүүгийн зардал гаргадаг хоёр дүрэм
- Бүртгэлийг ХАРИЛЦАГЧ дээр, харин сайтыг ҮЙЛЧИЛГЭЭ дээр түлхүүрлээрэй. Харилцагчийн хоёр дахь захиалга тэдний аль хэдийн үүсгэсэн бүртгэлд орох ёстой. Хоёуланг нь үйлчилгээ дээр түлхүүрлэвэл нэг харилцагч хоорондоо хамааралгүй гурван бүртгэл, гурван тусдаа удирдлагын самбартай болж дуусна.
- Үүсгэх үйлдэл бүрд тухайн зүйлийн өөрийн ID-аас үүсгэсэн идэмпотент түлхүүрийг илгээнэ үү. Төлбөрийн систем бүр дахин оролдлого хийдэг — гарцын буцаан дуудлага хоёр удаа ирэх, админ амжилтгүй болсон тохиргоог дахин ажиллуулах, харилцагч хоёр удаа дарах зэрэг тохиолдол гардаг. Үүнгүйгээр хоёр дахь оролдлого нь хоёр дахь сайтыг үүсгэж, та төлбөрөө төлөхөд хүрнэ. Хоёр модуль болон PHP клиент нь үүнийг таны өмнөөс гүйцэтгэдэг; хэрэв та API-г шууд дуудаж байгаа бол
Idempotency-Key илгээнэ үү.
Орхигдуулахад хялбар гурван талбар
Тус бүр нь бүхэл бүтэн үйлдлийг эвддэг бөгөөд эхнийхээс бусад нь зөвхөн баталгаажуулалтын алдаа болж харагддаг — харин эхнийх нь огт юу ч биш болж харагддаг:
- ⛔⛔ Харилцагчийн анхны сайтыг бэлтгэхээс ӨМНӨ түүнийг багцад оруулсан байх ёстой. Үүнийг
POST /v1/reseller/clients/{orgId}/plan хүсэлтээр гүйцэтгэх бөгөөд түүний subscription_id-г POST /v1/sites рүү дамжуулна. Энэ нь унших ямар ч алдаа гардаггүй тохиолдол юм. Шинэ харилцагчийн бүртгэлд ямар ч захиалга байдаггүй бөгөөд POST /v1/sites-д багцын талбар байхгүй тул багцгүйгээр бэлтгэгдсэн сайт нь ямар ч багцгүй болно: таны бөөний төлбөрийн хуудас нь харилцагчдын тань идэвхтэй захиалгууд дээр үндэслэн бүрддэг тул ямар ч мөр нэмэгдэхгүй бөгөөд хостинг ажиллаж байгаа хугацаанд Zinn® танаас ямар ч төлбөр авахгүй; таны харилцагч ямар ч хязгаар өвлөн авахгүй тул тэдний сайтад квот хэрэгжихгүй; мөн сайжруулалтаар өөрчлөх зүйл юу ч байхгүй болно. Захиалга 201 хариу буцааж, сайт бэлтгэгдэн, бүрэн хэвийн ажиллана. Аль ч талд энэ тухай юу ч мэдээлэгдэхгүй.
Дараалал чухал: POST /v1/sites нь ажиллах мөчид ямар захиалга байна, түүнийг л бүртгэдэг тул дараа нь тохируулсан багц нөхөн холбогдохгүй.
POST /v1/sites нь stack_type-г шаарддаг. Үүнийг орхигдуулбал ямар ч захиалга амжилттай болох боломжгүй.
DELETE /v1/sites/{siteId} нь {"confirm_domain": "<the site's own domain>"} үндсэн биеийг шаарддаг — энэ нь устгах үйлдэл тул гараар бичиж баталгаажуулах шаардлагатай. Үүнийг орхигдуулбал цуцлалт амжилттай болохгүй тул үйлчилгээ үргэлжлэн ажиллаж, танаас төлбөр авагдсаар байх болно. Өөрийн бүртгэлийг ашиглахын оронд домэйныг GET /v1/reseller/services/{siteId}-ээс буцаан уншина уу: энэ нь алиас бус зөвхөн тухайн сайтын үндсэн домэйнтэй харьцуулагддаг.
Зөвхөн өгүүлбэрийг биш, алдааг бүхэлд нь уншина уу
Шалгалтын татгалзсан мэдэгдэл нь зориуд ерөнхий байдаг — "Хүсэлт зөв бүтэцтэй байсан боловч баталгаажуулалт амжилтгүй боллоо." — учир нь бодитой ажиллах хэсэг нь тухайн талбар болон шалтгааныг нэрлэдэг details дотор байдаг. Модулиуд болон PHP клиент хоёулаа үүнийг таны админд харуулдаг мэдэгдэлд хавсаргадаг. Хэрэв та API-г өөрөө дуудаж байгаа бол error.details-ийг уншина уу; зарим бичилтүүд өгүүлбэр биш цэвэр утга агуулдаг бөгөөд таны реселлер багцад зай үлдээгүй үед max_sites: 0 ингэж танд хүрдэг.
Анхны захиалгаа өгөхөөс өмнө
Харилцагчдын тань худалдан авсан сайтууд нь таны реселлер багцын сайтын эрхээс хасагддаг тул танд сул зайтай багц шаардлагатай. Холболтын шалгалт үүнийг илрүүлж чадахгүй — энэ нь таны программыг уншиж, юу ч бэлтгэдэггүй — тиймээс борлуулалт хийх хараахан боломжгүй байгаа хэвийн бүртгэлийг тайлагнадаг. Эрх дууссан үед өгсөн захиалгаас яг энэ тухай заасан мэдэгдлээр татгалзах болно.
Татаж авсан файлаа баталгаажуулна уу
Хоёр архив хоёулаа өөр газар руу чиглүүлэгдэхгүйгээр манай өөрийн хост нэрээс TLS-ээр дамжин хүргэгддэг бөгөөд тэдгээрийн SHA-256 шалгах нийлбэрийг татаж авах хуудас дээрх татаж авах холбоосуудын хажууд хэвлэсэн болно.