Unduh MarkdownDokumen asli di GitHub
Batas masa pembelian Launch dan SDK akun
Perubahan ini hanya dikembangkan dan diverifikasi secara lokal; Launch belum di-deploy dan paket SDK belum dirilis. Kode sumber saat ini bergantung pada protokol otorisasi akun Licentivo dan pembaruan SDK resmi yang menyertainya, dan tidak dapat digunakan bersama server lama yang hanya mendukung kunci lisensi jangka panjang.
Tanggung jawab
| Kemampuan | Pihak yang bertanggung jawab |
|---|---|
| Pendaftaran, login, keamanan akun, produk, pesanan, pembayaran, pengembalian dana | Launch |
| Penawaran perpanjangan/peningkatan, siklus pembelian, dan perhitungan waktu mulai dan akhir absolut | Launch |
| Pelaksanaan pemetaan referensi paket ke produk/kebijakan lisensi dan validasi kebijakan | Licentivo; Launch menyediakan titik masuk pemilihan dan pendaftaran |
| Lisensi, izin fitur, kuota perangkat, sesi otorisasi, lisensi offline | Licentivo dan SDK resmi |
| Daftar perangkat dan pelepasan jarak jauh | Licentivo; Launch memproksikan permintaan akun saat ini dan menampilkan hasil |
| Penyimpanan kredensial login, pemulihan akun, titik masuk keluar | Launch SDK |
Pesanan, masa pembelian, dan penanda sinkronisasi selesai di Launch tidak dapat mengizinkan fitur yang dilindungi. Klien harus menjalankan operasi bisnis yang dilindungi melalui antarmuka runtime SDK resmi seperti RunFeature.
Setiap produk Launch menyimpan rute produk Licentivo publik yang stabil. Paket untuk produk yang sama dapat memilih kebijakan berbeda, tetapi tidak dapat beralih ke produk jarak jauh lain; penyimpanan pemetaan divalidasi secara serial menggunakan kunci baris basis data produk bersama. Identitas pelanggan, publikasi paket, dan konfigurasi integrasi SDK membaca pengikatan yang sama; draf tidak dapat mengubah konteks produk pelanggan yang sudah membeli. Ini hanya memvalidasi konsistensi konfigurasi integrasi dan tidak menentukan otorisasi fitur atau perangkat. Ketika basis data lama tidak memiliki bidang stabil, utamakan riwayat pembelian dan publikasi; jika tidak dapat dipastikan secara unik, kembalikan PRODUCT_MAPPING_CONFLICT. Lihat Perbaikan konkurensi pemetaan.
Sinkronisasi masa pembelian
Gunakan kembali antarmuka yang ada tanpa menambahkan fakta pembayaran, fakta pengembalian dana, atau layanan penawaran:
POST /api/v1/launch/connections、PUT /connections/{id}: daftarkan kunci publik penandatanganan identitas dan buat koneksi terpisah untuk lingkungan produksi dan uji.PUT /api/v1/launch/connections/{id}/plans/{plan}: daftarkan referensi versi paket Launch yang tidak dapat diduplikasi serta versi produk dan kebijakan jarak jauh.POST /api/v1/launch/connections/{id}/events: kirim snapshot pembelian berversi yang lengkap.GET /api/v1/launch/connections/{id}/events/{event}: konfirmasikan hasil pemrosesan.POST /api/v1/launch/connections/{id}/events/{event}/retry: coba ulang peristiwa asli setelah pemeriksaan.
Snapshot hanya berisi nomor peristiwa, lingkungan, jenis peristiwa, referensi pembelian, referensi akun anonim, produk Launch, referensi versi paket, versi yang meningkat, dan valid_from / valid_until absolut; ID lisensi lama ditambahkan saat migrasi. Tidak mengirim kunci pembayaran, harga, email pelanggan, atau kunci lisensi jangka panjang. valid_until pembelian permanen adalah null; Licentivo memvalidasi kecocokannya dengan kebijakan.
Launch mengonfirmasi pembayaran, mencatat interval cakupan pembelian yang tidak dapat diubah, dan menyimpan tugas sinkronisasi dalam transaksi basis data yang sama. Tenggat dihitung menurut siklus kalender hari/bulan/tahun; perpanjangan menggunakan titik acuan pembelian asli, dan jika dibayar setelah kedaluwarsa dimulai dari waktu pembayaran sebenarnya. Penawaran peningkatan dan masa berlaku tetap dihitung di Launch.
Setiap perubahan mengirim nilai absolut lengkap; percobaan ulang menggunakan ID peristiwa dan isi yang sama, tanpa mengirim ‘tambahkan N hari lagi’. Tugas menyimpan permintaan, koneksi jarak jauh, dan kemajuan pemrosesan secara persisten; respons hilang, proses dimulai ulang, dan worker bersamaan tidak menyebabkan penambahan masa berulang.
HTTP 202 hanya berarti Licentivo telah menerima. Sinkronisasi ditandai selesai hanya setelah menerima applied; pending terus diperiksa, sedangkan manual_review dan stale yang tidak dapat dikonfirmasi tetap menunggu pemeriksaan. Kesalahan jaringan dicoba ulang dengan backoff; setelah kegagalan berturut-turut mencapai batas, masuk ke pemeriksaan manual.
Pengembalian dana hanya menghapus interval cakupan pesanan terkait: pengembalian pesanan peningkatan memulihkan paket dasar; pengembalian pesanan perpanjangan menghapus bagian perpanjangan terkait; jika masih ada pembelian yang belum dikembalikan dananya, hasil perhitungan ulang disinkronkan tanpa mencabut semua pembelian. Setelah semua pembelian dikembalikan dananya, kirim entitlement.refunded. Pembelian ulang berikutnya menggunakan referensi pembelian baru agar lisensi jarak jauh yang dicabut tidak hidup kembali.
Chargeback yang diputus kalah atau pembalikan pembayaran yang dikonfirmasi kanal juga hanya menghapus cakupan pembelian pesanan terkait; pesanan ditampilkan sebagai reversed, dan perubahan lisensi aktual ditangani setelah Licentivo menerapkan snapshot pembelian. Sengketa yang masih tertunda tidak mengubah catatan pembelian. Pemberitahuan pembalikan historis yang menunggu pemeriksaan dapat dipulihkan melalui verifikasi ulang tanda tangan dan pengiriman ulang dari kanal asli.
Setelah pengembalian dana yang tidak diketahui masuk ke pemeriksaan manual, administrator dapat memulihkan operasi asli melalui POST /api/v1/admin/refunds/{id}/reconcile. Tanda terima harus cocok dengan transaksi, mata uang, dan jumlah asli; nomor operasi dan waktu persetujuan asli tidak boleh diubah, dan permintaan dana tidak boleh dikirim ulang secara membabi buta setelah jendela percobaan ulang aman terlampaui.
Akun dan klien
- Klien menggunakan
POST /api/v1/auth/loginuntuk membuat sesi login desktop nyata. - Launch SDK meminta
POST /api/v1/software/products/{id}/identity, dengan menentukansandboxataulive. - Launch menerbitkan assertion identitas maksimal 120 detik yang menentukan penerima serta konteks produk/pembelian, termasuk
sidlogin nyata dan kedaluwarsa login. Assertion tidak berisi fitur, kuota perangkat, atau izin offline. - Launch SDK meneruskan
identity_token,launch_connection_id, danenvironmentke SDK resmi hanya dalam memori;license_keykosong. - SDK resmi memanggil Licentivo
/api/v1/launch/exchange; Licentivo menentukan otorisasi dan mengirim kredensial perangkat serta lisensi bertanda tangan.
Catatan akun normal Launch menggunakan v2 dan hanya menyimpan sesi akun serta informasi rute publik, bukan assertion, kunci lisensi, atau grant otorisasi. Saat keluar secara eksplisit, catatan berubah menjadi tugas privat v3 yang hanya untuk pencabutan dan tidak dapat dipulihkan sebagai login; hapus setelah pencabutan sesi Launch dikonfirmasi. Endpoint /credential lama mengembalikan HTTP 410. Kunci publik dan ID produk dapat didistribusikan bersama aplikasi; kunci manajemen hanya disimpan di server.
Keluar, menutup, dan melepas perangkat dari jarak jauh
| Operasi | Perilaku |
|---|---|
| Penutupan biasa Close / Dispose / Drop | Menghentikan runtime, mempertahankan pembelian, pengikatan perangkat, dan akun yang secara aktif dipilih untuk diingat |
| Titik masuk kompatibilitas Logout / ReleaseDevice | Menandai akun lokal keluar dan memanggil logout SDK resmi, lalu mencabut sesi di Launch; logout akun yang belum dikonfirmasi mempertahankan tugas aman |
| Kelola perangkat di Launch ketika perangkat tidak dapat dijangkau | Memproksikan daftar perangkat, permintaan pelepasan, dan hasil pemrosesan Licentivo |
Logout SDK resmi segera menghentikan penggunaan lisensi oleh proses ini, membersihkan kredensial runtime, dan menggunakan tiket logout khusus untuk mencabut pengikatan jarak jauh. Kegagalan jaringan harus mempertahankan .logout.json SDK; hasil harus menunjukkan pencabutan jarak jauh masih tertunda dan tidak boleh melaporkan pelepasan berhasil. Launch SDK tidak menghapus, menelusuri untuk membersihkan, atau mengubah direktori cache SDK resmi; tiket pencabutan tertunda dipulihkan dan diproses oleh SDK resmi saat cache terkait diinisialisasi kembali.
Logout akun Launch juga memiliki status tugas independen: ketika jaringan gagal, dibatalkan, atau respons hilang, jangan hapus catatan aman yang diperlukan untuk percobaan ulang; login, pemulihan, atau logout berikutnya hanya mengirim ulang pencabutan sesi asli, dan tugas tersebut tidak dapat digunakan untuk memulihkan login. Hapus setelah keberhasilan atau HTTP 401 mengonfirmasi sesi tidak valid. Pemulihan lintas proses memerlukan Store aman yang persisten; MemoryStore hanya berlaku dalam proses ini. Lihat Perbaikan percobaan ulang logout dan pengujian bersama.
Permintaan pelepasan jarak jauh membawa activation_id dan expected_generation yang dikembalikan daftar asli; percobaan ulang menggunakan operation_id yang sama. Launch tidak menghitung jumlah pelepasan, tidak menyetujui atau menjalankan antrean pelepasan sendiri, dan tidak otomatis mencoba ulang operasi lama setelah memperbarui generasi. Jumlah tersisa, izin pelepasan, peninjauan, dan hasil akhir semuanya berasal dari Licentivo.
Pemulihan akun Restore memerlukan jaringan untuk mengonfirmasi akun dan memperoleh assertion identitas baru; Launch tidak memilih sendiri untuk mengizinkan offline ketika layanan akun gagal. Aplikasi yang memerlukan startup offline harus mengintegrasikan kontrak pemulihan SDK resmi; pemeriksaan tanda tangan, masa offline, dan jam tetap dilakukan oleh SDK resmi.
Pencabutan identitas sisi server
Terhubung ke antarmuka Licentivo V39 yang ada, tanpa memerlukan antarmuka fakta komersial atau penawaran:
POST /api/v1/launch/connections/{id}/session-revocations: cabutsidtertentu atau login lama akun dan kembalikan tanda terima yang dikomit secara sinkron.GET /api/v1/launch/connections/{id}/session-revocations/{event_id}: ambil hasil peristiwa asli yang telah dikomit untuk memulihkan permintaan dengan respons hilang.
Logout desktop biasa dan logout paksa sesi tertentu menggunakan scope=session; pembatalan semua sesi akibat perubahan atau reset kata sandi, perubahan email, penonaktifan akun, dan perubahan peran personel situs menggunakan scope=account. Logout biasa sesi situs tidak memengaruhi perangkat lunak pelanggan. Launch hanya memberi tahu bahwa identitas tidak valid; sesi otorisasi jarak jauh, kredensial runtime, dan pelepasan perangkat semuanya dilakukan oleh Licentivo, tanpa mengubah masa pembelian atau mengonsumsi jatah pelepasan yang dikelola Launch.
Pembatalan sesi lokal dan pengantrean pemberitahuan dilakukan dalam transaksi yang sama. Antrean membekukan koneksi dan lingkungan yang sudah ada saat itu, lalu mencoba ulang dengan ID peristiwa, pengenal anonim akun, dan permintaan asli yang sama; koneksi yang dibuat kemudian tidak menerima pencabutan akun historis. Periksa tanda terima asli terlebih dahulu dan kirim ulang hanya setelah dipastikan tidak ada; hasil setiap lingkungan disimpan secara persisten terpisah, dan selesai ditampilkan hanya setelah semua tanda terima berhasil yang cocok diterima. Gangguan jaringan dicoba ulang otomatis; konflik kredensial/kontrak masuk ke pemeriksaan manual. Administrator dapat melihat dan mencoba ulang pemberitahuan di halaman tugas sinkronisasi; percobaan ulang tidak membuat peristiwa pencabutan baru.
Pencabutan cakupan akun menggunakan revoked_before saat pertama kali diterima Licentivo sebagai batas. Selama pemberitahuan tertunda, login desktop dan assertion identitas baru dijeda; setelah selesai, auth_time login nyata harus benar-benar lebih lambat daripada detik cutoff pada tanda terima semua lingkungan. Login pada detik yang sama dapat diautentikasi ulang kemudian; memperbarui iat atau assertion identitas tidak dapat melanjutkan login lama. Login situs tetap dapat digunakan untuk operasi pemulihan. Setelah akun diaktifkan kembali, login ulang juga wajib dan sesi lama tidak dipulihkan.
Migrasi data lama
Pembelian dengan pengikatan lisensi lama yang telah dikonfirmasi menggunakan entitlement.migrated dan hanya mengirim ID lisensi lama tanpa membaca atau mengirim kunci lama. Setelah Licentivo mengonfirmasi migrasi, kirim snapshot versi baru yang terpisah untuk menyinkronkan masa dan status komersial saat ini. Hasil penerbitan lama yang belum dikonfirmasi dan otorisasi yang tidak kompatibel memerlukan pemeriksaan manual; perintah manajemen lama tidak diputar ulang secara otomatis.
Logout SDK biasa, pelepasan perangkat jarak jauh, dan pencabutan identitas server semuanya terhubung ke antarmuka yang ada. Penonaktifan jarak jauh tetap dibatasi oleh masa lisensi offline yang sudah diterbitkan SDK resmi; Launch tidak menjanjikan pencabutan seketika pada perangkat offline.
Logout akun menggunakan tugas aman independen, ringkasan logout sesi lokal, dan koordinasi lintas proses; instance lama hanya menangani loginnya sendiri. Pemulihan setelah kegagalan penyimpanan terlebih dahulu mengirim ulang pencabutan akun, tanpa memperoleh identitas atau memulai otorisasi; fitur, lisensi offline, generasi perangkat, dan jatah pelepasan tetap ditentukan oleh Licentivo. Lihat Perbaikan dan catatan pengujian bersama kedua sisi.