Dokumentasi API Lisensi Sejoli - Digital Melaju

Dokumentasi API Lisensi Sejoli - Digital Melaju

API ini dirancang untuk memvalidasi, mengaktifkan, mengelola kuota lisensi, dan menyediakan pembaruan otomatis (Over-The-Air) untuk produk digital (Tema/Plugin WordPress) yang dibeli melalui sistem Sejoli. Sistem ini mendukung domain binding dan pembatasan kuota instalasi secara dinamis.

Informasi Umum

  • Base URL: https://[domain-utama-anda.com]/wp-json/melaju/v1
  • Format Request: application/json atau application/x-www-form-urlencoded
  • Format Response: JSON
  • Metode yang Didukung: POST

1. Verifikasi & Aktivasi Lisensi

Endpoint ini digunakan untuk mengecek validitas lisensi sekaligus mendaftarkan domain klien ke dalam sistem Sejoli. Jika domain belum terdaftar dan kuota masih tersedia, sistem akan otomatis memotong sisa kuota.

POST /verify

Parameter Request (Body)

Parameter Tipe Wajib Deskripsi
license_key string Ya Kode lisensi yang didapatkan pembeli dari Sejoli.
email string Ya Email akun pembeli yang terdaftar di Sejoli.
nama_produk string Ya Nama produk persis seperti yang tertulis di dashboard Sejoli (contoh: WP Sekolahku Pro).
domain string Ya Penanda unik/Domain tempat produk diinstal (contoh: sekolah1.sch.id).

Contoh Request (JSON)

{
    "license_key": "1005234-A7B8C-9D0E1",
    "email": "kepsek@sekolah1.sch.id",
    "nama_produk": "WP Sekolahku Pro",
    "domain": "sekolah1.sch.id"
}

Response Berhasil (200 OK)

Sistem mengembalikan detail lengkap lisensi, termasuk sisa kuota secara real-time.

{
    "status": "success",
    "message": "Lisensi Valid.",
    "data": {
        "license_key": "1005234-A7B8C-9D0E1",
        "email": "kepsek@sekolah1.sch.id",
        "nama_pembeli": "Budi Santoso",
        "nama_produk": "WP Sekolahku Pro",
        "domain_terdaftar": "sekolah1.sch.id",
        "sisa_lisensi": 9,
        "masa_berlaku_lisensi": "2027-03-31 23:59:59"
    }
}

Response Gagal (Contoh 403 Forbidden - Kuota Habis)

{
    "status": "error",
    "message": "Kuota lisensi sudah habis. Anda telah mencapai batas 10 domain."
}

2. Pencabutan Lisensi

Endpoint ini digunakan untuk melepaskan ikatan domain dari lisensi tertentu. Memanggil endpoint ini akan menghapus domain dari database server pusat, sehingga mengembalikan (refund) sisa kuota pengguna sebanyak 1 slot.

POST /deactivate

Parameter Request (Body)

Parameter Tipe Wajib Deskripsi
license_key string Ya Kode lisensi aktif.
email string Ya Email pembeli.
domain string Ya Domain yang ingin dicabut aksesnya (harus cocok dengan data di server).

Contoh Request (JSON)

{
    "license_key": "1005234-A7B8C-9D0E1",
    "email": "kepsek@sekolah1.sch.id",
    "domain": "sekolah1.sch.id"
}

Response Berhasil (200 OK)

{
    "status": "success",
    "message": "Lisensi berhasil dicabut dari domain sekolah1.sch.id. Kuota telah dikembalikan."
}

3. Pengecekan Update OTA (Over-The-Air)

Endpoint ini digunakan oleh tema atau plugin di sisi klien untuk mengecek ketersediaan versi terbaru secara otomatis. Sistem mengecek validitas lisensi dan masa aktif langganan. Jika valid dan belum kedaluwarsa, API akan memberikan nomor versi terbaru beserta link download aman.

POST /check-update

Pengaturan di Sisi Admin (Dashboard Sejoli)

  1. Masuk ke menu Produk di Sejoli dan edit produk digital Anda.
  2. Scroll ke bawah dan cari tab baru bernama Lisensi API.
  3. Isi Versi Rilis Terbaru (misal: 1.5.0).
  4. Unggah file tema/plugin Anda di kolom File Update (.zip).
  5. Simpan produk.

Parameter Request (Body)

Parameter Tipe Wajib Deskripsi
license_key string Ya Kode lisensi klien yang sedang aktif.
domain string Ya Domain klien (harus cocok dengan data yang di-bind di server).

Contoh Request (JSON)

{
    "license_key": "1005234-A7B8C-9D0E1",
    "domain": "sekolah1.sch.id"
}

Response Berhasil (200 OK - Update Tersedia)

{
    "status": "success",
    "version": "1.5.0",
    "package": "https://domain-utama-anda.com/wp-content/uploads/2026/04/wp-sekolahku-pro-1.5.0.zip"
}

Response Gagal (Contoh 403 Forbidden - Langganan Kedaluwarsa)

{
    "status": "error",
    "message": "Masa berlaku lisensi sudah habis. Silakan perpanjang untuk mendapatkan update."
}

Panduan Integrasi untuk Developer Client

Perhatikan praktik terbaik berikut saat mengintegrasikan API ini ke dalam Tema atau Plugin klien (Client-side):

  1. Jangan Panggil API Live di Setiap Load Halaman: Menembak API setiap kali halaman WordPress dimuat akan membuat website lambat dan membebani server pusat. Gunakan sistem penyimpanan lokal.
  2. Gunakan WP Cron: Simpan status lisensi secara lokal di database klien (update_option()). Buat jadwal wp_schedule_event yang berjalan sekali sehari untuk menembak endpoint /verify secara otomatis di latar belakang.
  3. Tangani Pencabutan Secara Pararel: Saat klien menekan tombol "Cabut Lisensi" di pengaturan tema/plugin:
    • Tembak endpoint /deactivate terlebih dahulu.
    • Jika response success, hapus data lisensi dari database lokal klien menggunakan delete_option().

Integrasi Auto-Update (OTA)

Untuk memunculkan tombol "Update Now" bawaan WordPress, integrasikan hasil dari API /check-update dengan transient pembaruan WordPress:

  • Untuk Tema: Gunakan hook pre_set_site_transient_update_themes
  • Untuk Plugin: Gunakan hook pre_set_site_transient_update_plugins

Contoh Skema Data Transient WordPress:

// Data simulasi balasan dari server Anda
$api_response_version = '1.5.0'; 
$api_response_package = 'https://domain/file.zip';

// Format objek standar untuk WordPress Updater
$response = new stdClass();
$response->plugin      = 'wp-sekolahku-pro/wp-sekolahku.php'; 
$response->slug        = 'wp-sekolahku-pro'; 
$response->new_version = $api_response_version; 
$response->package     = $api_response_package; 

// Inject objek tersebut ke dalam transient WordPress
$transient->response[$response->plugin] = $response;

Penting: Panggil pengecekan API ini hanya ketika WordPress sedang menjalankan rutinitas pengecekan pembaruan, bukan di front-end.