Pusat Pengetahuan

Menjual hosting Zinn® dari sistem Anda sendiri

Kelola hosting Zinn langsung dari panel penagihan, situs WordPress, atau skrip Anda sendiri: dapatkan kunci API, lakukan panggilan pertama Anda, dan enam panggilan yang membentuk seluruh integrasi tersebut.

Anda menjual kembali hosting kami. Klien Anda adalah milik Anda: harga Anda, tagihan Anda, penyedia pembayaran Anda. Ini adalah cara Anda menjalankan platform kami dari apa pun yang sudah Anda jalankan — panel penagihan, situs WordPress Anda sendiri, atau skrip.

Apa yang sebenarnya dilihat klien Anda

Sebelum membahas teknisnya: klien Anda tidak perlu pernah melihat kami. Tiga tampilan, dan Anda memilih mana yang akan digunakan.

| Tampilan | Milik siapa | |---|---| | Panel hosting, di nama host Anda sendiri | Atur nama host panel di bawah Penjualan 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 memproses pesanan melalui checkout WooCommerce Anda sendiri. | | Panel penagihan Anda | WHMCS atau HostBill tetap menjadi pintu depan; modul melakukan provisi di belakangnya dan tombol area klien mengarahkan mereka masuk langsung ke hosting mereka. |

⛔ Mana pun yang Anda pilih, Anda adalah pedagang resmi (merchant of record) bagi klien Anda: harga Anda, tagihan Anda, nomor PPN Anda, penyedia pembayaran Anda. Kami menagih Anda, sebulan sekali, dengan harga grosir.

Setelah Anda mengatur nama host panel, masukkan 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 cara masuk

Ada empat cara masuk, dan semuanya melakukan hal yang sama di belakangan:

| | 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 buat 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 layanan | | reseller.view | Menampilkan daftar layanan Anda dan membaca penggunaan | | reseller.provision | Menangguhkan, merilis, dan memasukkan klien |

Jangan berikan integrasi reseller.manage. Izin tersebut mengedit daftar harga Anda dan kredensial gerbang pembayaran Anda sendiri. reseller.provision ada justru agar kunci yang Anda tempelkan ke panel penagihan atau situs web tidak membutuhkannya.

Kunci hanya ditampilkan sekali. Simpan di tempat Anda menyimpan kredensial lainnya — jangan pernah di dalam file yang disajikan oleh server web Anda.

2. Buat panggilan pertama Anda

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

Panggilan itu 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

SAAT                 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 sangat penting:

# 1. akun pelanggan — dikunci pada 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 — dikunci pada 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 menghabiskan uang jika Anda salah mengaturnya

  1. Kunci akun pada PELANGGAN Anda dan situs pada LAYANAN Anda. Pesanan kedua pelanggan harus masuk ke akun yang sudah mereka miliki. Kunci keduanya pada layanan dan satu pelanggan akan memiliki tiga akun yang tidak terkait dan tiga panel terpisah.
  2. Kirim Idempotency-Key pada setiap POST, yang dibuat dari ID Anda sendiri untuk item tersebut. Setiap sistem penagihan melakukan percobaan ulang — panggilan balik gerbang pembayaran tiba dua kali, admin menjalankan ulang provisi yang gagal, pelanggan mengklik dua kali. Tanpa kunci tersebut, percobaan kedua akan membuat situs kedua dan Anda akan ditagih untuk itu.

Tiga jawaban yang tidak boleh Anda sederhanakan menjadi dua

  • unsuspend dapat menjawab 409. Itu berarti tim penyalahgunaan kami sedang menahan situs tersebut, bukan Anda. Tampilkan pesan tersebut; jangan mencoba ulangi.
  • **Menghentikan layanan akan พenjadwalkan penghapusan, bukan langsung melakukannya.** Tanggal akan dikembalikan sebagai pending_deletion_at. Memberitahu pelanggan bahwa data mereka sudah hilang padahal belum adalah hal yang lebih buruk daripada tidak memberitahu apa pun.
  • disk_used_bytes bisa bernilai null, dan null bukanlah nol. Itu berarti kami tidak dapat mengukur, bukan berarti tidak ada yang digunakan. Lewati saja — jangan tulis 0 ke dalam catatan Anda sendiri, atau Anda akan menampilkan bilah penggunaan hijau kepada pelanggan untuk situs yang tidak memiliki data pembacaan.

4. Masukkan 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 URL saat mereka mengklik, jangan pernah saat Anda merender halaman. Tautan tersebut sekali pakai dan kadaluwarsa dalam hitungan menit, jadi tautan yang ditulis ke dalam halaman akan hangus pada tampilan halaman pertama dan tertinggal di setiap cache antara Anda dan peramban.

5. Pasang 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: ini akan melakukan panggilan nyata dan memberitahu Anda apa yang dikatakan oleh platform.
  • HostBill — salin ke includes/modules/Hosting/zinn/ dan hubungkan dengan cara yang sama.
  • WordPressZinn® 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 (Go live)

Periksa hal-hal ini sebelum Anda menerima pesanan nyata:

  • Uji koneksi berhasil pada modul, atau curl pertama Anda mengembalikan daftar.
  • Daftar harga Anda telah diatur (Penjualan Kembali → Harga Anda).
  • Gerbang pembayaran Anda telah terhubung (Penjualan Kembali → Gerbang pembayaran) — klien Anda membayar Anda, melalui akun Anda sendiri.
  • Rincian perusahaan Anda telah diisi (Penjualan Kembali → Perusahaan Anda) sehingga tagihan klien Anda mencantumkan badan hukum dan nomor PPN Anda, bukan milik kami.
  • Anda telah melakukan satu pesanan nyata dari awal hingga akhir dan melihat situs tersebut muncul.

Di mana tempat hal-hal lainnya

Referensi API lengkap — setiap endpoint, yang dibuat dari spesifikasi kami, beserta izin yang dibutuhkan masing-masing — ada di <https://zinndigital.com/developers/api>.

Masih bingung?

Dukungan disertakan di setiap paket dan dijawab dalam bahasa Anda sendiri.

Hubungi dukungan Semua artikel
Menjual hosting Zinn® dari sistem Anda sendiri