advanced_reports ke produk, dan setiap pelanggan yang membayar akan mendapatkan grant yang diperiksa aplikasi Anda melalui API atau tetap disinkronkan dengan webhook. Tidak ada platform eksternal, langkah OAuth, atau langkah pengiriman: grant itu sendiri adalah kapabilitasnya.Apa yang Dikirimkan
Tidak ada yang keluar dari Dodo Payments. Grant adalah deliverable-nya:- Saat pembelian, Dodo Payments membuat grant langsung di
Delivered. Grant tidak pernah masuk kePending, tidak memerlukan tindakan pelanggan, dan tidak memiliki langkah pengiriman yang dapat gagal. - Grant membawa payload
featurebertipe:{ "feature_type": "boolean", "feature_id": "advanced_reports" }. Aplikasi Anda membacafeature_iduntuk menentukan fitur yang akan dibuka. - Pembatalan, pengembalian dana, atau pencabutan manual memindahkan grant ke
Revoked, dan flag tersebut menghilang dari grant yang dikirimkan kepada pelanggan.
feature_id adalah identifier yang Anda pilih, dan tidak unik di antara entitlement. Dua entitlement dapat memberikan feature_id yang sama, misalnya paket Pro bulanan dan tahunan yang sama-sama memberikan advanced_reports.Membuat Feature Flag
Open Entitlements
Name the Flag
api_access), dan Anda dapat mengeditnya. Nilai ini tidak boleh berisi spasi.
Creating a feature flag. The Feature ID is what your application checks; Meta Data attaches limits alongside the flag.
Add Metadata (Optional)
Confirm

The created feature flag. The right pane tracks every customer grant issued from it.
Melampirkan ke Produk
Buka produk atau buat produk baru, lalu cari kartu Entitlements. Klik + untuk melampirkan entitlement yang sudah ada, pilih feature flag Anda, lalu klik Done.
Attaching the feature flag to a product. One product can deliver multiple entitlements.

The product now includes the feature flag. Every successful purchase or active subscription grants it.
Konfigurasi yang Diperlukan
Buat melalui API
Melampirkan Batas dengan Metadata
Flag boolean menjawab “Apakah pelanggan ini memiliki fitur tersebut?” Metadata menjawab “Dengan konfigurasi apa?” Metadata entitlement menerima nilai string, integer, number, dan boolean. Setiap grant mengambil snapshot beku dari metadata entitlement saat grant dibuat. Snapshot inilah yang membuat metadata aman digunakan untuk batas paket:- Mengedit metadata entitlement setelahnya hanya memengaruhi grant di masa mendatang. Pelanggan tetap menggunakan batas yang mereka beli.
- Setiap grant mengembalikan snapshot-nya di field
metadata, sehingga satu panggilan API memberi Anda flag beserta konfigurasinya.
advanced_reports dengan { "tier": "pro", "monthly_report_limit": 100 } memungkinkan aplikasi Anda membuka dashboard dan menerapkan kuota 100 laporan tanpa pencarian kedua. Jika kemudian Anda menaikkan batas menjadi 250, pelanggan yang sudah ada tetap memiliki batas 100 sampai mereka menerima grant baru, misalnya setelah perubahan paket.
Memeriksa Fitur Pelanggan
Untuk membuat kumpulan fitur yang dimiliki pelanggan, tampilkan daftar grant feature flag yang dikirimkan kepada mereka. Endpoint ini mengembalikan satu baris per grant di seluruh entitlement, dan Anda dapat memfilternya berdasarkanintegration_type dan status. Contoh-contoh ini menggunakan client dari Membuat melalui API.
feature hanya diisi pada grant feature_flag. Payload ini bernilai null untuk setiap jenis integrasi lainnya. Lihat referensi API List Customer Grants untuk bentuk respons lengkap.Siklus hidup
Grant feature flag mengikuti siklus hidup grant standar dengan satu penyederhanaan: tidak ada langkah pengiriman, sehingga grant tidak pernah berada diPending dan tidak pernah berpindah ke Failed.
Webhooks
Untuk mencerminkan flag ke database Anda sendiri alih-alih melakukan polling, berlangganan ke evententitlement_grant.*:
entitlement_grant.createdtiba dalam keadaan sudahDelivered, dengan payloadfeature. Aktifkan fitur tersebut.entitlement_grant.delivereddipicu saat grant yang sebelumnya dicabut dipulihkan. Aktifkan kembali fitur tersebut.entitlement_grant.revokedberarti akses telah ditarik. Nonaktifkan fitur tersebut, dan periksarevocation_reasonuntuk menentukan pesan Anda.
entitlement_grant.failed, karena pengiriman berlangsung sepenuhnya di dalam Dodo Payments.
Contoh: Paket Pro Membuka Laporan Lanjutan
- Buat flag. Tetapkan
feature_id: advanced_reportsdengan metadata{ "tier": "pro", "monthly_report_limit": 100 }. - Lampirkan flag tersebut ke produk subscription Pro Plan Anda.
- Pelanggan berlangganan. Dodo Payments membuat grant
Delivereddan memicuentitlement_grant.created. Handler webhook Anda mengaktifkanadvanced_reportsuntuk pelanggan dengan batas 100. - Aplikasi Anda membatasi fitur tersebut. Saat dashboard dimuat, periksa kumpulan fitur yang di-cache (atau panggil
listEntitlementGrants) dan tampilkan tab laporan hanya ketikaadvanced_reportstersedia. - Pelanggan membatalkan subscription. Dodo Payments mencabut grant dan memicu
entitlement_grant.revoked, lalu handler Anda menonaktifkan fitur tersebut. Jika subscription kemudian pulih melalui dunning,entitlement_grant.deliveredmemulihkan fitur tanpa perubahan kode.
Praktik Terbaik
- Gunakan ID fitur yang stabil di
snake_case. Kode aplikasi Anda memeriksa string ini, sehingga mengganti namanya merupakan perubahan yang merusak di kedua sisi. - Gunakan satu flag per kapabilitas. Pilih
advanced_reportsdanapi_accesssebagai dua entitlement daripada satupro_bundle, agar pencabutan dan kombinasi paket tetap rapi. - Dorong status dari webhook, lalu verifikasi dengan API. Webhook menjaga database Anda tetap terkini. Endpoint daftar merupakan sumber kebenaran untuk pekerjaan rekonsiliasi dan cache miss.
- Perlakukan
Revokedsebagai tindakan segera. Flag yang dicabut berarti pelanggan tidak lagi membayar fitur tersebut. Terapkan pembatasan pada request berikutnya, bukan sesi berikutnya. - Tempatkan batas di metadata, bukan di kode. Mengubah kuota kemudian hanya memerlukan pengeditan entitlement. Pelanggan baru mendapatkan nilai baru, dan grant yang sudah ada tetap menyimpan snapshot yang mereka beli.