Ilé ìmọ̀
Ta Ìgbékalẹ Zinn® lati HostBill, Blesta, ti ara rẹ tabi eto rẹ
Ta ibi-ipamọ Zinn lati HostBill, Blesta tabi eto ti tirẹ: module HostBill ọfẹ, alabara PHP faili kan, awọn ofin meji ti o jẹ owo nigbati a ba fọ wọn, ati awọn aaye ibeere meji ti o rọrun lati fi silẹ.
Tí o bá n lo WHMCS, lo mọdulu WHMCS dipò ẹ - ojúewé yìí wà fun ohun gbogbo mìíràn. Àwọn àṣàyàn méjì ló wà, àwọn méjèèjì jẹ́ ọ̀fẹ́ àti GPL-2.0-or-later.
HostBill
Mọdulu gbígba àlejò tí ó ní àwọn ìgbésẹ̀ mẹ́fà kannáà pẹ̀lú ti WHMCS.
- Gba a sílẹ̀ kí o sì ṣí i kúrò nínú zip.
- Tẹ foṣíọ̀
zinnsí àárínincludes/modules/Hosting/kí àwọn fáìlì náà le balẹ̀ sí - Àwọn ìtòsọ́nà → Àwọn mọdulu → Gbígba àlejò, mú Zinn Digital® ṣiṣẹ́, kí o sì fi ìsopọ̀ pọ̀:
includes/modules/Hosting/zinn/class.zinn.php àti includes/modules/Hosting/zinn/ZinnHostBillClient.php.
- Àdírẹ́sì API:
https://api.zinndigital.com - Bọ́tìnì API: bọ́tìnì API Zinn® yín (pápá
passwordkan, kí HostBill le tọ́jú rẹ̀ pẹ̀lú ààbò kọ́dì)
- Lori ọjà náà, tò Làpapọ̀ ọjà (àpẹẹrẹ
mainstream), Agbéga (wordpressní - Tẹ Dán ìsopọ̀ wò.
ìbẹ̀rẹ̀), àti lọ́fẹ́ Agbara ìṣẹ́ àti Àyípadà PHP.
⛔ Ẹ má ṣe yí orúkọ foṣíọ̀
zinnpadà. Olùgbéde ti HostBill n rí kíláàsì tí ó n wá láti orúkọ foṣíọ̀ náà, nítorí náà àyípadà orúkọ n mu mọdulu tí àpapọ̀ ń fi hàn ṣùgbọ́n tí kò ní pè láéláé.
Ohun gbogbo mìíràn — kílẹ́ǹtì PHP
Fáìlì kan, kò sí àwọn ohun àgbáralé, kò sí àwọn ìfura àpapọ̀. So ZinnProvisioning.php pọ̀ mọ́ kọ́dì yín kí o sì pè àwọn ọ̀nà mẹ́fà.
require_once 'ZinnProvisioning.php';
$zinn = new ZinnProvisioning(getenv('ZINN_API_KEY'));
// Nígbà tí a bá san owó ìbóderi — ẹ̀kan fún ÀBÀ PẸ̀LÚ ÒNÙWÒ, lẹ́yìn náà ẹ̀kan fún ÌṢẸ̀ṢẸ̀:
$orgId = $zinn->account('customer-4211', 'Acme Ltd');
$siteId = $zinn->provision('service-9915', $orgId, 'acme.com', 'mainstream', 'wordpress');
// Tọ́jú $orgId sí kọ̀ǹpútà oníbàárà yín àti $siteId sí kọ̀ǹpútà ìṣẹ́ yín.
$zinn->suspend($siteId, 'INV-2026-114 unpaid'); // àpèjúwe owó tí kò jẹ́ sísan
$zinn->unsuspend($siteId); // wọ́n san owó
$zinn->terminate($siteId); // wọ́n fagi dropì — ṣètò ìparẹ́
// Nígbà tí wọ́n bá tẹ̀ "wọlé sí gbígba àlejò mi" — ṣe é lórí ÌTẸ̀ NÁÀ, ẹ má ṣe ṣe é lórí àfihàn ojúewé:
header('Location: ' . $zinn->signInLink($siteId));
Ṣé ẹ kò kọ PHP? Àwọn ìpè kannáà wà nínú Ìtọ́kasí API ẹ sì le ṣe wọ́n láti ohun gbogbo.
Bọ́tìnì API
Àwọn ìyọ̀ǹda mẹ́je, àti kò sí síwájú sí i: org.create, org.read, sites.create, sites.view, sites.delete, reseller.view, reseller.provision.
⛔ Kì í ṣe
reseller.manage. Bọ́tìnì tí ẹ glẹ́mú sí pákó ìsánwó gbọ́dọ̀ le mú oníbàárà fún àìsánwó kí o sì mu wọ́n wọlé; kò gbọ́dọ̀ le kọ àwọn ẹrí ìsánwó tirẹ̀ padà.
Àwọn òfin méjì tí ń na owó nígbà tí wọ́n bá bàjẹ́
- Fi bọ́tìnì akọọ́lẹ̀ sí ONÍBÀÁRÀ yín, àti ayélujára sí ÌṢẸ̀ṢẸ̀ yín. Ìbóderi keji ti oníbàárà
- Rán bọ́tìnì idempotency lórí gbogbo ìṣẹ̀dá, tí ó wá láti id tirẹ̀ fún ohun náà. Gbogbo
gbọ́dọ̀ bọ́ sí akọọ́lẹ̀ tí wọ́n ti ní tẹ́lẹ̀. Fi bọ́tìnì méjèèjì sí ìṣẹ́ náà kí oníbàárà kan ba àkọsílẹ̀ méjì mọ́ àwọn akọọ́lẹ̀ mẹ́ta tí kò tan àti pákó ìdarí mẹ́ta tí ó yàtọ̀.
ìtòsọ́nà ìsánwó ń gbé àyẹ̀wò padà — ìpadàbọ̀ ìsánwó gbé wọlé lẹ́ẹ̀mejì, olùdarí ń tún ìṣẹ́ tí ó kùnà ṣe, oníbàárà ń tẹ̀ ẹ́ lẹ́ẹ̀mejì. Àìsí rẹ̀ mu kí ìgbìyànjú keji ṣe àyè keji pẹ̀lú bí a ṣe ń gba owó fún yín. Àwọn mọdulu méjèèjì àti kílẹ́ǹtì PHP ń ṣe èyí fún yín; tí ẹ bá ń pè API náà tààrà, rán Idempotency-Key.
Àwọn pápá mẹ́ta tí ó rọrùn fún fífò da nù
Ọ̀pọ̀lọpọ̀ wọn ń bà ọ̀rọ̀ iṣẹ́ jẹ́, kò sí ọ̀kan nínú wọn tí ń fi ohun kan hàn bí kò ṣe àṣìṣe ìmúdájú — àfi èyí àkọ́kọ́, tí ń fi ohun kankan hàn rárá:
- ⛔⛔ A gbọ́dọ̀ fi oníbàárà sí àtòjọ kí ó tó ṣe àyè wọn àkọ́kọ́, pẹ̀lú
POST /v1/reseller/clients/{orgId}/plan, àti subscription_id rẹ̀ tí a gbé lọ sí POST /v1/sites. Èyí ni èyí tí kò sí àṣìṣe láti kà. Akọọ́lẹ̀ oníbàárà tuntun kò ní àbábọ̀ kankan àti POST /v1/sites kò ní pápá àtòjọ, nítorí náà àyè tí a ṣe láìsí ọ̀kan gbé kò sí àtòjọ rárá: àkọsílẹ̀ àsìkò yín ti wà láti àwọn àbábọ̀ alààyè ti àwọn oníbàárà yín, nítorí náà kò sí ìlà tí a mu wá àti Zinn® kò kà owó fún yín fún gbogbo ìgbà tí gbígba àlejò ń lọ; oníbàárà yín kò ní àwọn ìyọ̀ǹda, nítorí náà kò sí ààlà tí a fi sí àyè wọn; àti kò sí ohun fún àyípadà láti yí padà. Ìbóderi náà gbé 201 padà, àyè náà ń ṣiṣẹ́, àti pé ó ń ṣiṣẹ́ lọ́nà tí ó dára púpọ̀. Kò sí ohun nínú àwọn ìpẹ̀kun méjèèjì tí ń sọ fún ohun kankan.
Àṣẹ náà ṣe pàtàkì: POST /v1/sites ń ṣàkọsílẹ̀ àbábọ̀ yókòó nínú àkókò tí ó ń ṣiṣẹ́, nítorí náà àtòjọ tí a tò lẹ́yìn na kò ní sọ pọ̀ mọ́ tẹ́lẹ̀.
POST /v1/sitesń fẹ́stack_type. Fò ó da nù kí kò sí ìbóderi tí ó le ṣe àṣeyọrí.- **
DELETE /v1/sites/{siteId}ń fẹ́ ara `{"confirm_domain": "<the site's own
domain>"}** — ìmúdájú tí a kọ, nítorí èyí ni ọ̀rọ̀ iṣẹ́ tí ń skpa ohun gbogbo. Fò ó da nù kí kò sí ìfagilé tí ó le ṣe àṣeyọrí, nítorí náà ìṣẹ́ náà ń lọ tẹ̀síwájú bí a ṣe ń kà owó fún yín fún ìgbà gbogbo. Kà àdírẹ́sì náà padà láti GET /v1/reseller/services/{siteId}` dipò kíkọ àkọsílẹ̀ tirẹ̀: ó ṣe àwárí pẹ̀lú àdírẹ́sì àkọ́kọ́ ti àyè náà fúnra rẹ̀ àti pé kò ṣe pẹ̀lú orúkọ mìíràn láéláé.
Kà gbogbo àṣìṣe náà, kì í ṣe gbólóhùn náà nìkan
Aṣẹ ìpè fún ìmúdájú kò ní orúkọ gangan — "The request was well-formed but failed validation." — nítorí apá tí ó ṣiṣẹ́ wà nínú details, tí ń sọ orúkọ pápá náà àti ìdí rẹ̀. Àwọn mọdulu méjèèjì àti kílẹ́ǹtì PHP ń pọ̀ mọ́ ọ̀rọ̀ tí wọ́n ń fi hàn sí olùdarí yín. Tí ẹ bá ń pè API fúnra yín, kà error.details; àwọn àkọsílẹ̀ kan ń gbé ìwọ̀n pàtó dipò gbólóhùn kan, tí ó jẹ́ bí max_sites: 0 ṣe ń tẹ̀ sí yín nígbà tí àtòjọ reseller yín kò ní àyè.
Kí ẹ tó ṣe ìbóderi àkọ́kọ́ yín
Àwọn àyè tí àwọn oníbàárà yín ń rà wà fún ààlà àyè ti àtòjọ reseller yín, nítorí náà ẹ ń fẹ́ àtòjọ tí ó ní àyè nínú rẹ̀. Ìgbìyànjú ìsopọ̀ kò le rí èyí — ó ń kà ìtòsọ́nà yín kò sì ṣe ohun kankan — nítorí náà ó ń sọ akọọ́lẹ̀ tí ó dára tí kò le tà síwájú sí i. Ìbóderi tí a fi sílẹ̀ láìsí ààlà ń jẹ́ kíkọ̀ pẹ̀lú ọ̀rọ̀ tí ń sọ bẹ́ẹ̀ gangan.
Mú ìgbàsílẹ̀ yín dájú
Àwọn ilé àkójọ méjèèjì wà lórí TLS láti orúkọ alejo wa fúnra wa, kò sí àyípadà sí ibòmíràn láéláé, pẹ̀lú àwọn àyẹ̀wò SHA-256 wọn tí a kọ sí ẹ̀gbẹ́ àwọn ìsopọ̀ ìgbàsílẹ̀ lórí ojúewé ìgbàsílẹ̀.
Ṣe o tun di mọ?
Ìtìlẹ́yìn wà lórí gbogbo ètò, a sì ń dáhùn ní èdè rẹ.
Kan si àtìlẹyìn → Gbogbo àpilẹ̀kọ →