跳至主要内容

处理计划变更

升级或降级 GitHub Marketplace 应用会触发 marketplace_purchase 事件 webhook,操作为 changed,从而启动升级或降级流程。

注意

本文仅适用于在 GitHub Marketplace 发布应用。有关在 GitHub Marketplace 发布 GitHub Actions 的更多信息,请参阅 在 GitHub Marketplace 发布操作

有关计费相关的升级与降级的更多信息,请参阅 在您的应用中使用 GitHub Marketplace API

步骤 1. 定价计划更改事件

当客户对其 GitHub Marketplace 订单进行以下任意更改时,GitHub 会向您的应用发送 marketplace_purchase webhook,操作为 changed

  • 升级到更高价位的定价计划或降级到更低价位的计划。
  • 向现有计划中增加或移除席位。
  • 更改计费周期。

GitHub 会在更改生效时发送该 webhook。例如,客户降级计划时,GitHub 会在客户计费周期结束时发送 webhook;当客户升级计划时,GitHub 会立即发送 webhook 以便客户能够立刻使用新服务。如果客户将计费周期从月度切换为年度,这被视为一次升级。更多关于哪些操作算作升级或降级,请参阅 计费客户

marketplace_purchase webhook 中读取 effective_datemarketplace_purchaseprevious_marketplace_purchase,用于更新计划的开始日期以及更改客户的计费周期和定价计划。请参阅 GitHub Marketplace API 的 webhook 事件,了解 marketplace_purchase 事件负载示例。

如果您的应用提供免费试用,当免费试用到期时,您将收到带有 changed 操作的 marketplace_purchase webhook。免费试用到期后,请将客户升级至该试用计划的付费版本。

步骤 2. 更新客户账户

您需要更新客户的账户信息,以反映其在 GitHub Marketplace 订单中所做的计费周期和定价计划更改。当收到 changed 操作的 webhook 时,请在您的 Marketplace 应用网站或应用 UI 上显示计划升级、seat_count(按单位计费的计划)以及计费周期。

当客户降级计划时,建议检查客户是否已超出其计划限制,并通过 UI 或电话、邮件等方式直接与其沟通。

为了鼓励用户升级,您可以在应用 UI 中展示升级 URL。更多细节请参阅 关于升级 URL

注意

我们建议定期使用 GET /marketplace_listing/plans/:id/accounts 进行同步,以确保您的应用拥有每个账户的正确计划、计费周期信息以及单位数量(针对按单位计费的计划)。

升级付款失败

如果客户在升级计划时付款失败,GitHub 会将其 GitHub Marketplace 订阅恢复至之前的状态,并向客户发送邮件通知其付款失败并允许其重新尝试购买。您将收到带有 changed 操作的 webhook,要求您恢复到先前的计划。

关于升级 URL

您可以在应用 UI 中提供升级 URL,将用户重定向至 GitHub 完成升级。

https://www.github.com/marketplace/<LISTING_NAME>/upgrade/<LISTING_PLAN_NUMBER>/<CUSTOMER_ACCOUNT_ID>

例如,如果您发现某位客户当前使用的是 5 人计划,需要升级到 10 人计划,您可以在应用 UI 中显示一个按钮(如 “点击此处升级”)或在横幅中放置指向升级 URL 的链接。该升级 URL 会把客户带到您所列计划的升级确认页面。

使用客户想购买的计划的 LISTING_PLAN_NUMBER。当您创建新的定价计划时,它们会获得一个 LISTING_PLAN_NUMBER(在您的列表中每个计划唯一)以及一个 LISTING_PLAN_ID(在 GitHub Marketplace 中唯一)。您可以在 列出计划 时查看这些编号,页面会列出您列表的定价计划。使用 LISTING_PLAN_IDGET /marketplace_listing/plans/{plan_id}/accounts 接口获取 CUSTOMER_ACCOUNT_ID

注意

如果客户升级了额外的单位(例如席位),您仍然可以将其引导至相应的计划进行购买,但目前我们尚不支持 unit_count 参数。

© . This site is unofficial and not affiliated with GitHub, Inc.