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 và không có khả năng phân phối 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 nội dung cần mở khóa. - Khi hủy, hoàn tiền hoặc thu hồi thủ công, grant chuyển sang
revoked, và ứ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 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 phân phối, nên grant không bao giờ ở trạng tháipending và 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áideliveredkhi đến nơi, cùng payloadfeature. Bật feature.entitlement_grant.delivered— được phát khi một grant trước đó đã bị thu hồi được khôi phục. Bật lại feature.entitlement_grant.revoked— quyền truy cập bị rút. Tắt feature 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 }. - Đính kèm flag vào sản phẩm 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 feature. Khi tải dashboard, kiểm tra tập hợp feature đã cache (hoặc gọi
listEntitlementGrants) và chỉ hiển thị tab báo cáo khi cóadvanced_reports. - Khách hàng hủy. Dodo Payments thu hồi grant và phát
entitlement_grant.revoked; handler của bạn tắt feature. Nếu sau đó khách hàng khôi phục subscription qua dunning,entitlement_grant.deliveredsẽ khôi phục feature — không cần thay đổi code.
Thực hành tốt nhất
- 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 chuỗi là thay đổi breaking ở cả hai phía.
- Mỗi capability dùng một flag. Ưu tiên
advanced_reports+api_accessdưới dạng hai entitlement thay vì mộtpro_bundleduy nhất — việc thu hồi và kết hợp các plan sẽ rõ ràng hơn. - Điều khiển trạng thái từ webhooks, xác minh bằng API. Webhooks giữ cho cơ sở dữ liệu luôn được cập nhật; endpoint list là nguồn dữ liệu chính xác để reconciliation job và xử lý cache miss.
- Xử lý
revokedngay lập tức. Flag bị thu hồi nghĩa là khách hàng không còn trả tiền cho feature. Hãy kiểm soá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 sẽ tự động nhận giới hạn mới, trong khi các grant hiện tại giữ nguyên ảnh chụp đã mua.