Anda menjual kembali hosting kami. Klien Anda adalah milik Anda: harga Anda, faktur Anda, penyedia pembayaran Anda. Ini adalah cara Anda mengoperasikan platform kami dari apa pun yang sudah Anda jalankan — panel penagihan, situs WordPress Anda sendiri, atau skrip.
Apa yang sebenarnya dilihat klien Anda
Sebelum mekanismenya: klien Anda tidak perlu pernah melihat kami. Tiga antarmuka, dan Anda memilih mana yang Anda gunakan.
| Antarmuka | Milik siapa |
|---|
| Panel hosting, di nama host Anda sendiri | Tetapkan nama host panel di bawah Menjual Kembali → Merek Anda dan klien Anda masuk di panel.perusahaananda.com dengan logo dan warna Anda. Panel yang sama, alamat Anda. |
| Situs web Anda sendiri | Plugin WordPress menempatkan pencarian domain dan tautan masuk sekali klik di situs Anda, serta menerima pesanan melalui checkout WooCommerce Anda sendiri. |
| Panel penagihan Anda | WHMCS atau HostBill tetap menjadi pintu depan; modul memprovisi di belakangnya dan tombol area klien mengarahkan mereka langsung masuk ke hosting mereka. |
⛔ Mana pun yang Anda pilih, Anda adalah pedagang resmi (merchant of record) bagi klien Anda: harga Anda, faktur Anda, nomor PPN Anda, penyedia pembayaran Anda. Kami menagih Anda, sebulan sekali, dengan harga grosir.
Setelah Anda menetapkan nama host panel, masukkan itu ke dalam bidang Alamat panel pada plugin WordPress dan tidak di tempat lain — tautan masuk yang dibuat oleh API ini akan mengikutinya secara otomatis.
Empat jalan masuk
Ada empat jalan masuk, dan semuanya melakukan hal yang sama di belakang layar:
| Untuk |
|---|
| Modul WHMCS | Toko WHMCS |
| Modul HostBill | Toko HostBill |
| Plugin WordPress | Menjual dari situs WordPress atau WooCommerce Anda sendiri |
| API | Apa pun lainnya — Blesta, sistem internal, skrip cron |
1. Dapatkan kunci API
Di dasbor Anda, buka Kunci API dan buatlah satu. Berikan hanya apa yang dibutuhkannya:
| Izin | Alasan |
|---|
org.read | Membaca akun klien Anda |
sites.create | Memprovisi situs |
sites.view | Membaca layanan |
sites.delete | Menghentikan (terminate) |
reseller.view | Mencantumkan daftar layanan Anda dan membaca penggunaan |
reseller.provision | Menangguhkan, melepaskan penangguhan, dan memasukkan klien |
⛔ Jangan berikan integrasi izin reseller.manage. Izin tersebut mengedit daftar harga Anda dan kredensial gateway pembayaran Anda sendiri. reseller.provision hadir justru agar kunci yang Anda tempelkan ke panel penagihan atau situs web tidak membutuhkannya.
Kunci tersebut hanya ditampilkan sekali. Simpan di tempat Anda menyimpan kredensial lainnya — jangan pernah di dalam berkas yang disajikan oleh server web Anda.
2. Lakukan panggilan pertama Anda
curl https://api.zinndigital.com/v1/reseller/services \
-H "Authorization: Bearer zdk_live_…"
Panggilan tersebut mengembalikan setiap layanan yang telah Anda provisi, satu baris per situs, beserta klien pemiliknya, statusnya, dan biaya yang Anda kenakan untuk itu. Pada akun baru, hasilnya adalah daftar kosong — yang merupakan jawaban yang benar, bukan kesalahan.
3. Seluruh integrasi, dalam enam panggilan
KAPAN PANGGILAN
pesanan dibayar POST /v1/orgs sekali per PELANGGAN
POST /v1/sites sekali per LAYANAN
mereka belum bayar POST /v1/reseller/services/{siteId}/suspend
mereka membayar POST /v1/reseller/services/{siteId}/unsuspend
mereka membatalkan DELETE /v1/sites/{siteId}
"masuk ke hosting" POST /v1/reseller/services/{siteId}/sso
Provisi terdiri dari dua panggilan, dan kunci sangatlah penting:
# 1. akun pelanggan — dikaitkan dengan id pelanggan ANDA
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. situs mereka — dikaitkan dengan id layanan ANDA
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"}'
Dua aturan yang memakan biaya jika Anda salah menerapkannya
- Kaitkan akun pada PELANGGAN Anda dan situs pada LAYANAN Anda. Pesanan kedua dari seorang pelanggan harus masuk ke akun yang sudah mereka miliki. Jika Anda mengaitkan keduanya pada layanan, satu pelanggan akan berakhir dengan tiga akun yang tidak terkait dan tiga panel terpisah.
- Kirimkan
Idempotency-Key pada setiap POST, yang dibuat dari id Anda sendiri untuk objek tersebut. Setiap sistem penagihan melakukan percobaan ulang — callback gateway tiba dua kali, admin menjalankan ulang provisi yang gagal, pelanggan mengeklik ganda. Tanpa kunci tersebut, upaya kedua akan membuat situs kedua dan Anda akan ditagih untuk itu.
Tiga respons yang tidak boleh Anda anggap sama menjadi dua
unsuspend dapat merespons 409. Itu berarti tim penanganan penyalahgunaan (abuse) kami yang menahan situs tersebut, bukan Anda. Tampilkan pesannya; jangan mencoba ulang.
- **Menghentikan (terminating) menjadwalkan penghapusan, bukan langsung menghapusnya.** Tanggal akan dikembalikan sebagai
pending_deletion_at. Memberi tahu pelanggan bahwa data mereka sudah hilang padahal belum adalah hal yang lebih buruk daripada tidak memberi tahu apa pun.
disk_used_bytes bisa bernilai null, dan null bukanlah nol. Itu berarti kami tidak dapat mengukurnya, bukan berarti tidak ada yang digunakan. Lewati saja — jangan menuliskan 0 ke dalam catatan Anda sendiri, atau Anda akan menampilkan bilah penggunaan hijau kepada pelanggan untuk situs yang pengukurannya tidak Anda miliki.
4. Memasukkan klien
POST /v1/reseller/services/{siteId}/sso mengembalikan URL sekali pakai yang mengarahkan klien Anda langsung ke akun mereka sendiri, dalam keadaan sudah masuk.
⛔ Buat tautan saat mereka mengeklik, jangan pernah saat Anda merender halaman. Tautan ini hanya untuk sekali pakai dan kedaluwarsa dalam beberapa menit, sehingga tautan yang ditulis ke dalam halaman akan hangus pada kunjungan halaman pertama dan tertinggal di setiap cache antara Anda dan peramban.
5. Instal modul sebagai gantinya
- WHMCS — salin modul ke
modules/servers/zinn/, tambahkan server yang Password-nya adalah kunci API Anda, dan atur lini produk pada produk tersebut. Tekan Test Connection: modul ini melakukan panggilan nyata dan memberi tahu Anda respons dari platform.
- HostBill — salin ke
includes/modules/Hosting/zinn/ dan hubungkan dengan cara yang sama.
- WordPress — Zinn® Reseller Toolkit: pencarian domain, tautan masuk ke hosting klien Anda, dan provisi WooCommerce saat pesanan dibayar. Sumber terbuka di <https://github.com/Zinn-Digital/zinn-reseller-toolkit>, atau unduh dari Plugin di dasbor Anda.
6. Mulai beroperasi
Periksa hal-hal berikut sebelum Anda menerima pesanan nyata:
- Uji koneksi berhasil pada modul, atau perintah
curl pertama Anda mengembalikan daftar.
- Daftar harga Anda telah diatur (Menjual Kembali → Harga Anda).
- Gateway pembayaran Anda telah terhubung (Menjual Kembali → Gateway pembayaran) — klien membayar kepada Anda, melalui akun Anda sendiri.
- Rincian perusahaan Anda telah dimasukkan (Menjual Kembali → Perusahaan Anda) sehingga faktur klien Anda mencantumkan entitas hukum dan nomor PPN Anda, bukan milik kami.
- Anda telah menempatkan satu pesanan nyata secara menyeluruh dari awal hingga akhir dan melihat situs tersebut muncul.
Tempat semua hal lainnya berada
Referensi API lengkap — setiap endpoint, yang dibuat dari spesifikasi kami, beserta izin yang dibutuhkan masing-masing — ada di <https://zinndigital.com/developers/api>.