注意
本文适用于仅在 GitHub Marketplace 中发布应用的情况。 若要详细了解如何在 GitHub Marketplace 中发布 GitHub Actions,请参阅 在 GitHub Marketplace 中发布操作。
警告
如果在 GitHub Marketplace 中提供 GitHub App,您的应用程序必须按照 OAuth 授权流程来识别用户。 您不需要设置单独的 OAuth app 来支持此流程。 有关详细信息,请参阅“代表用户使用 GitHub 应用进行身份验证”。
步骤 1. 首次购买和 web 挂钩事件
客户在购买 GitHub Marketplace 应用之前,需要选择上架产品计划。 他们��要选择是从个人帐户还是从组织帐户购买应用程序。
客户通过单击“完成订单并开始安装”来完成购买。
然后,GitHub 将带有 purchased
操作的 marketplace_purchase
Webhook 发送到你的应用。
从 marketplace_purchase
Webhook 读取 effective_date
和 marketplace_purchase
对象,以确定客户购买了哪个计划、何时开始计费周期以及何时开始下一个计费周期。
如果应用提供免费试用版,则从 Webhook 读取 marketplace_purchase[on_free_trial]
属性。 如果该值为 true
,则应用需要跟踪免费试用开始日期 (effective_date
) 和免费试用结束日期 (free_trial_ends_on
)。 使用 free_trial_ends_on
日期在应用的 UI 中显示免费试用剩余天数。 可以在横幅或计费 UI中显示。 若要了解如何在免费试用结束前处理取消,请参阅“处理计划取消”。 请参阅“处理计划更改”,了解在免费试用期满后如何从免费试用版过渡到付费计划。
有关 marketplace_purchase
事件有效负载的示例,请参阅“GitHub Marketplace API 的 web 挂钩事件”。
步骤 2. 安装
如果你的应用程序是 GitHub App,GitHub 在客户购买时会提示他们选择应用程序可以访问哪些存储库。 然后,GitHub 将应用程序安装在客户选择的帐户上,并授予对所选存储库的访问权限。
此时,如果你在 GitHub App 设置中指定了“设置 URL”,则 GitHub 将客户重定向到该 URL****。 如果您没有指定设置 URL,则无法处理购买 GitHub App 的购买。
注意
“设置 URL”在 GitHub App 设置中被描述为可选字段,但如果你要在 GitHub Marketplace 中提供应用,则它为必填字段****。 有关详细信息,请参阅“关于设置 URL”。
如果你的应用程序是 OAuth app, 不会在任何地方安装它。 相反,GitHub 会将客户重定向到你在 GitHub Marketplace 上架信息中指定的“设置 URL”****。
当客户购买 OAuth app 时,GitHub 会将客户重定向到你选择的 URL(设置 URL 或安装 URL),并且该 URL 会以查询参数的形式加入客户选择的定价计划:marketplace_listing_plan_id
。
步骤 3. 授权
当客户购买您的应用程序时,您必须通过 OAuth 授权流程发送客户:
-
如果应用程序是 GitHub App,只要 GitHub 将客户重定向到设置 URL 便开始授权流****。 按照“代表用户使用 GitHub 应用进行身份验证”中的步骤操作。
-
如果应用程序是 OAuth app,只要 GitHub 将客户重定向到安装 URL 便开始授权流****。 按照“授权 OAuth 应用”中的步骤操作。
对于任一类型的应用,第一步都是将客户重定向到 https://github.com/login/oauth/authorize。
客户完成授权后,您的应用程序将收到客户的 OAuth 访问令牌。 下一步将需要使用此令牌。
注意
授权客户免费试用时,请授予他们与付费计划相同的访问权限。 试用期结束后,将其移至付费计划。
步骤 4. 预配客户帐户
您的应用程序必须为所有新购买预配客户帐户。 使用在“步骤 3.授权”中你为客户收到的访问令牌,调用 GET /user/marketplace_purchases
终结点。 响应将包括客户的 account
信息,并显示他们是否在使用免费试用版 (on_free_trial
)。 使用此信息完成设置和预配。
注意
在当前版本的 GitHub Marketplace 中,如果客户已有一个从你的应用网站购买的现有帐户,他们可能还会通过 GitHub Marketplace 购买���的应用。 如果你发现已为购买应用的客户设置了帐户,请向 GitHub 支持报告“双重”购买情况。
如果客户是为组织按用户购买应用程序,您可以提示客户选择哪些组织成员将有权访问所购买的应用程序。
您可以自定义组织成员获取应用程序访问权限的方式。 以下是一些建议:
统一定价****:如果组织使用统一定价购买应用,你的应用可通过 API 获取组织的所有成员,并提示组织所有者选择哪些成员可以在集成者一方包含付费用户。
按单位定价:一种按单位预配席位的方法,允许用户在登录应用时占用一个席位。 一旦客户达到席位数阈值,您的应用程序就可以提醒用户他们需要通过 GitHub Marketplace 进行升级。