Unduh MarkdownDokumen asli di GitHub
Contoh adaptor lisensi milik pedagang
Contoh Python 3.10+ ini mengimplementasikan bridge HTTP eksternal Launch dengan persistensi peristiwa/nonce SQLite dan worker pemulihan. Contoh ini tidak menghasilkan lisensi, memvalidasi fitur yang dilindungi, atau menggantikan sistem lisensi Anda.
Implementasikan modul Python dengan hook berikut:
def apply_snapshot(snapshot):
# Call your licensing system with snapshot["event_id"] as its durable
# idempotency key. Apply desired_state and the absolute purchased dates.
# Return only after confirming the original operation was applied.
# Raise ValueError for a result requiring manual review.
...
def delivery(snapshot):
# Read an existing result owned by this purchase; do not issue here.
return {"type": "instructions", "value": "Your own delivery instructions", "expires_at": None}
Ganti ... dengan integrasi sebenarnya sebelum mengonfigurasi backend. Jika tidak ada modul backend yang dikonfigurasi, hook bawaan memunculkan NotImplementedError; peristiwa masuk ke pemeriksaan manual dan tidak pernah mengklaim bahwa lisensi telah diterbitkan. Worker contoh dapat mencoba ulang hook setelah crash atau kesalahan yang tidak pasti, sehingga backend lisensi Anda harus melakukan deduplikasi/pemulihan dengan ID peristiwa yang sama.
Konfigurasikan adaptor menggunakan variabel lingkungan, dan jauhkan kunci dari kontrol sumber serta riwayat shell:
CUSTOM_LICENSING_KEY: encoding Base64 standar dari 32–128 byte acak, sesuai dengan Launch.CUSTOM_LICENSING_KEY_ID:key-1, atau pengenal kunci yang Anda konfigurasi.CUSTOM_LICENSING_CONNECTION_REF: referensi koneksi yang sesuai.CUSTOM_LICENSING_ENVIRONMENT:sandboxataulive.CUSTOM_LICENSING_DATABASE: path SQLite privat yang dapat ditulis di luar checkout Anda; pertahankan datanya saat mulai ulang.CUSTOM_LICENSING_BACKEND: modul yang dapat diimpor dan mengimplementasikan hook di atas.CUSTOM_LICENSING_PORT: port pendengar lokal, default18883.
Jalankan python server.py. Untuk pengujian sandbox lokal, konfigurasikan http://127.0.0.1:18883 di Launch dan aktifkan pengecualian HTTP loopback secara eksplisit. Untuk produksi, gunakan terminasi HTTPS, supervisi proses, cadangan basis data yang terlindungi, dan verifikasi SDK/runtime backend Anda sendiri. Nyatakan hanya jenis pembelian/penyampaian yang benar-benar didukung backend; sesuaikan capabilities dengan itu.
Setelah memperbaiki masalah backend, python server.py --retry-event ORIGINAL_EVENT_UUID memasukkan kembali payload tersimpan yang sama ke antrean secara lokal. Pada halaman tugas lisensi Launch, coba ulang peristiwa asli tersebut juga. Jangan ubah ID atau tambahkan waktu lagi untuk memulihkan respons.
Contoh ini adalah titik awal, bukan kualifikasi produksi. Lease worker berlangsung 60 detik; batasi panggilan hook dengan timeout yang lebih singkat atau perbarui lease. Tambahkan pemantauan, prosedur rotasi, pemeriksaan bisnis/skema yang lebih ketat, dan kontrol operasional deployment Anda sebelum menerima pembelian live. Panduan integrasi dan OpenAPI mendefinisikan protokol. Jangan pernah menggunakan respons status Launch sebagai izin untuk menjalankan kode yang dilindungi.