GitHub 权限将付费客户添加为私人仓库的协作者。您可以选择权限级别 (
pull, push, triage, maintain, 或者 admin),由 Dodo Payments 处理邀请、接受跟踪和取消时的移除。交付内容
- 客户通过 OAuth 流程被邀请到您的 GitHub 仓库,将其 GitHub 账户链接到购买上。
- 一旦他们接受,GitHub 将根据配置的权限级别授予他们协作者访问权限。
- 取消、退款或手动撤销会移除协作者。
连接 GitHub
1
Open Entitlements
在您的 Dodo Payments 仪表板中,转到 Entitlements 并点击 + 开始新的权限设置。
2
Pick GitHub
选择 GitHub Access 作为集成。如果 GitHub 尚未连接,系统会提示您 连接 GitHub。
点击后将在新标签页中打开 GitHub。登录,然后在拥有仓库的组织或用户账户上安装 Dodo Payments GitHub 应用。您可以授予 所有仓库 访问权限或仅限您打算限制访问的仓库。
当 GitHub 重定向返回时,您将看到账户已连接的确认信息。

Connect GitHub prompt before the install handoff.

GitHub Install & Authorize page — choose which repositories the app can manage.

Account connected — return to the Dodo Payments dashboard to continue.
3
Pick a repository and permission
回到仪表板,选择应授予权限的 仓库 并选择 权限 级别。仓库选择器仅显示 GitHub 应用有访问权限的仓库。给权限命名并点击 Create Entitlement。

Creating a GitHub entitlement. Pick the repository and the permission you want customers to receive.
4
Save the entitlement
保存并将权限附加到任何产品。购买该产品的客户将在交付时收到 GitHub 邀请。
权限级别
GitHub 的标准仓库权限适用:客户流程
- 客户完成结账。
- Dodo Payments 在
Pending状态下创建 grant。其oauth_url为null,直到客户开始 accept flow;此时该字段会填充 GitHub authorization URL。 - 客户通过其电子邮件或 Customer Portal 中的链接完成授权。
- Dodo Payments 按照配置的 permission 邀请客户的 GitHub 账户加入 repository。创建邀请后,grant 将变为
Delivered。 - 如果 subscription 被取消、退款或撤销,客户将被移除为 collaborator。
所需配置
API 创建
Webhooks
标准的entitlement_grant.* webhook 事件 涵盖了 GitHub 流程:
entitlement_grant.created会触发,并携带status: "Pending";此时oauth_url仍为null。客户从 delivery email 或 Customer Portal 开始 accept flow 后,GitHub authorization URL 才会填充。- 创建 collaborator 邀请后,
entitlement_grant.delivered会触发。 - 如果 GitHub App 失去对 repository 的访问权限,
entitlement_grant.failed会携带error_code: "github_permission_denied"(或类似值)触发。
故障排除
Repository picker is empty
Repository picker is empty
Dodo Payments GitHub 应用必须安装在拥有仓库的组织或用户上。打开 Entitlements → Integrations → GitHub,重新安装应用,确保授予相关仓库的访问权限。
Grant fails with permission_denied
Grant fails with permission_denied
GitHub 应用的安装不再有对仓库的访问权限,或仓库已重命名/转移。重新授予应用访问权限,下次重新授权将成功。
Customer hasn't accepted the invite
Customer hasn't accepted the invite
客户必须在通知页面接受 GitHub 邀请,或点击电子邮件中的链接接受邀请。在接受之前,客户仍处于“已邀请”状态,但无法克隆仓库。从 Dodo Payments 的角度来看,该授权仍处于
Delivered 状态;我们发出的是邀请。