Агар шумо WHMCS-ро истифода баред, ба ҷои ин модули WHMCS-ро ба кор баред — ин саҳифа барои ҳама чизи дигар аст. Ду интихоб мавҷуд аст, ҳар ду ройгон ва ҳар ду GPL-2.0-or-later мебошанд.
HostBill
Модули хостинг бо ҳамон шаш амали мисли WHMCS.
- Онро боргирӣ кунед ва аз бойгонӣ кушоед.
- Директорияи
zinn-ро ба дохили includes/modules/Hosting/ боргузорӣ намоед, то ки файлҳо дар includes/modules/Hosting/zinn/class.zinn.php ва includes/modules/Hosting/zinn/ZinnHostBillClient.php ҷойгир шаванд.
- Settings → Modules → Hosting, Zinn Digital®-ро фаъол созед ва пайвастшавиро илова намоед:
- API address:
https://api.zinndigital.com
- API key: калиди API-и Zinn®-и шумо (майдони
password, бинобар ин HostBill онро рамзгузоришуда нигоҳ медорад)
- Дар маҳсулот Product line (масалан,
mainstream), Stack (ба таври пешфарз wordpress), ва ба таври ихтиёрӣ Application ва PHP version-ро танзим кунед.
- Test connection-ро пахш намоед.
⛔ Номи директорияи zinn-ро иваз накунед. Боркунандаи HostBill синферо, ки меҷӯяд, аз номи директория ба даст меорад, бинобар ин ивази ном модулеро ба вуҷуд меорад, ки панел онро дар рӯйхат нишон медиҳад, вале ҳеҷ гоҳ даъват намекунад.
Ҳар чизи дигар — муштарии PHP
Як файл, бе вобастагиҳо, бе тахминҳо оид ба панел. ZinnProvisioning.php-ро ба махзани рамзи худатон гузоред ва шаш методро даъват кунед.
require_once 'ZinnProvisioning.php';
$zinn = new ZinnProvisioning(getenv('ZINN_API_KEY'));
// When an order is paid — once per CUSTOMER, then once per SERVICE:
$orgId = $zinn->account('customer-4211', 'Acme Ltd');
$siteId = $zinn->provision('service-9915', $orgId, 'acme.com', 'mainstream', 'wordpress');
// Store $orgId against your customer and $siteId against your service.
$zinn->suspend($siteId, 'INV-2026-114 unpaid'); // an invoice goes unpaid
$zinn->unsuspend($siteId); // they pay
$zinn->terminate($siteId); // they cancel — schedules a deletion
// When they click "log in to my hosting" — mint it on the CLICK, never on page render:
header('Location: ' . $zinn->signInLink($siteId));
Бо PHP наменависед? Ҳамин даъватҳо дар API reference мавҷуданд ва шумо метавонед онҳоро аз ҳама чиз анҷом диҳед.
Калиди API
Ҳафт иҷозат ва на бештар аз он: org.create, org.read, sites.create, sites.view, sites.delete, reseller.view, reseller.provision.
⛔ На reseller.manage. Калиде, ки шумо ба панели ҳисоббаробаркунӣ мегузоред, бояд тавонад муштариро барои напардохтан боздорад ва ӯро ворид кунад; он набояд тавонад маълумоти эътимодномаи дарвозаи пардохти худи шуморо аз нав нависад.
Ду қоидае, ки ҳангоми вайрон шудан зарари пулӣ меоранд
- Ҳисобро ба CUSTOMER-и худ ва сайтро ба SERVICE-и худ вобаста намоед. Фармоиши дуюми муштарӣ бояд ба ҳисобе ворид шавад, ки ӯ аллакай дорад. Ҳар дуро ба хидмат вобаста кунед ва як муштарӣ соҳиби се ҳисоби ба ҳам алоқаманднабуда ва се панели идоракунии алоҳида мегардад.
- Ҳангоми ҳар як эҷод калиди якхелагӣ (idempotency key)-ро фиристед, ки аз идентификатори худи шумо барои он объект гирифта шудааст. Ҳар як низоми ҳисоббаробаркунӣ такроран кӯшиш мекунад — бозхонди дарвоза ду бор меояд, мудир пешниҳоди нобарорро аз нав оғоз мекунад, муштарӣ ду бор пахш менамояд. Бе он, кӯшиши дуюм сайти дуюмро эҷод мекунад ва маблағи он аз шумо ситонида мешавад. Ҳар ду модул ва муштарии 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} хонед: он бо худи номи асосии домени сомона муқоиса мешавад ва ҳеҷ гоҳ бо номи иловагӣ (alias) муқоиса намешавад.
Тамоми хаторо хонед, на танҳо ҷумларо
Паёми радди эътиборсанҷӣ қасдан умумӣ аст — "The request was well-formed but failed validation." — зеро қисми қобили амал дар details ҷойгир аст, ки майдон ва сабабро нишон медиҳад. Ҳам модулҳо ва ҳам муштарии PHP онро ба паёме, ки ба маъмури Шумо нишон медиҳанд, замима мекунанд. Агар Шумо худатон API-ро даъват кунед, error.details-ро хонед; баъзе вурудот ба ҷои як ҷумла танҳо як қиматро дар бар мегиранд, ҳамин тавр max_sites: 0 ҳангоми набудани ҷой дар нақшаи фурӯшандаи Шумо ба Шумо мерасад.
Қабл аз фармоиши аввалини Шумо
Сомонаҳое, ки мизоҷони Шумо мехаранд, ба ҳисоби имтиёзи сомонаи нақшаи фурӯшандаи Шумо дохил мешаванд, бинобар ин ба Шумо нақшае лозим аст, ки дар он ҷой мавҷуд бошад. Санҷиши пайвастшавӣ наметавонад инро муайян кунад — он барномаи Шуморо мехонад ва ҳеҷ чизро фароҳам намесозад — бинобар ин он ҳисоби солимеро хабар медиҳад, ки ҳанӯз фурӯхта наметавонад. Фармоише, ки бидуни имтиёз гузошта шудааст, бо паёме рад карда мешавад, ки маҳз ҳаминро мегӯяд.
Боргирии худро тасдиқ кунед
Ҳар ду бойгонӣ тавассути TLS аз номи мизбони худи мо пешниҳод мешаванд, ҳеҷ гоҳ ба ҷои дигар равона намешаванд, ва маблағҳои санҷишии SHA-256-и онҳо дар канори пайвандҳои боргирӣ дар саҳифаи боргириҳо чоп карда шудаанд.