advanced_reports vào một product, và mọi khách hàng thanh toán sẽ nhận được một grant mà ứng dụng của bạn kiểm tra thông qua API hoặc đồng bộ qua webhooks. Không cần platform bên ngoài, bước OAuth hay bước delivery: bản thân grant chính là capability.Những gì được cung cấp
Không có gì rời khỏi Dodo Payments. Grant chính là deliverable:- Khi purchase, Dodo Payments tạo grant trực tiếp ở
Delivered. Grant không bao giờ chuyển sangPending, không cần khách hàng thực hiện hành động nào và không có bước delivery nào có thể thất bại. - Grant chứa payload
featurecó kiểu:{ "feature_type": "boolean", "feature_id": "advanced_reports" }. Ứng dụng của bạn đọcfeature_idđể quyết định tính năng nào cần mở khóa. - Khi hủy, refund hoặc revoke thủ công, grant được chuyển sang
Revokedvà flag biến mất khỏi các grant đã cung cấp cho khách hàng.
feature_id là một identifier do bạn chọn và không unique giữa các entitlement. Hai entitlement có thể cấp cùng một feature_id, chẳng hạn plan Pro theo tháng và theo năm đều cấp advanced_reports.Tạo Feature Flag
Open Entitlements
Name the Flag
api_access), và bạn có thể chỉnh sửa. Giá trị này không được chứa khoảng trắng.
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.
Đính kèm vào Product
Mở một product hoặc tạo product mới, sau đó tìm card Entitlements. Nhấp + để đính kèm các entitlement hiện có, chọn feature flag của bạn và nhấp 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.
Cấu hình bắt buộc
Tạo qua API
Đính kèm giới hạn bằng Metadata
Một flag boolean trả lời câu hỏi “Khách hàng này có tính năng không?”. Metadata trả lời câu hỏi “Với cấu hình nào?”. Entitlement metadata chấp nhận các giá trị kiểu string, integer, number và boolean. Mỗi grant nhận một snapshot cố định của metadata entitlement tại thời điểm grant được tạo. Snapshot giúp metadata an toàn khi sử dụng cho các giới hạn của plan:- Việc chỉnh sửa metadata của entitlement sau đó chỉ ảnh hưởng đến các grant trong tương lai. Khách hàng vẫn giữ các giới hạn theo plan đã mua.
- Mỗi grant trả về snapshot trong field
metadata, vì vậy một API call cung cấp cả flag và cấu hình của flag.
advanced_reports với { "tier": "pro", "monthly_report_limit": 100 } cho phép ứng dụng của bạn mở khóa dashboard và thực thi quota 100 report mà không cần lookup lần hai. Nếu sau đó bạn tăng giới hạn lên 250, khách hàng hiện tại vẫn giữ giới hạn 100 cho đến khi nhận grant mới, chẳng hạn sau khi đổi plan.
Kiểm tra các tính năng của khách hàng
Để tạo tập hợp các tính năng mà khách hàng có, hãy liệt kê các feature flag grant đã cung cấp cho họ. Endpoint trả về một row cho mỗi grant trên tất cả entitlement, và bạn có thể lọc theointegration_type và status. Các ví dụ này sử dụng client từ Tạo qua API.
feature chỉ được điền trên các grant feature_flag. Với mọi integration type khác, giá trị là null. Xem tài liệu API List Customer Grants để biết đầy đủ response shape.Vòng đời
Feature flag grant tuân theo grant lifecycle tiêu chuẩn với một điểm đơn giản hóa: không có bước delivery, vì vậy grant không bao giờ nằm ởPending và không bao giờ chuyển sang Failed.
Webhooks
Để mirror các flag vào database của riêng bạn thay vì polling, hãy subscribe vào các evententitlement_grant.*:
entitlement_grant.createdxuất hiện khi đã ở trạng tháiDelivered, cùng payloadfeature. Bật tính năng.entitlement_grant.deliveredđược phát khi một grant trước đó bị revoke được khôi phục. Bật lại tính năng.entitlement_grant.revokedcho biết quyền truy cập đã bị thu hồi. Tắt tính năng và kiểm trarevocation_reasonđể chọn nội dung messaging.
entitlement_grant.failed vì delivery diễn ra hoàn toàn bên trong Dodo Payments.
Ví dụ: Plan Pro mở khóa Advanced Reports
- Tạo flag. Thiết lập
feature_id: advanced_reportsvới metadata{ "tier": "pro", "monthly_report_limit": 100 }. - Đính kèm flag vào product subscription Pro Plan.
- Khách hàng đăng ký. Dodo Payments tạo grant
Deliveredvà phátentitlement_grant.created. Webhook handler của bạn bậtadvanced_reportscho khách hàng với giới hạn 100. - Ứng dụng kiểm soát tính năng. Khi dashboard tải, kiểm tra feature set đã cache (hoặc gọi
listEntitlementGrants) và chỉ render tab reports khiadvanced_reportshiện diện. - Khách hàng hủy. Dodo Payments revoke grant và phát
entitlement_grant.revoked, còn handler của bạn tắt tính năng. Nếu subscription sau đó khôi phục thông qua dunning,entitlement_grant.deliveredsẽ khôi phục tính năng mà không cần thay đổi code.
Best Practices
- Sử dụng feature ID ổn định trong
snake_case. Code của ứng dụng kiểm tra các string này, vì vậy việc đổi tên một string là breaking change ở cả hai phía. - Sử dụng một flag cho mỗi capability. Ưu tiên
advanced_reportsvàapi_accessdưới dạng hai entitlement thay vì mộtpro_bundleduy nhất, để việc revoke và kết hợp plan luôn rõ ràng. - Điều khiển state từ webhooks và xác minh bằng API. Webhook giúp database của bạn luôn cập nhật. List endpoint là source of truth cho các job reconciliation và cache miss.
- Xử lý
Revokedngay lập tức. Flag đã revoke có nghĩa là khách hàng không còn trả tiền cho tính năng đó. Hãy kiểm soát từ request tiếp theo, không phải session tiếp theo. - Đặt giới hạn trong metadata, không đặt trong code. Khi thay đổi quota, bạn chỉ cần chỉnh sửa entitlement. Khách hàng mới nhận giá trị mới, còn các grant hiện tại giữ snapshot đã mua.