API lisensi kustom
Launch mendukung Licentivo dan layanan lisensi kustom. Pilih satu penyedia untuk seluruh toko di Pengaturan sistem → Sistem lisensi.
Produk berlisensi kustom menggunakan layanan lisensi dan SDK milik pedagang. Launch mengelola penjualan, konfirmasi pembayaran, sinkronisasi status pembelian, dan kueri penyerahan.
- Konfigurasikan koneksi, kunci tanda tangan, serta pemetaan produk dan paket secara terpisah untuk sandbox dan live. Periksa koneksi sebelum menerbitkan paket.
- Koneksi yang memiliki pesanan tidak dapat langsung diganti. Migrasikan pesanan sebelum mengganti penyedia, lalu terbitkan ulang paket.
- Uji pembelian, perpanjangan, peningkatan, pengembalian dana, dan pemulihan kegagalan di lingkungan pengujian sebelum menerbitkan konfigurasi produksi.
Antarmuka layanan lisensi pedagang
Keempat antarmuka ini diterapkan oleh layanan lisensi pedagang dan dipanggil oleh server Launch. Jangan kirim permintaan ini ke www.licentivo.com.
| API | Tujuan |
|---|---|
GET /launch/v1/capabilities | Nyatakan protokol, koneksi, lingkungan, serta jenis pembelian dan penyerahan yang didukung. |
POST /launch/v1/events | Terima snapshot pembelian lengkap dan kembalikan tanda terima setelah peristiwa disimpan secara persisten. |
GET /launch/v1/events/{event_id} | Kueri tanda terima peristiwa asli. Hanya applied yang mengonfirmasi bahwa perubahan lisensi selesai. |
GET /launch/v1/entitlements/{entitlement_ref}/delivery | Baca penyerahan yang sudah ada untuk versi pembelian saat ini tanpa menerbitkan lisensi lagi. |
Snapshot berisi versi pembelian, status saat ini, dan tanggal berlaku absolut; valid_until=null berarti pembelian permanen. Pembelian dasar mungkin tetap ada setelah pengembalian dana, sehingga penerima harus menghitung ulang hak akses dari snapshot lengkap.
{
"schema": "launch-external-licensing-v1",
"event_id": "7bf84b91-2749-4b01-a6a7-bd527c488ee8",
"connection_ref": "merchant-01-sandbox",
"environment": "sandbox",
"type": "entitlement.snapshot",
"change_reason": "purchase",
"account_ref": "customer_opaque_001",
"entitlement_ref": "purchase_opaque_001",
"launch_product_id": "c6dd463e-50f7-4b76-8239-0a8ec6fc304b",
"launch_plan_version_id": "5459a073-9362-4b46-949d-9b0c5d84421a",
"product_ref": "desktop-editor",
"plan_ref": "professional-yearly-v1",
"version": 1,
"desired_state": "active",
"valid_from": "2026-10-26T00:00:00Z",
"valid_until": "2027-10-26T00:00:00Z"
}Tanda tangan dan percobaan ulang
Gunakan kunci HMAC-SHA256 terpisah dengan sedikitnya 32 byte acak untuk setiap koneksi. Permintaan berisi ID kunci, waktu Unix dalam detik, nonce acak, dan tanda tangan. Verifikasi tanda tangan, jendela waktu 300 detik, serta perlindungan pemakaian ulang nonce.
v1
<key_id>
<timestamp>
<nonce>
<UPPERCASE HTTP METHOD>
<encoded full path and raw query>
<lowercase SHA-256 of the exact request body>Jangan tambahkan baris baru di akhir masukan tanda tangan. X-Launch-Signature berisi v1= diikuti tanda tangan base64url tanpa padding. Isi GET kosong.
Percobaan ulang mempertahankan ID peristiwa dan isi persisnya, dengan nonce baru setiap kali. Setelah timeout, kueri peristiwa asli. Versi lama tidak boleh menimpa versi baru; 202 tidak mengonfirmasi bahwa lisensi sudah diterapkan.
Antarmuka administrasi dan pelanggan Launch
Antarmuka ini berada di situs Launch milik pedagang. Administrator memakai sesi web dan X-CSRF-Token. Pelanggan hanya dapat membaca pembelian mereka sendiri yang masih berlaku.
PUT /api/v1/admin/licensing/provider | {"provider":"custom_http"} |
GET/POST /api/v1/admin/licensing/connections | GET/POST |
PUT /api/v1/admin/licensing/connections/{id} | POST /api/v1/admin/licensing/connections/{id}/check |
PUT /api/v1/admin/products/{id}/licensing | environment + connection_id + mappings |
GET /api/v1/me/products/{id}/delivery?environment=sandbox | pending / ready / unavailable |
Penyerahan dapat berupa kunci lisensi, tautan aktivasi HTTPS, atau petunjuk teks biasa. Sinkronisasi yang berhasil tidak menggantikan pemeriksaan otorisasi saat klien dijalankan.
Protokol lengkap dan contoh · Unduh OpenAPI · Contoh penerima Python