Apple 开始按席位向整个企业出售你的订阅,多席位订阅的退款方式也随之改变
Apple 于 2026 年 10 月 22 日为企业和学校开启了多席位订阅,且默认启用。一笔购买现在可以覆盖许多人,席位被移除时会以 REVOKE 通知送达,而退款证据端点会拒绝已分配的席位。本文说明哪些地方变了,以及代价是什么。

要点
- 自 2026 年 10 月 22 日起,使用 Apple Business 或 Apple School Manager 的机构可以通过一笔 Apple App 内购买批量购买应用的自动续期订阅,用设备管理工具分配席位,并可随时增减席位。
- Apple 在 App Store Connect 中默认开启了多席位购买。2026 年 9 月 14 日之前创建、且未使用 StoreKit 2 或开启了家人共享的订阅,初始状态为不参与;定制应用中的订阅则完全无法选择退出。
- 对于多席位购买,Apple 交易负载中的 quantity 字段表示席位数量,每位获得席位的人都会得到一笔 inAppOwnershipType 为 ASSIGNED 的交易。
- 当机构收回分配给某人的订阅时,Apple 会发送 REVOKE 通知,交易的 revocationType 为 ASSIGNMENT_REVOKE。该值已于 2026 年 10 月 23 日在生产环境上线。
- Apple 的 Send Consumption Information 端点用于回复 CONSUMPTION_REQUEST。若以已分配的交易调用,它会返回 InvalidAssignedTransactionNotSupportedError,因此退款证据只能针对购买者的交易提交。
- Apple 的 revocationType 字段区分 REFUND_FULL 与 REFUND_PRORATED,revocationPercentage 以千分单位报告退款比例,因此 40000 表示 40%。
- Group Purchases(群组购买)允许一位 App Store 顾客购买多个席位并邀请他人使用,将于 2026 年 11 月起可在沙盒中测试,并于今年冬季登陆 App Store。
Apple 于 2026 年 10 月 22 日开始按席位向机构出售应用订阅,并且没有征求意见就为大多数开发者开启了这一选项。使用 Apple Business 或 Apple School Manager 的企业和学校,现在可以通过一笔 App 内购买批量购买你的自动续期订阅。这改变了多席位订阅退款在你服务器上的样子。一笔交易现在可能为几十个人付费,一个席位可能在完全没有退款的情况下消失,而你用来为退款案件申辩的端点,拒绝讨论真正在使用应用的那些人。
Apple 开启了什么,在哪里宣布的
这次上线以一篇简短的 Apple Developer 新闻发布,标题是“Offer your subscriptions to businesses and schools”。文中说,机构可以通过一笔 App 内购买购买所需席位,再用现有的设备管理工具分配和管理这些席位,并可随时增减席位。同一篇文章还说,除非你此前已更改过设置,否则多席位购买在 App Store Connect 中默认开启。
相关的底层改动是在此前一个月里通过更新日志陆续到位的,而不是在发布会上。9 月 28 日的 App Store Server API 1.22 新增了席位字段和群组端点,但仅限沙盒。10 月 23 日,一条只有一行的服务器更新把群组端点和 ASSIGNMENT_REVOKE 值推到了生产环境。如果你的通知处理程序从夏天起就没改过,它现在收到的数据,是它从未被设计去读取的。
| 日期 | 变化内容 | Apple 的发布渠道 |
|---|---|---|
| 2026 年 6 月 | 在 WWDC26 上宣布多席位订阅 | Session 391,Offer subscriptions to groups and organizations |
| 2026 年 9 月 16 日 | App Store Connect 中默认开启多席位购买 | Apple Developer 新闻 |
| 2026 年 9 月 28 日 | quantity 表示席位数,新增 ASSIGNED 和 ASSIGNMENT_REVOKE,仅限沙盒 | App Store Server API 更新日志,1.22 版 |
| 2026 年 10 月 22 日 | Volume Purchasing(批量购买)面向 Apple Business 和 Apple School Manager 上线 | Apple Developer 新闻 |
| 2026 年 10 月 23 日 | ASSIGNMENT_REVOKE 和群组端点在生产环境上线 | Server API 和 Server Notifications 更新日志 |
| 2026 年 11 月 | Group Purchases 可在沙盒中测试 | Apple Developer 新闻 |
| 今年冬季 | Group Purchases 登陆 App Store | Apple Developer 新闻 |
哪些订阅默认参与
几乎所有订阅。Apple 的 App Store Connect 帮助页面说,2026 年 9 月 14 日之前创建的订阅,只有在未使用 StoreKit 2 或开启了家人共享时,初始状态才是不参与。定制应用中的订阅会自动提供给 Apple Business 和 Apple School Manager,且无法选择退出。更改此设置需要账户持有人、管理员或 App 管理角色;从已获批准的订阅中移除 Apple Business 或 Apple School Manager,则需要账户持有人。
多席位购买在你的服务器上如何呈现
同一个订阅现在有两种交易。机构的购买是一笔交易,其 quantity 字段报告购买了多少席位。每位获得席位的人会收到各自的交易,Apple 的 WWDC 课程将其描述为 App Store 为每位成员分配一笔交易。这些成员交易的 inAppOwnershipType 为 ASSIGNED,与你可能已在处理的 PURCHASED 和 FAMILY_SHARED 值并列。
对于由哪条记录决定访问权限,Apple 的立场很明确。其 Get Customer Groups 文档说,群组成员身份与权益是分开的;要解锁内容,应读取顾客的交易,而不是依赖群组成员身份。请根据交易授予访问权限。群组端点只用于管理员视图之类的功能。
| 字段或值 | 含义 | 新增时间 |
|---|---|---|
| quantity | 多席位购买的席位数量 | 2026 年 9 月 28 日 |
| inAppOwnershipType = ASSIGNED | 此人通过机构或群组获得访问权限 | 2026 年 9 月 28 日 |
| revocationType = ASSIGNMENT_REVOKE | 购买者从此人处收回了订阅 | 2026 年 9 月 28 日,10 月 23 日进入生产环境 |
| revocationType = REFUND_FULL 或 REFUND_PRORATED | 交易已全额或部分退款 | 2025 年 12 月 10 日 |
| revocationPercentage | 退款比例,以千分单位表示(40000 = 40%) | 2025 年 12 月 10 日 |
被移除的席位不等于退款
这是大多数处理程序会出错的地方。当机构收回某位员工的席位时,Apple 会发送 REVOKE 通知,这与家人共享购买者停止共享时使用的是同一种类型。交易的 revocationType 为 ASSIGNMENT_REVOKE,Apple 的指示很直接:撤销该顾客对此交易所提供内容的访问权限。
这个事件里没有任何内容表明发生了资金流动。如果你的代码把每次撤销都当作退款,你的退款率、净收入以及基于它们搭建的任何告警,都会把正常的人员流动算作销售损失。请先根据 revocationType 分支处理。
- ASSIGNMENT_REVOKE:终止此人的访问权限。不要记为退款。
- FAMILY_REVOKE:终止该家庭成员的访问权限。不要记为退款。
- REFUND_FULL:终止访问权限,并将整笔交易记为已退款。
- REFUND_PRORATED:按 revocationPercentage 中的比例记账,再决定保留哪些访问权限。

