நீங்கள் 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: உங்கள் Zinn® API விசை (ஒரு
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 குறிப்பில் உள்ளன, மேலும் நீங்கள் அவற்றை எதிலிருந்தும் மேற்கொள்ளலாம்.
API விசை
ஏழு அனுமதிகள் மட்டுமே, அதற்கு மேல் இல்லை: org.create, org.read, sites.create, sites.view, sites.delete, reseller.view, reseller.provision.
⛔ reseller.manage அல்ல. பில்லிங் பேனலில் நீங்கள் ஒட்டும் ஒரு விசை, பணம் செலுத்தாததற்காக வாடிக்கையாளரை நிறுத்தி வைக்கவும், அவர்களை உள்நுழைய வைக்கவும் இயல வேண்டும்; அது உங்கள் சொந்த கட்டண நுழைவாயில் நற்சான்றிதழ்களை மீண்டும் எழுத இயலக்கூடாது.
மீறப்படும்போது பண இழப்பை ஏற்படுத்தும் இரண்டு விதிகள்
- கணக்கை உங்கள் CUSTOMER மீதும், தளத்தை உங்கள் SERVICE மீதும் நிலைநிறுத்துங்கள். ஒரு வாடிக்கையாளரின் இரண்டாவது ஆர்டர் அவர்கள் ஏற்கனவே வைத்திருக்கும் கணக்கிலேயே சேர வேண்டும். இரண்டையும் சேவை மீது நிலைநிறுத்தினால், ஒரு வாடிக்கையாளர் தொடர்பில்லாத மூன்று கணக்குகள் மற்றும் மூன்று தனித்தனி கட்டுப்பாட்டுப் பேனல்களைப் பெற நேரிடும்.
- ஒவ்வொரு உருவாக்கத்தின் போதும், அதற்கான உங்கள் சொந்த அடையாளங்காட்டியில் இருந்து பெறப்பட்ட ஒரு ஐடெம்போடென்சி விசையை அனுப்பவும். ஒவ்வொரு பில்லிங் அமைப்பும் மீண்டும் முயற்சிக்கும் — ஒரு நுழைவாயில் கால்பேக் இரண்டு முறை வருகிறது, ஒரு நிர்வாகி தோல்வியுற்ற ஏற்பாட்டை மீண்டும் இயக்குகிறார், ஒரு வாடிக்கையாளர் இருமுறை கிளிக் செய்கிறார். அது இல்லாமல் இரண்டாவது முயற்சி இரண்டாவது தளத்தை உருவாக்குகிறது மற்றும் அதற்காக உங்களுக்கு கட்டணம் விதிக்கப்படும். இரண்டு தொகுதிகள் மற்றும் PHP கிளையன்ட் இரண்டும் இதை உங்களுக்காகச் செய்கின்றன; நீங்கள் API ஐ நேரடியாக அழைக்கிறீர்கள் என்றால்,
Idempotency-Key ஐ அனுப்பவும்.
எளிதில் விட்டுவிடக்கூடிய மூன்று புலங்கள்
ஒவ்வொன்றும் ஒரு முழு வினையையும் முறித்துவிடும், மேலும் முதல் புலத்தைத் தவிர வேறு எதுவும் சரிபார்ப்புப் பிழையாக மட்டுமே காட்டப்படும் — முதல் புலம் எதுவுமே இல்லாததாகக் காட்டப்படும்:
- ⛔⛔ ஒரு வாடிக்கையாளரின் முதல் தளம் உருவாக்கப்படுவதற்கு முன்பே அவர் ஒரு திட்டத்தில் சேர்க்கப்பட வேண்டும், இதற்கு
POST /v1/reseller/clients/{orgId}/plan பயன்படுத்தப்பட்டு, அதன் subscription_id மதிப்பு POST /v1/sites என்பதற்கு அனுப்பப்பட வேண்டும். இதில் வாசிப்பதற்கு எந்தப் பிழையும் இருக்காது. ஒரு புதிய வாடிக்கையாளர் கணக்கில் சந்தா எதுவும் இருக்காது மற்றும் POST /v1/sites என்பதில் plan புலம் எதுவும் இல்லை, எனவே ஒன்றுமில்லாமல் உருவாக்கப்படும் தளம் எந்தத் திட்டத்தையும் கொண்டிருக்காது: உங்கள் மொத்த விற்பனை அறிக்கை உங்கள் வாடிக்கையாளர்களின் நேரலை சந்தாக்களிலிருந்து உருவாக்கப்படுகிறது, எனவே எந்த வரியும் சேர்க்கப்படாது மற்றும் ஹோஸ்டிங் இயங்கும் வரை Zinn® உங்களிடம் எதையும் வசூலிக்காது; உங்கள் வாடிக்கையாளர் எந்த ஒதுக்கீடுகளையும் பெற மாட்டார், எனவே அவர்களின் தளத்திற்கு எந்த வரம்பும் பயன்படுத்தப்படாது; மேலும் ஒரு மேம்படுத்தல் மாற்றுவதற்கு அங்கு எதுவும் இருக்காது. ஆர்டர் 201 என வழங்கும், தளம் உருவாக்கப்படும், மேலும் அது சரியாகச் சேவை செய்யும். இரு முனைகளிலும் எதுவும் இதைப் பற்றிப் புகாரளிக்காது.
வரிசைமுறை முக்கியமானது: POST /v1/sites அது இயங்கும் தருணத்தில் எந்த சந்தா உள்ளதோ அதைப் பதிவு செய்கிறது, எனவே பின்னர் அமைக்கப்படும் திட்டம் முந்தைய தளத்துடன் தானாகப் பொருந்தாது.
POST /v1/sites என்பதற்கு stack_type தேவை. அதைத் தவிர்த்தால் எந்த ஆர்டரும் வெற்றியடையாது.
DELETE /v1/sites/{siteId} என்பதற்கு {"confirm_domain": "<the site's own domain>"} என்ற உள்ளடக்க அமைப்பு (body) தேவை — இது ஒரு தட்டச்சு செய்யப்பட்ட உறுதிப்படுத்தல், ஏனெனில் இது ஒரு அழிவு வினைச்சொல். அதைத் தவிர்த்தால் எந்த ரத்தும் வெற்றியடையாது, எனவே சேவை தொடர்ந்து இயங்கும் மற்றும் அதற்கான கட்டணம் உங்களுக்குத் தொடர்ந்து விதிக்கப்படும். உங்கள் சொந்தப் பதிவைப் பயன்படுத்துவதை விட, 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 செக்சம்கள் பதிவிறக்கப் பக்கத்தில் பதிவிறக்க இணைப்புகளுக்கு அருகில் அச்சிடப்பட்டுள்ளன.