注意: 本文仅适用于在 GitHub Marketplace 中发布应用程序。有关在 GitHub Marketplace 中发布 GitHub Actions 的更多信息,请参阅 "在 GitHub Marketplace 中发布操作。"。
如果您在 GitHub Marketplace 上提供 GitHub 应用,您的应用必须按照 OAuth 授权流程识别用户。您无需设置单独的 OAuth 应用来支持此流程。有关更多信息,请参阅“代表用户使用 GitHub 应用进行身份验证”。
步骤 1. 初始购买和 Webhook 事件
在客户购买您的 GitHub Marketplace 应用之前,他们会选择一个列表计划。他们还会选择是从个人帐户还是组织帐户购买应用。
客户通过点击**完成订单并开始安装**来完成购买。
然后,GitHub 会将marketplace_purchase
Webhook(带有 purchased
操作)发送到您的应用。
从 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 中执行此操作。要了解如何在免费试用结束之前处理取消,请参阅“处理计划取消”。要了解如何将免费试用转换为付费计划(当免费试用期满时),请参阅“处理计划更改”。
查看 "GitHub Marketplace API 的 Webhook 事件" 以获取 marketplace_purchase
事件有效负载的示例。
步骤 2. 安装
如果您的应用是 GitHub 应用,GitHub 会在客户购买应用时提示他们选择应用可以访问的存储库。然后,GitHub 会在客户选择的帐户上安装应用,并授予对所选存储库的访问权限。
此时,如果您在 GitHub 应用设置中指定了 **设置 URL**,GitHub 会将客户重定向到该 URL。如果您未指定设置 URL,则无法处理 GitHub 应用的购买。
注意:**设置 URL** 在 GitHub 应用设置中被描述为可选,但如果您想在 GitHub Marketplace 中提供您的应用,则它是必填字段。有关更多信息,请参阅 "关于设置 URL"。
如果您的应用是 OAuth 应用,GitHub 不会在任何地方安装它。相反,GitHub 会将客户重定向到您在 GitHub Marketplace 列表 中指定的 **安装 URL**。
当客户购买 OAuth 应用时,GitHub 会将客户重定向到您选择的 URL(设置 URL 或安装 URL),并且该 URL 包含客户选择的定价计划作为查询参数:marketplace_listing_plan_id
。
步骤 3. 授权
当客户购买您的应用时,您必须将客户发送到 OAuth 授权流程
-
如果您的应用是 GitHub 应用,请在 GitHub 将客户重定向到 **设置 URL** 后立即开始授权流程。请按照 "代表用户使用 GitHub 应用进行身份验证" 中的步骤操作。
-
如果您的应用是 OAuth 应用,请在 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 升级。