Skip to main content
GitHub entitlement 会将付费客户添加为私有仓库的协作者。你可以选择权限级别(pull、push、triage、maintain 或 admin)。Dodo Payments 会发送协作者邀请,并在授权撤销时移除该协作者。

交付内容

  • 客户从 Customer Portal 连接其 GitHub 账户。这会将其 GitHub 账户与购买记录关联起来。
  • Dodo Payments 会按照配置的权限级别,邀请该账户加入你的仓库。客户在 GitHub 上接受邀请后即可获得访问权限。如果客户拥有该仓库,则无需发送邀请。
  • 取消、退款或手动撤销会移除协作者,并取消任何待处理的邀请。
常见用途包括源代码可用产品、付费模板、课程代码仓库以及受限的客户端 SDK。

连接 GitHub

1

Open Entitlements

在 Dodo Payments 控制面板中,前往 Entitlements,然后点击 + 以创建新的 entitlement。
2

Pick GitHub

选择 GitHub Access 作为集成。如果尚未连接 GitHub,请点击 Connect GitHub。
新权限面板提示商家连接 GitHub

Connect GitHub prompt before the install handoff.

GitHub 会在新标签页中打开。登录,然后在拥有该仓库的组织或用户账户上安装 Dodo Payments GitHub App。你可以授予该应用访问 All repositories 或 Only select repositories 的权限。如果选择特定仓库,请包含所有要设置访问限制的仓库。
包含 All repositories 和 Only select repositories 选项的 GitHub 安装和授权页面

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

GitHub 重定向回来后,确认页面会显示账户已连接。
GitHub Access 已成功连接的确认页面

Account connected. Return to the Dodo Payments dashboard to continue.

3

Pick a Repository and Permission

返回控制面板后,选择 entitlement 授予访问权限的 Repository,然后选择 Permission 级别。仓库选择器只会列出 GitHub App 可以访问的仓库。为 entitlement 输入 Name,然后点击 Create Entitlement。
GitHub 权限表单,包含已连接的 GitHub Access、仓库选择器、权限下拉选项和名称字段

Creating a GitHub entitlement. Pick the repository and the permission you want customers to receive.

4

Attach It to a Product

将 entitlement 关联到任意产品。购买该产品的客户在连接其 GitHub 账户后,会收到 GitHub 邀请。

权限级别

该 entitlement 使用 GitHub 的标准仓库权限:
授予符合使用场景的最小权限。大多数付费内容产品只需要 pull。

客户流程

  1. 客户完成结账。
  2. Dodo Payments 创建一个处于 Pending 状态的授权。Dodo Payments 会立即尝试创建 GitHub authorization URL,并将其存储在 oauth_url 中。如果失败,oauth_url 将保持为 null,直到客户开始接受流程。
  3. 付款确认邮件会将该权益列为 Action Required,并提供指向 Customer Portal 的链接。在门户中,客户点击 Connect 并使用 GitHub 进行授权。授权链接在 30 分钟后过期,客户再次返回时,Customer Portal 会生成新的授权链接。
  4. Dodo Payments 会根据配置的权限,将客户的 GitHub 账户邀请加入该仓库。创建邀请后,授权会转为 Delivered 状态。如果 GitHub 拒绝该邀请,则不会交付该授权。
  5. 如果订阅被取消、付款被退款或授权被撤销,Dodo Payments 会将客户从协作者中移除,并取消所有待处理的邀请。

必需配置

API 创建

Webhooks

标准的 entitlement_grant.* webhook 事件 涵盖了 GitHub 流程:
  • entitlement_grant.created 会随 status: "Pending" 触发。oauth_url 可能已经包含 GitHub authorization URL。如果它是 null,则会在客户从 Customer Portal 开始接受流程后填充。
  • 创建协作者邀请后,entitlement_grant.delivered 会触发。
  • 撤销访问权限时,entitlement_grant.revoked 会触发。如果你卸载 GitHub App,Dodo Payments 会通过 revocation_reason: platform_external 撤销该安装的待处理和已交付授权。
  • 如果 Dodo Payments 无法将客户添加到仓库(例如 GitHub App 失去了对该仓库的访问权限),entitlement_grant.failed 会随 error_code: "GRANT_ACCESS_FAILED" 触发。

故障排除

Dodo Payments GitHub App 必须安装在拥有该仓库的组织或用户账户上。在权益表单中,点击 GitHub 卡片上的 Disconnect,然后点击 Connect GitHub 重新安装该应用,并授予它对你希望设置访问门槛的仓库的访问权限。
GitHub App 的安装已无法访问该仓库,或者该仓库已被重命名或转移。再次授予该应用访问仓库的权限,下一次重新授予访问权限时即可成功。
客户可以从 GitHub 通知中,或通过 GitHub 邀请邮件中的链接接受 GitHub 邀请。在接受之前,他们已收到邀请,但无法克隆仓库。由于邀请是由 Dodo Payments 发出的,因此在 Dodo Payments 中,该 grant 仍为 Delivered。
最后修改于 2026年9月26日