Integrasi API License Activation membutuhkan kemampuan programing, pastikan anda memahami cara kerjanya.
Berikut contoh implementasi API License Activation sistem Digicart:
Untuk sistem lisensi, terikat dengan 3 point,
| Parameter | Deskripsi |
|---|---|
| license_id | ID lisensi produk yang dibuat di dashboard admin Digicart (enable & generate id) |
| order_code | Kode pembelian yang diterima pengguna setelah checkout |
| hostname | Domain/server tempat lisensi diaktifkan |
📌 Headers Wajib
| Header | Deskripsi |
|---|---|
| Content-Type | application/json |
| X-License-Timestamp | Unix timestamp saat request |
| X-License-Signature | Signature hash |
🔐 Cara Generate Signature
Signature dibuat dari kombinasi: license_id + order_code + hostname + timestamp dengan algirotma SHA256
$licenseId = 'SBE24STPSO';
$orderCode = 'G2EPCQ0KWABBDFFJKA6XM4PKGBHML1';
$hostname = 'example.com';
$timestamp = time();
$signature = hash(
'sha256',
$licenseId . $orderCode . $hostname . $timestamp
);
POST /api/license/activate
Digunakan untuk proses pengaktifan lisensi, contoh Request
{
"license_id": "SBE24STPSO",
"order_code": "G2EPCQ0KWABBDFFJKA6XM4PKGBHML1",
"hostname": "example.com"
}
Respon Sukses
{
"valid": true,
"status": "activated",
"license": {
"limit": 3,
"used": 1,
"remaining": 2
},
"expired_at": "2027-01-30 23:16:27",
"message": "License berhasil diaktifkan"
}POST /api/license/check
Untuk validasi periodic check, contoh Request
{
"license_id": "SBE24STPSO",
"order_code": "G2EPCQ0KWABBDFFJKA6XM4PKGBHML1",
"hostname": "example.com"
}Respon sukses
{
"valid": true,
"status": "active",
"license": {
"limit": 3,
"used": 1,
"remaining": 2
},
"expired_at": "2027-01-30 23:16:27"
}POST /api/license/deactivate
Untuk deactivate lisensi, contoh Request
{
"license_id": "SBE24STPSO",
"order_code": "G2EPCQ0KWABBDFFJKA6XM4PKGBHML1",
"hostname": "example.com"
}
Respon sukses
{
"success": true,
"status": "deactivated",
"message": "License berhasil di-deactivate"
}
🔄 Workflow Validasi Lisensi
- User memasukkan order_code
- Client mengirim request aktivasi
- Server memvalidasi lisensi
- Activation disimpan di server
- Client melakukan periodic check
- Jika lisensi tidak valid → akses dibatasi
🔐 Aturan Validasi Lisensi
| Kondisi | Hasil |
|---|---|
| Produk aktif | Aktivasi baru diizinkan |
| Produk soft delete | Aktivasi baru ditolak |
| Aktivasi lama | Tetap valid |
| Periodic check | Tidak membatalkan lisensi lama |
| Limit tercapai | Aktivasi baru ditolak |
Contoh Integrasi PHP Native
$licenseId = 'SBE24STPSO';
$orderCode = 'G2EPCQ0KWABBDFFJKA6XM4PKGBHML1';
$hostname = $_SERVER['HTTP_HOST'];
$timestamp = time();
$signature = hash(
'sha256',
$licenseId . $orderCode . $hostname . $timestamp
);
$payload = json_encode([
'license_id' => $licenseId,
'order_code' => $orderCode,
'hostname' => $hostname,
]);
$options = [
'http' => [
'header' => [
"Content-Type: application/json",
"X-License-Timestamp: {$timestamp}",
"X-License-Signature: {$signature}"
],
'method' => 'POST',
'content' => $payload
]
];
$response = file_get_contents(
'https://yourdomain.com/api/license/activate',
false,
stream_context_create($options)
);
$data = json_decode($response, true);
print_r($data);
🛡️ Best Practice Implementasi
✔ Gunakan HTTPS
✔ Simpan license key di database, bukan di frontend
✔ Cache hasil validasi
✔ Lakukan periodic check setiap 6–12 jam
✔ Jangan expose order_code ke publik
🧠 Status Response Reference
| Status | Arti |
|---|---|
| active | lisensi aktif |
| activated | berhasil aktivasi |
| expired | lisensi habis |
| inactive | order tidak aktif |
| limit_exceeded | batas aktivasi tercapai |
| product_deleted | produk tidak tersedia |
| product_mismatch | license salah produk |
| invalid_license | license_id salah |
| invalid_order | order_code salah |