权益会将成功付款或有效订阅转化为访问权限:发送到客户收件箱中的 License Key、由你的应用检查的 Feature Flag、Discord 角色、GitHub 仓库、Notion 模板、Framer remix 链接、Telegram 聊天邀请,或可下载的文件包。随着付款生命周期发生变化,Dodo Payments 会自动签发、跟踪和撤销这些访问权限。

The Entitlements dashboard. Each entitlement is a reusable template; the right pane shows individual customer grants.
什么是权益?
权益(entitlement) 是对你向客户交付的某项内容的可复用定义,例如 Pro License Key、“Patrons” Discord 角色、私有 GitHub 仓库的访问权限,或可下载的电子书包。你可以将权益附加到产品上,客户付款后,Dodo Payments 会交付这些权益。 客户购买产品后,Dodo Payments 会创建一条 授予记录(grant),表示向一位客户签发该权益。授予记录有四种状态:交付进行中时为Pending,客户获得访问权限后为 Delivered,交付无法完成时为 Failed,访问权限被撤回时为 Revoked。
可用集成
每项权益都通过一种集成进行交付。请选择与你销售内容相匹配的集成。License Keys
Digital Files
Feature Flags
Discord
GitHub
Telegram
Framer
Notion
授予的工作原理
授予记录遵循你通过 webhooks 接收的相同付款和订阅事件。Dodo Payments 会根据付款生命周期自动为购买创建和撤销授予记录,因此你无需自行调用授予记录 API。授予生命周期
授予记录会经历以下状态:1
Created
付款完成或订阅变为有效后,Dodo Payments 会创建授予记录。Feature Flag 授予记录的初始状态为
Delivered。对于使用 fulfillment_mode: auto(默认值)的权益,License Key 授予记录的初始状态也为 Delivered。在 fulfillment_mode: manual 下,授予记录会以 Pending 状态开始,且在你通过 履行 License Key 授予记录 提供 Key 之前不会包含 Key。所有其他集成的初始状态均为 Pending。基于 OAuth 的集成(Discord、GitHub、Notion)会提供一个 oauth_url,客户访问该链接后即可授予同意。Dodo Payments 会在创建授予记录时尝试生成此 URL。如果生成失败,该字段会保持为 null,直到客户通过交付邮件或 Customer Portal 开始接受流程。直接连接平台的集成(Telegram、Framer、Digital Files)仅在交付配置期间保持 Pending,之后会变为 Delivered。2
Delivered
交付完成后,授予记录会变为
Delivered,并设置 delivered_at。License Key 生成、角色分配、仓库访问权限授予、文件链接解析或 OAuth 流程完成后,即表示交付完成。3
Failed
如果集成调用返回不可重试的错误,例如 OAuth token 被撤销、权限被拒绝或文件不再存在,授予记录会变为
Failed。error_code 和 error_message 字段会记录原因。4
Revoked
访问权限被撤回时,例如订阅被取消、退款已发放或你撤销了授予记录,授予记录会变为
Revoked。revocation_reason 字段会记录触发原因。按事件划分的授予记录行为
每个付款和订阅事件会按以下方式变更授予记录:订阅驱动的授予记录以
(entitlement, customer, subscription) 为幂等依据,因此续订和重新激活不会创建重复的授予记录。一次性授予记录以 (entitlement, customer, payment) 为幂等依据。创建你的第一项权益
1
Open Entitlements
在控制面板中进入 Entitlements,然后点击 + 创建权益。
2
Pick an Integration
选择集成类型:License Key、Digital Files、Feature Flag、Discord、GitHub、Telegram、Figma、Framer 或 Notion。如果使用平台集成,请先连接你的账户(如果尚未连接)。
3
Configure Delivery
填写集成所需的字段。例如,GitHub 会要求填写仓库和权限级别,Discord 会要求填写服务器和可选角色,License Key 会要求填写激活次数限制和 License 时长。

Creating a GitHub entitlement. Each integration shows the fields it needs.
4
Save
点击 Create Entitlement。现在你可以将该权益附加到任意产品。
将权益附加到产品
打开产品,进入其 Entitlements 部分,然后选择产品购买后要交付的权益。一款产品可以同时交付多项权益。例如,Pro 方案可以包含 License Key、GitHub 访问权限和 Discord 角色。
Attaching entitlements to a product. Selected entitlements are delivered on every successful purchase or active subscription.
客户体验
Email 和 Customer Portal
购买后,客户会收到一封交付邮件,其中包含产品权益对应的 License Key、下载链接、OAuth 邀请链接或平台邀请。只要授予记录处于有效状态,相同信息也会一直显示在 Customer Portal 的订单历史记录中。基于 OAuth 的交付
Discord、GitHub 和 Notion 的订阅者访问权限要求客户授权 Dodo Payments 来授予这些访问权限。在客户通过邮件或 Customer Portal 中的链接完成 OAuth 流程之前,这些授予记录会保持为Pending。客户授权后,授予记录会变为 Delivered,Dodo Payments 随即配置平台访问权限。
撤销
授予记录被撤销后,Dodo Payments 会在平台上移除相应访问权限:移除 Discord 角色、移除 GitHub 协作者,或禁用 License Key。客户可以在 Customer Portal 中看到此变更。管理授予记录
从控制面板打开任意权益即可查看其授予记录。详情面板会显示授予总数、状态筛选器,以及每条授予记录的一行信息,包括客户、访问日期、状态和 Revoke 操作。 要以编程方式管理授予记录,请使用status 筛选器列出授予记录,并通过 ID 撤销单条授予记录:
API 管理
Create Entitlement
List Entitlements
Get Entitlement
Update Entitlement
Delete Entitlement
Upload File
List Grants
Revoke Grant
Webhooks
Dodo Payments 会针对授予记录生命周期发送四种 webhook 事件。订阅这些事件,以便让你的应用与每位客户可以访问的内容保持同步。Entitlement Grant Webhook Payloads
最佳实践
- 每个交付渠道使用一项权益。 不要在具有不同角色意图的多个产品之间共享同一项 Discord 权益。请为每个角色创建一项权益,以便干净地撤销访问权限。
- 先在测试模式中进行测试。 创建权益,将其附加到测试产品,完成一次结账,并观察授予记录从
Pending变为Delivered。然后取消测试订阅,并确认授予记录已被撤销。 - 监听
entitlement_grant.delivered,而不是payment.succeeded。 付款可能在履行完成前成功,尤其是在 OAuth 流程中。请等待授予记录达到Delivered后,再在自己的系统中解锁依赖功能。创建时即完成交付的授予记录,例如自动履行的 License Key 或 Feature Flag,会以entitlement_grant.created事件和status: "Delivered"状态到达。 - 将
entitlement_grant.failed视为需要采取行动的事件。 授予记录失败意味着客户已经付款,但尚未获得访问权限。请将这些授予记录展示给支持团队,或触发重新签发。 - 将
revocation_reason映射到你的留存流程。subscription_on_hold撤销是可恢复的,因为客户可能会更新其银行卡。manual撤销则是有意执行的。在客户消息中应区别处理这两种情况。 - 不要在
subscription.past_due时撤销访问权限。 该事件会开启宽限期,客户会一直保留访问权限,直到窗口结束。请等待subscription.on_hold或subscription.cancelled。