Shopify 知识库 · 概念
销售计划:订阅、预购与试用的购买选项机制
说明 Shopify 销售计划与销售计划组是什么,主题必须提供的选择器与 selling_plan 输入,购物车与订单里的呈现,Shopify Subscriptions 与预购、试用应用的边界,以及支付网关与渠道限制。
销售计划(selling plan)是 Shopify 用来描述“同一个变体除了一次性购买,还能怎样买”的资源:订阅、预购、先试后买都表达成销售计划,由应用创建、挂到商品或变体上,主题负责让顾客选择,购物车、结账与订单负责显示结果。本文解决“这套机制由哪些对象组成、主题必须接哪些入口、哪些限制来自平台”,不解决订阅应用怎样计费续订的内部实现,也不替代各应用自己的设置说明。
本库哪些内容依赖它
- 预售与订阅商品页配方:条款摘要、取消入口等页面组成;
- 购买区模块:计划选择进入加购请求、切换变体后计划同步;
- 库存状态与到货通知:预购与缺货预订的边界;
- 店面能力模块:销售计划在能力模块里的归属;
- 购物车摘要:购物车行是否显示所选计划;
- 订阅条款摘要:条款展示模块;
- 顾客账户:订阅的顾客侧管理入口;
- 支付与结账:网关与币种的整体关系。
本文是该平台机制的权威来源,其他文章只写各自页面语境下的用法。
核心对象与概念
| 对象 | 含义 | 备注 |
|---|---|---|
| 购买选项(purchase options) | 帮助中心列出三类:订阅、预购、先试后买(TBYB) | 三者在开发层都用销售计划表达 |
销售计划组(SellingPlanGroup / Liquid selling_plan_group) | 共享同一种销售方式与选项的一组计划,关联商品与变体 | Liquid 属性含 name、options、selling_plans、app_id、selling_plan_selected;Admin API 里 name 是买家可见名,merchantCode 是商家可见名 |
销售计划(selling_plan) | 一种具体的购买方式,如“每周配送” | 含 id、name、description、options、checkout_charge、price_adjustments、recurring_deliveries、selected、group_id |
销售计划分配(selling_plan_allocation) | 某个计划作用于某变体或行项目后的价格结果 | 含 price、compare_at_price、per_delivery_price、checkout_charge_amount、remaining_balance_charge_amount、unit_price |
结账收款(checkout_charge) | 下单时收多少 | value_type 为 percentage 或 price;订阅始终是 100% 的百分比 |
| 四类策略(销售计划开发页) | 计费、配送、库存、定价 | 订阅开发概览把“按次付款”与“预付”列为两种订阅形态 |
价格相关字段一律为币种最小单位,并按顾客的展示币种给出。price_adjustments 数组最多两项,无调整时为空。
在哪里配置
- Shopify Subscriptions(官方免费订阅应用):从 App Store 安装;帮助中心写明装好后要先设置订阅计划,再到 Online Store > Edit theme 的商品模板里,于 Product information 下 Add block > Subscription widget,并确认主题编辑器 App embeds 中的 Subscription widget 处于关闭状态;老式主题只支持 Debut 15.0 及以上、Brooklyn 17.0 及以上,需在
product-template.liquid加<div class="subscriptions_app_embed_block"></div>。 - 顾客管理入口:帮助中心写明可在 Settings > Checkout 的应用设置中启用订阅管理页、订单页操作按钮与感谢页链接。
- 预购与先试后买:帮助中心写明没有内置功能,必须从 App Store 安装对应应用,并在应用内完成设置,之后在 Shopify 后台管理订单。
- 第三方订阅应用:帮助中心订阅概览写明可用第三方订阅应用;各应用的设置路径、顾客入口未核验。
与主题、Liquid 和 API 的连接
| 入口 | 官方页面所写 |
|---|---|
| 商品页选择器 | 主题需在商品表单内提供选择器,选项来自 product.selling_plan_groups;开发指南示例用单选按钮 |
| 提交字段 | 表单内需有 name="selling_plan" 的输入,值为计划 ID,未选则为空 |
| 必选计划 | product.requires_selling_plan 在全部变体都要求计划时为真;variant.requires_selling_plan 为真时不能一次性购买 |
| 变体切换 | 预购与试用指南要求用 JavaScript 在变体变化时更新可选计划;variant.selling_plan_allocations 给出该变体的分配数组 |
| 当前选择 | product.selected_selling_plan 由 URL 参数 selling_plan 决定;另有 selected_selling_plan_allocation 与 selected_or_first_available_selling_plan_allocation |
| 购物车 | 有计划时显示 line_item.selling_plan_allocation.selling_plan.name;无计划时该值为 nil |
| 订单页 | 显示计划名;订单行项目里 compare_at_price、price_adjustments、selling_plan.group_id、selling_plan.options、selling_plan_group_id 等不可用,页面建议改用 selling_plan.name |
| Ajax | /cart/add.js 用 selling_plan 参数传计划 ID;/cart/change.js 传计划 ID 设置,传 null 或空字符串移除 |
| Storefront API | CartLineInput.sellingPlanId,用于 cartCreate 与 cartLinesAdd;SellingPlanGroup 需要 unauthenticated_read_selling_plans 访问范围 |
| Admin API | sellingPlanGroupCreate、sellingPlanGroupUpdate、sellingPlanGroupAddProducts、sellingPlanGroupAddProductVariants |
限制、数值与易错点
核验于 2026-09-29,逐条标来源;订阅注意事项在 subscriptions/considerations 与 shopify-subscriptions/considerations 两处都有页面,两页的网关、渠道、草稿订单、折扣、礼品卡与扣款时间表述一致;主题与其他条目只在 shopify-subscriptions 页读到。
- 预购的支付网关:预购帮助页写明目前仅适用于使用 Shopify Payments 或 PayPal Express 的商家;可收全额、部分或不收预付款。
- 订阅的支付网关(官方页面并列):Shopify Subscriptions 注意事项页写明店铺须使用五种网关之一(Shopify Payments、PayPal Express、Authorize.net、Adyen、Stripe),并写明 Stripe 仅限部分商家、Adyen 限于已获批准的组织、网关可用性取决于地区与网关条款;而支付概览页写明销售订阅产品需以 Shopify Payments 为主网关(见 支付与结账)。两页表述不同,未判定哪一页更新,以商家后台与应用安装时的实际提示为准。
- 销售渠道:同一页写明订阅商品只在在线商店、Shopify POS、Shop 与自定义店面渠道受支持;订阅开发页另写明 POS 上的订阅需要 Shopify Payments。
- 不兼容项:同一页写明订阅不能用于草稿订单,订单编辑 API 不支持订阅,Bundles 与 Shopify Subscriptions 应用不兼容;销售计划开发页写明订阅结账不支持混合配送方式。
- 折扣与礼品卡:同一页写明在 Discounts 中创建的自动折扣可应用于订阅订单,用礼品卡支付订阅只作用于第一次付款(见礼品卡),折扣的总体规则见折扣。
- 扣款时间:同一页写明在订阅到期日的次日上午 10:00(店铺本地时间)扣款。
- 主题要求:
shopify-subscriptions注意事项页写明 Shopify Subscriptions 需要支持 sections 与 blocks 的主题,页面列出 Online Store 2.0 主题、Horizon 系列、Debut 15.0+ 与 Brooklyn 17.0+;Dawn 与 Horizon 是否内置选择器见购买区模块的固定版本结论。 - 卸载数据:预购与试用页写明卸载应用后除顾客支付信息外的相关数据 48 小时后删除;Admin API 页写明销售计划组及关联记录在创建它们的应用被卸载 48 小时后自动删除。
- 未公开数值:读到的页面均未给出每组计划数、每商品组数与选项数上限,不得据此断言“无上限”。
- 资格:订阅开发页与主题页均写明商家需满足 Shopify 的订阅资格标准;资格细则页只返回目录,未核验。
验证一次
- 在测试店铺创建一个带一次性购买与一个计划的商品,确认商品页选择器显示计划,且
selling_plan输入值随选择变化; - 切换变体,确认可选计划同步;对必选计划商品,确认一次性购买被隐藏;
- 加购后核对购物车行显示所选计划名,结账收款额与计划设置一致;
- 用
/cart/change.js传空字符串移除计划,确认行项目回到一次性购买; - 下测试单后,在订单页确认计划名显示;顾客登录后确认订阅管理入口(Shopify Subscriptions);
- 更换买家地区与币种,确认价格与收款额按展示币种更新,且所用网关支持该场景。
记录变体、计划 ID、请求与最终购物车行,方法参考购买验证。
待继续完善
- Shopify Subscriptions 资格细则与应用间比较页未读到正文;
- 预购与先试后买的具体应用行为、部分收款后续扣款展示未核验;
- 动态结账按钮与销售计划、缺货预订的组合未实测;
- 各国订阅自动续费与取消的法规要求未核验,需要合规确认。