PuppyIP 资源中心
跨境电商开发 6 分钟 发布于 2026-11-06

Shopify 多履约组共用地点排序:Plus 条件与覆盖规则

多个履约组需要相同仓库优先级时,Shopify 的 unstable Function API 已支持只返回一份排序,再应用到指定组。11 月 5 日的新条目链接到这项能力的官方文档;目前该订单路由 API 仍为需申请的 Shopify Plus Beta。开发者应先确认资格与 API 版本,再检查共享排序和逐组覆盖后的真实结果。

Shopify Functions 订单路由 履约组 API 开发 Shopify Plus

服务对象与地域限制

PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。

代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。

本文要点

  • fulfillmentGroupsLocationRankingAdd 可将一份地点排序应用到列出的多个履约组,减少重复输出;本次能力来自 unstable 文档。
  • 订单路由地点规则 API 仍标为 Beta,须由 Shopify Plus 商家申请;部署自有自定义应用与地点规则还要求加入 Partners 计划。
  • 地点按 rank 值升序选择优先级,rankings 数组里的先后位置不决定排序。
  • 同一组同一地点被多次排序时,后面的 operation 覆盖前面的 rank;后项没列出的地点保留之前的 rank。
  • 不属于某组的库存地点及未知组 handle 会被忽略,没有任何 operation 排名的库存地点放到最后。

哪些商家和 API 版本可以使用?

Shopify 2026 年 11 月 5 日的开发者更新列出“多履约组共用地点排序”,链接指向 unstable 版本的 Order Routing Location Rule Function API。unstable 是尚未稳定的开发版本,不能据此认定当前 stable 版本也具有同样字段。

该 API 正文仍标为 Beta,并说明只有 Shopify Plus 商家可提出使用申请。商家若要部署自己的自定义应用及地点规则,还必须加入 Partners 计划;Plus 订阅本身不等于申请已获批准。

本次查到的能力说明未给出稳定版上线日、完整国家清单或该能力的单独费用。接入前按自己的店铺、应用及所选版本核对这些条件,不把未列价格当作免费承诺。

共享排序解决什么问题?

履约组是购物车中需要一同配送的一组商品。过去若每组都返回一次 fulfillmentGroupLocationRankingAdd,相同仓库排序会反复出现在输出中;官方说明,输出随组数增长,可能超过 Function 的输出大小限制。

新操作 fulfillmentGroupsLocationRankingAdd 接收 fulfillmentGroupHandles 列表和一份 rankings,将这份排序应用到列出的每个组。结果等同于为各组分别返回单组操作,但共享的排序只需发送一次。

只有排序逻辑确实相同时才适合共用。如果不同商品或组需要不同优先级,应保留相应例外,不能为缩短输出而把业务规则合并。组和地点的 handle 由 Shopify 生成,应从 Function 输入中读取。

rank、忽略和漏列规则怎么判断?

rank 是数值优先级,Shopify 按升序使用:例如 0 排在 1 前面。调整 rankings 数组中条目的位置,不会改变各条已有的 rank 值,因此不能用数组顺序代替排序字段。

一份共享排序可以包含多个组的库存地点。Shopify 会为每组跳过不属于该组的地点;不匹配当前购物车任何履约组的 handle 也会被跳过。没有报错不等于预期的每一组或地点都实际参与了排序。

某组中没有被任何 operation 排名的库存地点会排在已排名地点之后。验证时要同时检查“实际输出了什么”和“输入里哪些有效地点没有被任何操作覆盖”,避免把漏列误认为禁用该地点。

先共享、再逐组覆盖时,哪些值会保留?

Shopify 按返回的 operations 顺序应用操作。同一履约组中的同一地点若出现多次,后面操作的 rank 替换前面的值;后项没有列出的地点仍保留已有 rank。后项不是自动清空该组的全部排序。

假设两个组都先共享“仓库 A 为 0、门店 B 为 1”。若第二个组需要反过来,应在共享操作之后,为该组返回单组操作,并明确列出“门店 B 为 0、仓库 A 为 1”。这是说明覆盖行为的假设示例,不是真实商家或仓库数据。

如果只把门店 B 改为 0,却不列仓库 A,仓库 A 会保留原来的 0,可能形成并列。要完全替换某组的排序,应在后面的单组操作中列出该组所有需要排序的地点。

不要把 API 能力当作所有销售渠道都支持

官方兼容表对不同场景分别列出支持范围。订单编辑的 Admin 场景只对新增商品部分支持;POS 仅在发货给客户时部分支持;Storefront 的部分支持限定为 Buy with Prime。

Order Edit 的 Checkout 场景、Pre-order and Try Before You Buy,以及订阅的续期订单列为不支持。已有应用即使能够返回合法排序,也仍需按实际订单来源核对兼容范围,不能由普通结账测试推定所有渠道可用。

接入前按什么顺序验证?

先确认 Beta 申请、Plus 与 Partners 条件,以及应用实际使用的 API 版本。保存一组可重复的隔离测试输入,覆盖相同排序的多个组、不同库存地点、未知组 handle 和需要例外排序的组。

接着逐项核对输出大小、rank 值、operations 顺序、被跳过的地点、漏列地点及覆盖后的最终优先级,再检查其他 locationRule 与实际销售渠道的影响。不要只凭 Function 没报错就扩大使用范围。

最后在自己获准的测试流程中核对后续地点选择和履约状态,并保存版本与结果。这些是验证建议;本文没有部署商家应用、调用店铺 API、处理真实订单或证明任何店铺已经迁移成功。

资料来源

常见问题

对应的 Function run target 是什么?

本次官方文档列出 cart.fulfillment-groups.location-rankings.generate.run。应同时确认所选 API 版本的输入输出 schema,不要把目标名称相同当作所有版本字段相同。

多个 locationRule 都返回排序时怎么办?

官方说明先按 locationRule 的优先级排列各 Function 输出,再用第一份输出中的 rank 排序;如果有并列,再用下一份输出的 rank 解开并列。没有并列时只考虑第一份输出。

组 handle 能直接当作固定业务配置长期保存吗?

文档说明组和地点 handle 由 Shopify 生成,Function 从当前输入读取。示例中的值是示例,不应直接替代当前调用的输入;需要持久业务标识时,应按对应 API 的正式字段另行设计。