advanced_reports vào một sản phẩm, và mọi khách hàng thanh toán đều nhận được một grant mà ứng dụng của bạn có thể kiểm tra qua API hoặc đồng bộ qua webhooks. Không cần nền tảng bên ngoài, không cần OAuth, không có bước phân phối — chính grant là capability.Nội dung được cung cấp
Không có gì rời khỏi Dodo Payments — grant chính là nội dung được cung cấp:- Khi mua hàng, grant được tạo và chuyển thẳng sang
Delivered. Không có giai đoạnPending, không cần khách hàng thực hiện thao tác nào và cũng không có khả năng delivery thất bại. - Grant chứa payload có kiểu
feature:{ "feature_type": "boolean", "feature_id": "advanced_reports" }. Ứng dụng của bạn đọcfeature_idđể quyết định cần mở khóa tính năng nào. - Khi hủy, hoàn tiền hoặc revoke thủ công, grant được chuyển sang
Revokedvà ứng dụng của bạn nhận thấy flag biến mất.
feature_id là một mã định danh do merchant lựa chọn, không có tính duy nhất giữa các entitlement. Hai entitlement có thể cấp cùng một feature_id — ví dụ: plan Pro hàng tháng và hàng năm đều cấp advanced_reports.Tạo feature flag
Open Entitlements
Name the flag

Creating a feature flag. The Feature ID is what your application checks; Meta Data attaches limits alongside the flag.
Optionally add metadata
Confirm

The created feature flag. The right pane tracks every customer grant issued from it.
Đính kèm vào sản phẩm
Mở một sản phẩm (hoặc tạo sản phẩm mới), tìm thẻ Entitlements và nhấp vào + để đính kèm các entitlement hiện có. Chọn feature flag của bạn và nhấp vào 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ó feature không?”. Metadata trả lời câu hỏi “với cấu hình nào?”. Metadata của entitlement chấp nhận các giá trị string, integer, number và boolean, đồng thời mỗi grant nhận một ảnh chụp cố định của metadata entitlement tại thời điểm được tạo. Cơ chế ảnh chụp đó giúp metadata an toàn khi 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 đã mua.
- Ảnh chụp được trả về trên mỗi grant dưới dạng trường
metadata, nên một lần gọi API 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 mở khóa dashboard và thực thi quota 100 báo cáo mà không cần tra cứu lần thứ 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 (ví dụ sau khi thay đổi plan).
Kiểm tra các feature của khách hàng
Liệt kê các grant feature flag đã được cung cấp cho khách hàng và xây dựng tập hợp các feature đã bật. Endpoint trả về một dòng cho mỗi grant trên tất cả entitlement, có thể lọc theointegration_type và status.
feature chỉ được điền trên các grant feature_flag; với mọi loại integration khác, payload là null. Xem tài liệu tham khảo API List Customer Grants để biết đầy đủ cấu trúc response.Vòng đời
Grant của feature flag tuân theo vòng đời grant 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ờ ở trạng tháiPending và cũng không bao giờ chuyển sang Failed.
Webhooks
Đăng ký các sự kiệnentitlement_grant.* để phản ánh các flag vào cơ sở dữ liệu riêng thay vì polling:
entitlement_grant.created— đã ở trạng tháiDeliveredvà đi kèm payloadfeature. Bật tính năng.entitlement_grant.delivered— được kích hoạt khi một grant trước đó đã bị revoke được khôi phục. Bật lại tính năng.entitlement_grant.revoked— quyền truy cập bị thu hồi. Tắt tính năng và kiểm trarevocation_reasonđể quyết định nội dung thông báo.
entitlement_grant.failed cho feature flag — việc phân phối diễn ra hoàn toàn bên trong Dodo Payments và không thể thất bại.
Ví dụ: plan Pro mở khóa báo cáo nâng cao
- Tạo flag.
feature_id: advanced_reportsvới metadata{ "tier": "pro", "monthly_report_limit": 100 }. - Gắn flag vào sản phẩm subscription Pro Plan.
- Khách hàng đăng ký subscription. Dodo Payments tạo grant
Deliveredvà kích hoạtentitlement_grant.created; webhook handler của bạn bậtadvanced_reportscho khách hàng với giới hạn là 100. - Ứng dụng kiểm soát quyền truy cập tính năng. Khi tải dashboard, kiểm tra tập tính năng đã lưu trong cache (hoặc gọi
listEntitlementGrants) và chỉ render tab báo cáo khiadvanced_reportshiện diện. - Khách hàng hủy subscription. Dodo Payments revoke grant và kích hoạt
entitlement_grant.revoked; handler của bạn tắt tính năng. Nếu sau đó khách hàng khôi phục subscription thông qua dunning,entitlement_grant.deliveredsẽ khôi phục tính năng — không cần thay đổi code.
Thực hành tốt nhất
- Sử dụng feature id ổn định, theo snake_case. Code ứng dụng của bạn kiểm tra các chuỗi này; việc đổi tên một feature id là breaking change ở cả hai phía.
- Mỗi capability một flag. Nên dùng
advanced_reports+api_accesslàm hai entitlement thay vì mộtpro_bundleduy nhất — việc revoke và kết hợp các plan sẽ rõ ràng hơn. - Điều khiển state từ webhook, xác minh bằng API. Webhook giúp database của bạn luôn cập nhật; endpoint list là nguồn dữ liệu chính xác để các job reconciliation và xử lý cache miss sử dụng.
- Xử lý
Revokedngay lập tức. Một flag đã bị revoke nghĩa là khách hàng không còn trả phí cho tính năng đó. Kiểm soát quyền truy cập ở 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 sẽ tự động nhận giá trị này, trong khi các grant hiện có vẫn giữ snapshot đã mua.