{"data":[{"id":1,"title":"44444","slug":"44444","content":"454354354354354354354354454355555555555","excerpt":"454354354354354354354354454355555555555","category":"installation","type":"article","status":"published","review_status":"approved","visibility":"public","faq_group":null,"tags":[],"section_id":null,"section":null,"product_id":null,"sort_order":0,"order":0,"is_published":true,"current_revision":1,"view_count":0,"feedback":{"helpful":0,"not_helpful":0},"published_at":"2026-04-11T11:40:07.000000Z","created_at":"2026-03-04T15:51:36.000000Z","updated_at":"2026-03-04T15:51:36.000000Z"},{"id":2,"title":"Auto Generate Lisensi: Cara Kerja","slug":"auto-generate-lisensi-cara-kerja","content":"Fitur Auto-Generate Lisensi saat ini dikontrol oleh setting `auto_license` di menu Admin > Automasi.\n\nLisensi hanya dibuat otomatis untuk produk yang memiliki `is_licensed = true`.\n\nAlur yang benar adalah: checkout membuat order dengan status `pending`, lalu lisensi baru dibuat saat status order berubah menjadi `paid`\/`success`.\n\nFormat lisensi default sekarang adalah `ADK-KODEPRODUK-KEYUNIK`, dan `KODEPRODUK` diambil dari konfigurasi lisensi pada produk.\n\nJika setting `auto_license` dimatikan, order tetap bisa dibayar tetapi lisensi harus dibuat manual atau lewat proses custom Anda sendiri.","excerpt":"Fitur Auto-Generate Lisensi saat ini dikontrol oleh setting `auto_license` di menu Admin > Automasi. Lisensi hanya dibuat otomatis untuk produk yang memiliki `i...","category":"installation","type":"article","status":"published","review_status":"approved","visibility":"public","faq_group":null,"tags":[],"section_id":null,"section":null,"product_id":null,"sort_order":10,"order":10,"is_published":true,"current_revision":1,"view_count":0,"feedback":{"helpful":0,"not_helpful":0},"published_at":"2026-04-11T11:40:07.000000Z","created_at":"2026-03-14T16:31:16.000000Z","updated_at":"2026-03-14T22:12:22.000000Z"},{"id":3,"title":"API Verifikasi Lisensi","slug":"api-verifikasi-lisensi","content":"Endpoint verifikasi lisensi: `POST \/api\/licenses\/verify`\n\nPayload minimum:\n- `license_key`: string wajib\n- `product_code`: string wajib untuk memastikan lisensi sesuai produknya\n- `domain`: string opsional, dipakai untuk bind domain pertama\n\nContoh request JSON:\n```json\n{\n  \"license_key\": \"ADK-STORE01-HRXZX4FIEPW2K5WQ\",\n  \"product_code\": \"STORE01\",\n  \"domain\": \"plugin.example.com\"\n}\n```\n\nContoh response sukses:\n```json\n{\n  \"status\": \"success\",\n  \"message\": \"License is valid and active.\",\n  \"data\": {\n    \"license_key\": \"ADK-STORE01-HRXZX4FIEPW2K5WQ\",\n    \"product_code\": \"STORE01\",\n    \"active_domain\": \"plugin.example.com\"\n  }\n}\n```\n\nJika `auto_domain_bind = true`, domain pertama yang masuk akan disimpan ke kolom `active_domain`.\n\nJika `product_code` yang dikirim tidak cocok dengan lisensi, endpoint akan mengembalikan `403`.\n\nJika lisensi sudah terikat ke domain lain, endpoint akan mengembalikan `403`.\n\nJika `auto_revoke_violation = true`, lisensi akan otomatis berubah menjadi `revoked` saat dipakai di domain yang berbeda.\n\nContoh request cepat via cURL:\n```bash\ncurl -X POST https:\/\/adk-store.test\/api\/licenses\/verify \\\n  -H \"Content-Type: application\/json\" \\\n  -H \"Accept: application\/json\" \\\n  -d '{\n    \"license_key\": \"ADK-STORE01-HRXZX4FIEPW2K5WQ\",\n    \"product_code\": \"STORE01\",\n    \"domain\": \"plugin.example.com\"\n  }'\n```","excerpt":"Endpoint verifikasi lisensi: `POST \/api\/licenses\/verify` Payload minimum: - `license_key`: string wajib - `product_code`: string wajib untuk memastikan lisensi ...","category":"installation","type":"article","status":"published","review_status":"approved","visibility":"public","faq_group":null,"tags":[],"section_id":null,"section":null,"product_id":null,"sort_order":11,"order":11,"is_published":true,"current_revision":1,"view_count":0,"feedback":{"helpful":0,"not_helpful":0},"published_at":"2026-04-11T11:40:07.000000Z","created_at":"2026-03-14T16:31:16.000000Z","updated_at":"2026-03-14T22:12:22.000000Z"},{"id":4,"title":"Contoh Integrasi Script Lisensi","slug":"contoh-integrasi-script-lisensi","content":"Contoh PHP:\n```php\n<?php\n$payload = [\n    'license_key' => 'ADK-STORE01-HRXZX4FIEPW2K5WQ',\n    'product_code' => 'STORE01',\n    'domain' => $_SERVER['HTTP_HOST'] ?? 'localhost',\n];\n\n$ch = curl_init('https:\/\/adk-store.test\/api\/licenses\/verify');\ncurl_setopt_array($ch, [\n    CURLOPT_POST => true,\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => ['Content-Type: application\/json', 'Accept: application\/json'],\n    CURLOPT_POSTFIELDS => json_encode($payload),\n]);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\n$data = json_decode($response, true);\nif ($httpCode !== 200 || ($data['status'] ?? 'error') !== 'success') {\n    exit('Lisensi tidak valid');\n}\n```\n\nContoh JavaScript\/Node.js:\n```js\nconst res = await fetch('https:\/\/adk-store.test\/api\/licenses\/verify', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application\/json',\n    'Accept': 'application\/json',\n  },\n  body: JSON.stringify({\n    license_key: process.env.APP_LICENSE_KEY,\n    product_code: process.env.APP_PRODUCT_CODE,\n    domain: 'plugin.example.com',\n  }),\n});\n\nconst data = await res.json();\nif (!res.ok || data.status !== 'success') {\n  throw new Error(data.message || 'Lisensi tidak valid');\n}\n```\n\nSaran implementasi: jalankan verifikasi saat aktivasi plugin\/script, simpan hasilnya dalam cache lokal, lalu cek ulang secara periodik sesuai kebutuhan Anda.\n\nJangan hardcode bypass di sisi client. Tetap lakukan pemeriksaan lisensi di sisi server atau saat bootstrap aplikasi\/plugin.\n\nContoh file terpisah untuk integrasi ada di folder `examples\/license-clients` pada repository.","excerpt":"Contoh PHP: ```php","category":"faq","type":"faq","status":"published","review_status":"approved","visibility":"public","faq_group":null,"tags":[],"section_id":null,"section":null,"product_id":null,"sort_order":12,"order":12,"is_published":true,"current_revision":1,"view_count":0,"feedback":{"helpful":0,"not_helpful":0},"published_at":"2026-04-11T11:40:07.000000Z","created_at":"2026-03-14T16:31:16.000000Z","updated_at":"2026-03-14T22:12:22.000000Z"},{"id":5,"title":"Checklist Integrasi Aplikasi Lain","slug":"checklist-integrasi-aplikasi-lain","content":"Pastikan produk menggunakan `is_licensed = true` agar order dapat menghasilkan lisensi.\n\nAktifkan setting `auto_license` jika lisensi ingin dibuat otomatis saat pembayaran berhasil.\n\nAplikasi lain perlu mengirim `license_key`, `product_code`, dan bila perlu `domain` saat memverifikasi lisensi.\n\nTangani response `200`, `403`, `404`, dan `422` agar user mendapatkan pesan aktivasi yang jelas.\n\nDisarankan menyimpan hasil verifikasi ke cache lokal dan melakukan pengecekan ulang secara periodik.","excerpt":"Pastikan produk menggunakan `is_licensed = true` agar order dapat menghasilkan lisensi. Aktifkan setting `auto_license` jika lisensi ingin dibuat otomatis saat ...","category":"installation","type":"article","status":"published","review_status":"approved","visibility":"public","faq_group":null,"tags":[],"section_id":null,"section":null,"product_id":null,"sort_order":13,"order":13,"is_published":true,"current_revision":1,"view_count":0,"feedback":{"helpful":0,"not_helpful":0},"published_at":"2026-04-11T11:40:07.000000Z","created_at":"2026-03-14T16:36:43.000000Z","updated_at":"2026-03-14T22:12:22.000000Z"}],"knowledge_base":{"sections":[],"articles":[{"id":1,"title":"44444","slug":"44444","section_id":null,"excerpt":null},{"id":2,"title":"Auto Generate Lisensi: Cara Kerja","slug":"auto-generate-lisensi-cara-kerja","section_id":null,"excerpt":null},{"id":3,"title":"API Verifikasi Lisensi","slug":"api-verifikasi-lisensi","section_id":null,"excerpt":null},{"id":5,"title":"Checklist Integrasi Aplikasi Lain","slug":"checklist-integrasi-aplikasi-lain","section_id":null,"excerpt":null}],"faq_groups":[{"group":"general","items":[{"id":4,"title":"Contoh Integrasi Script Lisensi","content":"Contoh PHP:\n```php\n<?php\n$payload = [\n    'license_key' => 'ADK-STORE01-HRXZX4FIEPW2K5WQ',\n    'product_code' => 'STORE01',\n    'domain' => $_SERVER['HTTP_HOST'] ?? 'localhost',\n];\n\n$ch = curl_init('https:\/\/adk-store.test\/api\/licenses\/verify');\ncurl_setopt_array($ch, [\n    CURLOPT_POST => true,\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => ['Content-Type: application\/json', 'Accept: application\/json'],\n    CURLOPT_POSTFIELDS => json_encode($payload),\n]);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\n$data = json_decode($response, true);\nif ($httpCode !== 200 || ($data['status'] ?? 'error') !== 'success') {\n    exit('Lisensi tidak valid');\n}\n```\n\nContoh JavaScript\/Node.js:\n```js\nconst res = await fetch('https:\/\/adk-store.test\/api\/licenses\/verify', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application\/json',\n    'Accept': 'application\/json',\n  },\n  body: JSON.stringify({\n    license_key: process.env.APP_LICENSE_KEY,\n    product_code: process.env.APP_PRODUCT_CODE,\n    domain: 'plugin.example.com',\n  }),\n});\n\nconst data = await res.json();\nif (!res.ok || data.status !== 'success') {\n  throw new Error(data.message || 'Lisensi tidak valid');\n}\n```\n\nSaran implementasi: jalankan verifikasi saat aktivasi plugin\/script, simpan hasilnya dalam cache lokal, lalu cek ulang secara periodik sesuai kebutuhan Anda.\n\nJangan hardcode bypass di sisi client. Tetap lakukan pemeriksaan lisensi di sisi server atau saat bootstrap aplikasi\/plugin.\n\nContoh file terpisah untuk integrasi ada di folder `examples\/license-clients` pada repository.","slug":"contoh-integrasi-script-lisensi"}]}]}}