为什么无法为已分配席位的退款申辩
每一笔 App Store 退款仍由 Apple 决定。顾客申请退款时,Apple 会发送 CONSUMPTION_REQUEST,并给你 12 小时通过 Send Consumption Information 作答。在多席位模式下,使用应用的人和付款的人是不同的人,而 Apple 的 API 如今在二者之间划了一条硬线。
Send Consumption Information 拒绝已分配的交易
用已分配的交易调用 Send Consumption Information、其 V1 版本或 Set App Account Token,Apple 会返回 InvalidAssignedTransactionNotSupportedError。Apple 的建议是在调用前检查 inAppOwnershipType 是否为 ASSIGNED。实际上,你的证据要么提交在购买者的交易上,要么无处可交。应用在成员账户上记录的使用数据仍值得保留,因为这是了解席位到底有没有被使用的唯一途径。
按比例退款是什么样子
Apple 于 2025 年 12 月新增了 REFUND_PRORATED 和 revocationPercentage。在消费信息请求中,你可以用值为 GRANT_PRORATED 的 refundPreference 请求这一结果。对于自动续期订阅,Apple 表示不要在 GRANT_PRORATED 时发送 consumptionPercentage,因为比例由 Apple 自行计算。如果退款之后被撤回,revocationPercentage 会从交易中消失。
我能否延长某位员工的订阅作为补偿?
不能。对于已分配的订阅,Extend a Subscription Renewal Date 会返回 AssignedSubscriptionExtensionIneligibleError。Apple 的理由是,已分配的订阅与购买者所购订阅按同一周期续期,因此无法单独调整某一位成员。
多席位订阅退款会让你付出什么
规模是新的风险。Apple 的 WWDC 课程介绍了最多五档价格区间的批量定价。其示例中,20 个席位以内每席每月 19.99 美元,第 21 到 40 个席位 13.99 美元,第 41 个起 10.99 美元。按这些数字计算,一笔 50 席的订单每月收费 789.50 美元,约合每席 15.79 美元。这一笔交易发生 REFUND_FULL,退还的是全部 789.50 美元,而不是一份订阅的价格。
服务成本也以同样方式放大。五十个席位意味着五十个人在你的服务器上运行会话,发起由你的功能付费的第三方 API 调用,并占用你需要付费的存储空间。如果因为处理程序只看了购买者的交易,导致已退款订单的席位持有人仍保有访问权限,你就要继续为他们每个人付费。漏掉 ASSIGNMENT_REVOKE 的损失较小但更频繁:这笔购买已不再覆盖此人,而他发出的每个请求都是没有收入支撑的成本。
| 事件 | 资金变动 | 需终止的访问权限 | 可提交的证据 |
|---|---|---|---|
| 成员的 ASSIGNMENT_REVOKE | 未报告 | 该成员 | 不适用 |
| 多席位购买的 REFUND_FULL | 整笔交易,含其中每个席位 | 购买者及每位席位持有人 | 仅限购买者的交易,须在 CONSUMPTION_REQUEST 后 12 小时内 |
| 多席位购买的 REFUND_PRORATED | revocationPercentage 对应的比例 | 取决于退款覆盖的范围 | 仅限购买者的交易 |
| 针对已分配交易的消费信息回复 | 不被接受 | 不适用 | 以 InvalidAssignedTransactionNotSupportedError 拒绝 |
哪些退款流程会征求你的意见
多席位并没有改变这份短名单。只有两种退款流程会向开发者索取证据:Apple 的 CONSUMPTION_REQUEST,须在 12 小时内通过 Send Consumption Information 作答;以及 Google Play 的拒付审核,须在 24 小时内通过 orders.reviewrefund 作答。其他一切都在没有你参与的情况下决定。对于 2026 年 8 月 3 日之后下单的 Google Play 订单,一次拒付会让开发者损失购买价格(扣除 Play 的服务费),外加银行的拒付手续费。RefundHalt 利用你已经收集的使用数据,在 12 小时时限内回复 Apple 的消费信息请求。
本周需要在 App Store 处理程序中修改的内容
- 读取每笔订阅交易的 quantity,并与购买记录一同保存。
- 保存 inAppOwnershipType,并把 ASSIGNED 作为与 PURCHASED、FAMILY_SHARED 并列的独立情况处理。
- 根据 revocationType 分支处理 REVOKE,让 ASSIGNMENT_REVOKE 终止访问权限而不记为退款。
- 按 revocationPercentage 的比例记录 REFUND_PRORATED,而不是记为全额退款。
- 在调用 Send Consumption Information、Set App Account Token 或 Extend a Subscription Renewal Date 之前,先检查是否为 ASSIGNED。
- 在某个机构一次买下 50 个席位之前,先在 App Store Connect 中决定你是否要向机构销售。
常见问题解答
- 我的应用开启了 Apple 多席位订阅吗?
- 很可能已开启。Apple 在 App Store Connect 中默认开启了多席位购买。2026 年 9 月 14 日之前创建的订阅,只有在未使用 StoreKit 2 或开启了家人共享时,初始状态才是不参与;定制应用中的订阅无法选择退出。你可以在每个订阅页面的购买选项下查看。
- 带有 ASSIGNMENT_REVOKE 的 REVOKE 通知是否意味着我损失了钱?
- 不是。ASSIGNMENT_REVOKE 表示机构或群组购买者从某个人处收回了订阅。Apple 要求你终止此人的访问权限,但该事件并不报告退款。只有在 REFUND_FULL 或 REFUND_PRORATED 时才记为退款。
- 我能为使用已分配席位的员工发送消费信息吗?
- 不能。对于机构或群组分配给顾客的交易,Apple 的 Send Consumption Information 端点会返回 InvalidAssignedTransactionNotSupportedError。请先检查 inAppOwnershipType 是否为 ASSIGNED,并在购买者的交易上提交证据。
- 我如何知道 Apple 对多席位购买退款了多少?
- 读取交易上的 revocationType 和 revocationPercentage。REFUND_FULL 表示整笔交易已退款。REFUND_PRORATED 会附带以千分单位表示的 revocationPercentage,因此 40000 表示交易金额的 40%。
- Apple 的 Group Purchases 何时上线?
- Apple 表示,Group Purchases 允许一位 App Store 顾客购买多个席位并邀请他人使用,自 2026 年 11 月起可在沙盒中配置和测试,并将于今年冬季在 App Store 推出。面向企业和学校的 Volume Purchasing 已于 2026 年 10 月 22 日上线。
来源和延伸阅读
- Apple Developer News: Offer your subscriptions to businesses and schools (October 22, 2026)
- App Store Connect Help: Manage purchase options for an auto-renewable subscription
- WWDC26 Session 391: Offer subscriptions to groups and organizations
- App Store Server Notifications changelog
- App Store Server API: revocationType
- App Store Server API: revocationPercentage
- App Store Server API: InvalidAssignedTransactionNotSupportedError
- App Store Server API: ConsumptionRequest
RefundHalt
App Store 和 Google Play 退款自动驾驶
继续阅读
过多的退款申请,代价可能远超退款本身,因为两大应用商店都把它当作质量信号
Apple 审核指南 5.6.4 把过多的退款申请列为应用未达质量标准的迹象,Google 的开发者分发协议也允许它依据退款率下架新开发者的应用。本文梳理两家商店的原文、下架的真实成本,以及如何避开风险。
在处理退款之前先验证 App Store 服务器通知,因为任何人都能向你的 webhook URL 发送请求
在检查签名之前,一条退款通知只不过是一个 HTTPS 请求。本文介绍如何验证 App Store 服务器通知和 Google Play RTDN 消息、每个商店签名的内容,以及伪造的退款或被错误拒绝的退款会让你付出什么代价。