Baza wiedzy

Sprzedaż hostingu Zinn® z własnych systemów

Zarządzaj hostingiem Zinn bezpośrednio z własnego panelu rozliczeniowego, witryny WordPress lub skryptów: uzyskaj klucz API, wykonaj swoje pierwsze wywołanie oraz sześć wywołań, z których składa się cała integracja.

Sprzedajesz nasz hosting dalej. Twoi klienci należą do Ciebie: Twoje ceny, Twoje faktury, Twój dostawca płatności. W ten sposób możesz zarządzać naszą platformą z poziomu dowolnego systemu, z którego już korzystasz – panelu rozliczeniowego, własnej witryny WordPress lub skryptu.

Co tak naprawdę widzą Twoi klienci

Zanim przejdziemy do szczegółów technicznych: Twoi klienci w ogóle nie muszą nas widzieć. Do wyboru masz trzy interfejsy i to Ty decydujesz, z których skorzystasz.

| Interfejs | Do kogo należy | |---|---| | Panel hostingu pod Twoją własną nazwą hosta | Skonfiguruj nazwę hosta panelu w sekcji Reselling → Twoja marka, a Twoi klienci będą logować się pod adresem panel.twojafirma.com, widząc Twoje logo i Twoje kolory. Ten sam panel, Twój adres. | | Twoja własna strona internetowa | Wtyczka WordPress umieszcza wyszukiwarkę domen i link do logowania jednokliknięciem na Twojej stronie oraz obsługuje zamówienia za pośrednictwem Twojej kasy w WooCommerce. | | Twój panel rozliczeniowy | WHMCS lub HostBill pozostaje głównym punktem kontaktu; moduł w tle tworzy zasoby, a przycisk w strefie klienta loguje użytkownika bezpośrednio do jego hostingu. |

⛔ Niezależnie od wybranego rozwiązania, to Ty jesteś sprzedawcą (merchant of record) dla swoich klientów: Twoje ceny, Twoje faktury, Twój numer VAT, Twój dostawca płatności. My wystawiamy rachunek Tobie, raz w miesiącu, po cenach hurtowych.

Po ustawieniu nazwy hosta panelu wpisz ją w pole Adres panelu w wtyczce WordPress i nigdzie indziej – linki do logowania generowane przez ten interfejs API automatycznie korzystają z tego adresu.

Cztery sposoby integracji

Dostępne są cztery sposoby integracji, z których wszystkie pod spodem robią dokładnie to samo:

| | Dla | |---|---| | Moduł WHMCS | Sklep oparty na WHMCS | | Moduł HostBill | Sklep oparty na HostBill | | Wtyczka WordPress | Sprzedaż z własnej strony WordPress lub WooCommerce | | API | Wszystko inne – Blesta, system wewnętrzny, skrypt typu cron |

1. Uzyskaj klucz API

W swoim panelu przejdź do sekcji Klucze API i utwórz nowy klucz. Przyznaj mu tylko te uprawnienia, które są niezbędne:

| Uprawnienie | Cel | |---|---| | org.read | Odczyt kont Twoich klientów | | sites.create | Tworzenie zasobów witryny | | sites.view | Odczyt informacji o usłudze | | sites.delete | Usuwanie | | reseller.view | Wyświetlanie listy usług i odczyt zużycia | | reseller.provision | Zawieszanie, uwalnianie i logowanie klienta |

Nie przyznawaj integracji uprawnienia reseller.manage. To uprawnienie służy do edycji cennika oraz poświadczeń Twojej własnej bramki płatności. Uprawnienie reseller.provision zostało stworzone właśnie po to, aby klucz wklejany do panelu rozliczeniowego lub na stronę internetową nie musiał go posiadać.

Klucz jest wyświetlany tylko raz. Przechowuj go tam, gdzie inne dane uwierzytelniające – nigdy w pliku obsługiwanym przez Twój serwer WWW.

2. Wykonaj swoje pierwsze wywołanie

curl https://api.zinndigital.com/v1/reseller/services \
  -H "Authorization: Bearer zdk_live_…"

Zwróci to każdą udostępnioną przez Ciebie usługę, po jednym wierszu na witrynę, wraz z przypisanym do niej klientem, jej statusem oraz kwotą, jaką za nią pobierasz. Na nowym koncie będzie to pusta lista – co jest prawidłową odpowiedź, a nie błędem.

3. Cała integracja w sześciu wywołaniach

WHEN                 CALL
an order is paid     POST   /v1/orgs                                   once per CUSTOMER
                     POST   /v1/sites                                  once per SERVICE
they have not paid   POST   /v1/reseller/services/{siteId}/suspend
they pay             POST   /v1/reseller/services/{siteId}/unsuspend
they cancel          DELETE /v1/sites/{siteId}
"log in to hosting"  POST   /v1/reseller/services/{siteId}/sso

Udostępnianie zasobów to dwa wywołania, przy czym kluczowe znaczenie mają identyfikory:

