Digicart License Validation API Example

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,

ParameterDeskripsi
license_idID lisensi produk yang dibuat di dashboard admin Digicart (enable & generate id)
order_codeKode pembelian yang diterima pengguna setelah checkout
hostnameDomain/server tempat lisensi diaktifkan

📌 Headers Wajib

HeaderDeskripsi
Content-Typeapplication/json
X-License-TimestampUnix timestamp saat request
X-License-SignatureSignature 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

  1. User memasukkan order_code
  2. Client mengirim request aktivasi
  3. Server memvalidasi lisensi
  4. Activation disimpan di server
  5. Client melakukan periodic check
  6. Jika lisensi tidak valid → akses dibatasi

🔐 Aturan Validasi Lisensi

KondisiHasil
Produk aktifAktivasi baru diizinkan
Produk soft deleteAktivasi baru ditolak
Aktivasi lamaTetap valid
Periodic checkTidak membatalkan lisensi lama
Limit tercapaiAktivasi 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

StatusArti
activelisensi aktif
activatedberhasil aktivasi
expiredlisensi habis
inactiveorder tidak aktif
limit_exceededbatas aktivasi tercapai
product_deletedproduk tidak tersedia
product_mismatchlicense salah produk
invalid_licenselicense_id salah
invalid_orderorder_code salah