Вие препродавате нашия хостинг. Вашите клиенти са си ваши: вашите цени, вашите фактури, вашият доставчик на платежни услуги. Ето как управлявате нашата платформа от всичко, което вече използвате — билинг панел, ваш собствен WordPress сайт или скрипт.
Какво всъщност виждат вашите клиенти
Преди техническите детайли: вашите клиенти никога не трябва да ни виждат. Три интерфейса, а вие избирате кой от тях да използвате.
| Интерфейс | Чия собственост е |
|---|
| Хостинг панелът, на ваше собствено име на хост | Задайте име на хост за панела в Препродажба → Вашият бранд и вашите клиенти ще влизат на panel.yourcompany.com с вашето лого и вашите цветове. Същият панел, вашият адрес. |
| Вашият собствен уебсайт | Добавката за WordPress поставя търсене на домейни и връзка за вход с едно щракване на вашия сайт, като приема поръчката през вашата собствена количка на WooCommerce. |
| Вашият билинг панел | WHMCS или HostBill остава началната входна точка; модулът осигурява ресурсите зад него, а бутонът в клиентската зона ги вписва директно в техния хостинг. |
⛔ Който и вариант да изберете, вие сте търговецът от първо лице за вашите клиенти: вашите цени, вашите фактури, вашият ДДС номер, вашият доставчик на платежни услуги. Ние таксуваме вас, веднъж месечно, на цени на едро.
След като зададете име на хост за панела, въведете го в полето Адрес на панела на добавката за WordPress и никъде другаде — връзките за вход, генерирани от този API, го следват автоматично.
Четирите начина за достъп
Има четири начина за достъп и всички те правят едно и също отдолу:
| За |
|---|
| Модулът за WHMCS | Магазин с WHMCS |
| Модулът за HostBill | Магазин с HostBill |
| Добавката за WordPress | Продажба от вашия собствен сайт с WordPress или WooCommerce |
| API | Всичко останало — Blesta, вътрешна система, cron скрипт |
1. Вземете API ключ
Във вашето табло за управление отидете на API ключове и създайте такъв. Дайте му само правата, от които се нуждае:
| Разрешение | Защо |
|---|
org.read | Четене на клиентските ви профили |
sites.create | Създаване на сайт |
sites.view | Четене на услуга |
sites.delete | Прекратяване |
reseller.view | Извеждане на вашите услуги и четене на потреблението |
reseller.provision | Спиране, освобождаване и вписване на клиент |
⛔ Не давайте reseller.manage на интеграция. Това разрешение редактира вашата ценова листа и данните ви за вход в собствения ви платежен портал. reseller.provision съществува именно за да може ключ, който поставяте в билинг панел или уебсайт, да няма нужда от това.
Ключът се показва само веднъж. Съхранявайте го там, където пазите другите си идентификационни данни — никога във файл, който се сервира от вашия уеб сървър.
2. Направете първото си извикване
curl https://api.zinndigital.com/v1/reseller/services \
-H "Authorization: Bearer zdk_live_…"
Това връща всяка услуга, която сте активирали, по един ред за всеки сайт, заедно с клиента, на когото принадлежи, нейния статус и сумата, която таксувате за нея. При нов профил това е празен списък — което е правилният отговор, а не грешка.
3. Цялата интеграция в шест извиквания
КОГА ИЗВИКВАНЕ
поръчка е платена POST /v1/orgs веднъж на КЛИЕНТ
POST /v1/sites веднъж на УСЛУГА
не са платили POST /v1/reseller/services/{siteId}/suspend
платят POST /v1/reseller/services/{siteId}/unsuspend
откажат се DELETE /v1/sites/{siteId}
"вход в хостинга" POST /v1/reseller/services/{siteId}/sso
Осигуряването на ресурси се състои от две извиквания, като идентификаторите са от значение:
# 1. профилът на клиента — асоцииран с ВАШИЯ клиентски идентификатор
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"}'
# 2. техният сайт — асоцииран с ВАШИЯ идентификатор на услугата
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"}'
Две правила, чието нарушаване струва пари
- Асоциирайте профила с вашия КЛИЕНТ, а сайта — с вашата УСЛУГА. Втората поръчка на клиент трябва да отиде в профила, който той вече има. Ако асоциирате и двете с услугата, един клиент ще се окаже с три несвързани профила и три отделни панела.
- Изпращайте
Idempotency-Key при всяка заявка от тип POST, съставен от вашия собствен идентификатор за съответния обект. Всяка билинг система прави повторни опити — обратно извикване от шлюз пристига два пъти, администратор пуска повторно неуспешно създаване, клиент щраква два пъти. Без ключа вторият опит създава втори сайт и вие бивате таксувани за него.
Три отговора, които не бива да свеждате до два
unsuspend може да върне отговор 409. Това означава, че нашият екип за злоупотреби задържа сайта, а не вие. Покажете съобщението; не опитвайте отново.
- **Прекратяването планира изтриване, но не го извършва веднага.** Датата се връща като
pending_deletion_at. Да кажете на клиент, че данните му вече са изтрити, когато това не е така, е по-лошо, отколкото да не му кажете нищо.
disk_used_bytes може да бъде null, а null не е нула. Това означава, че не сме успели да извършим измерване, а не че нищо не е използвано. Пропуснете го — не записвайте 0 в собствените си регистри, иначе ще покажете на клиента зелена лента за потребление за сайт, от който нямате отчетени данни.
4. Вписване на клиент
POST /v1/reseller/services/{siteId}/sso връща URL адрес за еднократна употреба, който препраща вашия клиент директно в неговия собствен профил, вече вписан.
⛔ Генерирайте го при тяхно щракване, никога при рендиране на страницата. Връзката е за еднократна употреба и изтича в рамките на минути, така че връзка, записана в страница, се изчерпва при първото показване на страницата и остава във всеки кеш между вас и браузъра.
5. Инсталиране на модул като алтернатива
- WHMCS — копирайте модула в
modules/servers/zinn/, добавете сървър, чиято Парола е вашият API ключ, и задайте продуктовата линия за продукта. Натиснете Тестване на връзката: това прави реално извикване и ви съобщава какво е отговорила платформата.
- HostBill — копирайте в
includes/modules/Hosting/zinn/ и го свържете по същия начин.
- WordPress — Zinn® Reseller Toolkit: търсене на домейни, връзка за вход в хостинга на вашите клиенти и създаване на услуги чрез WooCommerce при платена поръчка. С отворен код на <https://github.com/Zinn-Digital/zinn-reseller-toolkit> или го изтеглете от Разширения във вашето табло за управление.
6. Стартиране на живо
Проверете следните неща, преди да приемете реална поръчка:
- Тестът за връзка преминава успешно в модула или първият ви
curl връща списък.
- Вашата ценова листа е зададена (Препродажба → Вашите цени).
- Вашият платежен портал е свързан (Препродажба → Платежни портали) — клиентите ви плащат на вас, през вашия собствен профил.
- Данните на вашата компания са въведени (Препродажба → Вашата компания), така че клиентските ви фактури да съдържат вашето юридическо лице и ДДС номер, а не нашите.
- Направили сте една реална цялостна поръчка от начало до край и сте видели как сайтът се появява.
Къде се намира всичко останало
Пълната документация за API — всяка крайна точка, генерирана от нашата спецификация, заедно с необходимото разрешение за всяка от тях — се намира на <https://zinndigital.com/developers/api>.