# 1. konto klienta – powiązane z TWOIM identyfikatorem klienta
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. ich witryna – powiązana z TWOIM identyfikatorem usługi
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"}'

Dwa błędy, które kosztują pieniądze, gdy zignorujesz reguły

  1. Powiąż konto ze swoim KLIENTEM, a witrynę ze swoją USŁUGĄ. Kolejne zamówienie tego samego klienta musi trafić na konto, które już posiada. Jeśli obie pozycje powiążesz z usługą, klient skończy z trzema powiązanymi kontami i trzema osobnymi panelami.
  2. Przesyłaj nagłówek Idempotency-Key przy każdym żądaniu POST, tworząc go z własnego identyfikatora danego obiektu. Każdy system rozliczeniowy ponawia zapytania – wywołanie zwrotne bramki dotrze dwukrotnie, administrator ponowi nieudaną próbę utworzenia zasobów, klient kliknie dwukrotnie. Bez tego klucza druga próba utworzy drugą witrynę, za którą zostanie naliczona opłata.

Trzy odpowiedzi, których nie wolno sprowadzać do dwóch

  • unsuspend może zwrócić odpowiedź 409. Oznacza to, że witryna została zablokowana przez nasz zespół ds. nadużyć, a nie przez Ciebie. Wyświetl ten komunikat; nie ponawiaj próby.
  • **Usunięcie witryny zaplanuje kasowanie, a nie wykona go natychmiast.** Data zostanie zwrócona w polu pending_deletion_at. Informowanie klienta, że jego dane już zniknęły, podczas gdy tak nie jest, jest gorsze niż brak jakiejkolwiek informacji.
  • disk_used_bytes może mieć wartość null, a wartość null to nie zero. Oznacza to, że pomiar nie był możliwy, a nie że nie zużyto żadnej przestrzeni. Pomiń to pole – nie wpisuj 0 do własnych rejestrów, w przeciwnym razie pokażesz klientowi zielony pasek zużycia dla witryny, z której nie masz żadnych odczytów.

4. Zaloguj klienta

Zapytanie POST /v1/reseller/services/{siteId}/sso zwraca jednorazowy adres URL, który przenosi klienta bezpośrednio do jego własnego konta, w stanie już zalogowanym.

Wygeneruj go w momencie kliknięcia, nigdy podczas renderowania strony. Link jest jednorazowy i traci ważność po kilku minutach, więc adres umieszczony w kodzie strony zostanie wykorzystany już przy jej pierwszym wyświetleniu i utknie w każdym pamięci podręcznej (cache) między Tobą a przeglądarką.

5. Zamiast tego zainstaluj moduł

  • WHMCS – skopiuj moduł do katalogu modules/servers/zinn/, dodaj serwer, którego hasłem jest Twój klucz API, i ustaw linię produktów dla wybranego produktu. Kliknij Test połączenia: zostanie wykonane rzeczywiste zapytanie, a wynik poinformuje Cię, co odpowiedziała platforma.
  • HostBill – skopiuj do katalogu includes/modules/Hosting/zinn/ i połącz w ten sam sposób.
  • WordPress – wtyczka Zinn® Reseller Toolkit: wyszukiwarka domen, link do logowania w hostingu klientów oraz automatyczne tworzenie zasobów przez WooCommerce po opłaceniu zamówienia. Oprogramowanie open source dostępne pod adresem <https://github.com/Zinn-Digital/zinn-reseller-toolkit> lub do pobrania z zakładki Wtyczki w Twoim panelu.

6. Uruchom usługę produkcyjną

Zanim przyjmiesz prawdziwe zamówienie, sprawdź następujące elementy:

  • Test połączenia w module zakończył się pomyślnie lub Twoje pierwsze zapytanie curl zwróciło listę.
  • Twój cennik jest skonfigurowany (sekcja Reselling → Twoje ceny).
  • Twoja bramka płatności jest połączona (sekcja Reselling → Bramki płatności) – Twoi klienci płacą Tobie, za pośrednictwem Twojego własnego konta.
  • Dane Twojej firmy zostały wprowadzone (sekcja Reselling → Twoja firma), dzięki czemu faktury Twojego klienta zawierają dane Twojego podmiotu prawnego i numer VAT, a nie nasze.
  • Złożyłeś jedno prawdziwe zamówienie od początku do końca i upewniłeś się, że witryna się pojawiła.

Gdzie szukać pozostałych informacji

Pełna dokumentacja API – zawierająca każdy punkt końcowy wygenerowany z naszej specyfikacji wraz z wymaganymi uprawnieniami – znajduje się pod adresem <https://zinndigital.com/developers/api>.

Nadal potrzebujesz pomocy?

Wsparcie jest włączone w każdy plan, a odpowiedzi udzielamy w Twoim języku.

Kontakt z pomocą techniczną Wszystkie artykuły
Sprzedaż hostingu Zinn® z własnych systemów