GitHub entitlement 会将付费客户添加为私有仓库的协作者。你可以选择权限级别(
pull、push、triage、maintain 或 admin)。Dodo Payments 会发送协作者邀请,并在授权撤销时移除该协作者。交付内容
- 客户从 Customer Portal 连接其 GitHub 账户。这会将其 GitHub 账户与购买记录关联起来。
- Dodo Payments 会按照配置的权限级别,邀请该账户加入你的仓库。客户在 GitHub 上接受邀请后即可获得访问权限。如果客户拥有该仓库,则无需发送邀请。
- 取消、退款或手动撤销会移除协作者,并取消任何待处理的邀请。
连接 GitHub
1
Open Entitlements
在 Dodo Payments 控制面板中,前往 Entitlements,然后点击 + 以创建新的 entitlement。
2
Pick GitHub
选择 GitHub Access 作为集成。如果尚未连接 GitHub,请点击 Connect GitHub。
GitHub 会在新标签页中打开。登录,然后在拥有该仓库的组织或用户账户上安装 Dodo Payments GitHub App。你可以授予该应用访问 All repositories 或 Only select repositories 的权限。如果选择特定仓库,请包含所有要设置访问限制的仓库。
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
返回控制面板后,选择 entitlement 授予访问权限的 Repository,然后选择 Permission 级别。仓库选择器只会列出 GitHub App 可以访问的仓库。为 entitlement 输入 Name,然后点击 Create Entitlement。

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 的标准仓库权限:客户流程
- 客户完成结账。
- Dodo Payments 创建一个处于
Pending状态的授权。Dodo Payments 会立即尝试创建 GitHub authorization URL,并将其存储在oauth_url中。如果失败,oauth_url将保持为null,直到客户开始接受流程。 - 付款确认邮件会将该权益列为 Action Required,并提供指向 Customer Portal 的链接。在门户中,客户点击 Connect 并使用 GitHub 进行授权。授权链接在 30 分钟后过期,客户再次返回时,Customer Portal 会生成新的授权链接。
- Dodo Payments 会根据配置的权限,将客户的 GitHub 账户邀请加入该仓库。创建邀请后,授权会转为
Delivered状态。如果 GitHub 拒绝该邀请,则不会交付该授权。 - 如果订阅被取消、付款被退款或授权被撤销,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"触发。
故障排除
Repository picker is empty
Repository picker is empty
Dodo Payments GitHub App 必须安装在拥有该仓库的组织或用户账户上。在权益表单中,点击 GitHub 卡片上的 Disconnect,然后点击 Connect GitHub 重新安装该应用,并授予它对你希望设置访问门槛的仓库的访问权限。
Grant fails with a permission error
Grant fails with a permission error
GitHub App 的安装已无法访问该仓库,或者该仓库已被重命名或转移。再次授予该应用访问仓库的权限,下一次重新授予访问权限时即可成功。
Customer hasn't accepted the invite
Customer hasn't accepted the invite
客户可以从 GitHub 通知中,或通过 GitHub 邀请邮件中的链接接受 GitHub 邀请。在接受之前,他们已收到邀请,但无法克隆仓库。由于邀请是由 Dodo Payments 发出的,因此在 Dodo Payments 中,该 grant 仍为
Delivered。