Shopify 功能完整指南:大规模自定义业务逻辑
Shopify Functions 允许开发人员自定义在 Shopify 基础设施内运行的核心商务逻辑,而不是在外部服务器上运行。这意味着自定义折扣计算、支付方式过滤、运费修改和购物车验证可在几毫秒内执行,没有网络延迟。函数取代了脚本编辑器(Shopify 脚本),代表了平台后端定制的未来。本指南涵盖了每个功能类型、开发工作流程和部署模式。
要点
- Shopify Functions 在 Shopify 基础设施内的 WebAssembly 沙箱中执行,确保执行时间低于 5 毫秒
- 提供五种功能API:折扣、支付定制、配送定制、购物车验证和订单路由
- 函数是用 Rust、JavaScript 或任何可编译为 WebAssembly 的语言编写的
- 每个函数通过 GraphQL 查询结果接收输入,并返回 Shopify 应用于操作的结构化输出
- 功能作为 Shopify 应用程序的一部分部署,可由商家通过管理员进行配置
Shopify 功能是什么?
Shopify Functions 是轻量级程序,可在预定义的扩展点自定义特定的商务操作。与 webhook(将数据发送到外部服务器)不同,Functions 作为 WebAssembly 模块在 Shopify 的基础设施内部运行,保证:
- 速度:执行时间低于 5 毫秒(无网络延迟)
- 可靠性:无外部服务器依赖性
- 规模:无需容量规划即可处理任何流量
- 安全:沙盒执行,没有文件系统或网络访问
函数 API
| 应用程序接口 | 目的 | 取代 |
|---|---|---|
| 折扣 | 自定义折扣逻辑(BOGO、分层、条件) | Shopify 脚本(订单项折扣) |
| 支付定制 | 结帐时显示/隐藏/重新排序付款方式 | 支付方式条件逻辑 |
| 交付定制 | 修改运费、名称和可用性 | 运费脚本 |
| 购物车验证 | 验证购物车内容并阻止无效组合 | 购物车属性验证 |
| 订单路由 | 自定义履行地点选择 | 默认位置路由 |
开发环境
先决条件
- Shopify CLI(最新版本)
- Node.js 18+
- Shopify 合作伙伴帐户和开发商店
- Rust 工具链(用于基于 Rust 的函数)或 JavaScript 运行时
创建函数
使用 Shopify CLI 搭建新函数:
运行npx shopify app generate extension并选择函数类型。 CLI 生成:
| 文件 | 目的 |
|---|---|
src/run.js(或 run.rs) | 功能逻辑 |
| 代码0 | 定义输入数据的 GraphQL 查询 |
| 代码0 | 配置和元数据 |
| 代码0 | Shopify API 架构(自动生成) |
开发工作流程
- 定义输入查询:在
input.graphql中编写 GraphQL 查询,以获取函数所需的数据 - 实现逻辑:在
src/run.js中编写将输入转换为输出的函数 - 本地测试:使用
npx shopify app function test运行单元测试 - 部署:使用
npx shopify app deploy推送到 Shopify - 配置:商户通过应用界面配置功能参数
折扣功能
折扣功能如何运作
折扣函数接收购物车数据(行项目、客户信息、折扣代码)并返回要应用的折扣操作。每次评估购物车时(页面加载、项目添加/删除以及结帐条目),该函数都会运行。
常见折扣模式
买 X 送 Y:当购物车包含产品 X 时,对产品 Y 应用百分比或固定折扣。
分级折扣:根据购物车总额应用逐渐增加的折扣(超过 100 美元 10%,超过 200 美元 15%,超过 500 美元 20%)。
特定于客户的定价:检查客户标签或元字段并应用特定于细分市场的折扣(批发、VIP、员工)。
捆绑折扣:当购物车中有特定产品组合时,应用捆绑折扣(购买全部三个,节省 25%)。
批量折扣:根据数量应用单位折扣(1-9 单位全价,10-24 单位享受 10% 折扣,25+ 单位享受 20% 折扣)。
输入查询示例
折扣函数的输入查询通常请求:
- 购物车订单项,包含产品 ID、款式 ID、数量和价格
- 客户信息(ID、标签、元字段)(如果使用客户细分)
- 折扣代码(如果验证基于代码的折扣)
- 产品特定折扣规则的产品元字段
输出结构
该函数返回折扣操作的数组:
| 运营 | 描述 |
|---|---|
| 代码0 | 对特定产品/变体应用折扣 |
| 代码0 | 对订单总额应用折扣 |
| 代码0 | 取消运费 |
每个操作都包括折扣值(百分比或固定金额)、向客户显示的消息及其适用条件。
支付定制功能
用例
- 隐藏付款方式:对于高于阈值的订单隐藏“货到付款”
- 重新订购方式:根据客户位置首先显示最流行的付款方式
- 重命名方法:显示本地化的付款方式名称
- 添加消息:在特定付款方式旁边显示附加信息
实现模式
该函数接收购物车详细信息和可用的付款方式。它返回修改支付方式列表的操作:
| 运营 | 效果 |
|---|---|
| 代码0 | 从结帐中删除付款方式 |
| 代码0 | 更改付款方式的显示名称 |
| 代码0 | 重新订购付款方式 |
配送定制功能
用例
- 重命名运输选项:显示“快递(2-3 天)”而不是承运商费率名称
- 隐藏选项:删除易腐烂产品的地面运输
- 重新订购选项:紧急订单首先显示最快的选项
- 添加消息:在每个选项旁边显示预计交货日期
实施
该函数从配置的承运商处接收运费并返回修改。输入包括购物车行项目(用于检查产品类型)、送货地址(用于基于位置的规则)和可用的送货选项。
购物车验证函数
用例
- 数量限制:限量版产品最多 5 件
- 组合限制:产品A和产品B不能在同一个购物车中(不兼容)
- 最低要求:批发帐户必须订购至少 100 美元
- 地理限制:阻止某些产品运送到限制区域
验证输出
当验证失败时,该函数将返回错误:
- 目标:哪个购物车线路或购物车本身
- 消息:面向客户的错误消息
- 严重性:错误(阻止结帐)或警告(允许但通知)
测试函数
单元测试
无需部署即可在本地测试功能:
- 使用示例输入数据创建测试装置
- 针对装置运行该函数
- 断言输出与预期结果匹配
Shopify CLI 生成测试样板:
| 测试场景 | 验证什么 |
|---|---|
| 空购物车 | 函数不返回任何操作 |
| 排位车 | 应用正确的折扣/修改 |
| 边缘案例 | 边界值、最大数量 |
| 错误处理 | 优雅地处理无效输入 |
| 性能 | 执行在 5 毫秒内完成 |
预览模式
发布前在开发商店中测试功能:
- 将函数部署到您的开发商店 2.通过应用管理进行配置
- 将产品添加到购物车并验证行为 4.检查Shopify CLI输出中的函数执行日志
性能考虑因素
执行限制
| 限制 | 价值 |
|---|---|
| 执行时间 | 最大 5 毫秒 |
| 内存 | 12 MB |
| 输入尺寸 | 64 KB |
| 输出尺寸 | 64 KB |
| 说明 | 100 万条 Wasm 指令 |
优化技巧
- 将输入查询最小化为仅您的逻辑需要的字段
- 避免复杂的嵌套循环——使用哈希映射进行查找
- 在应用程序配置中而不是在函数中预先计算值
- 将 Rust 用于性能关键型函数(比 JavaScript 快 2-3 倍)
- 使用 Shopify CLI 性能工具配置函数执行
商户配置
应用程序配置用户界面
功能是通过应用程序的 UI 配置的,而不是直接在 Shopify 后台中配置。构建一个配置页面:
- 显示功能的用途和当前设置 2.允许商家设置参数(阈值、产品选择、百分比)
- 将配置存储为函数在运行时读取的元字段
- 保存前验证输入
配置存储
使用应用程序元字段存储功能配置:
- 折扣元字段:阈值金额、百分比值、产品 ID
- 应用程序数据存储:复杂的配置,如分层规则、客户细分
- 函数配置:通过输入查询作为函数输入的一部分传递
ECOSIRE 功能开发服务
自定义 Shopify 功能需要商业领域专业知识和 WebAssembly 开发技能。 ECOSIRE的Shopify应用开发服务包括功能设计、实现、测试和部署。我们的团队根据您的业务规则构建折扣引擎、支付定制和验证逻辑。为了满足持续的需求,我们的支持服务 会随着 Shopify 平台的进步维护和发展您的自定义功能。
相关阅读
Shopify 函数会取代 Shopify 脚本吗?
是的。 Shopify 脚本已弃用,取而代之的是函数。主要区别:函数作为 WebAssembly(而不是 Ruby)运行,通过应用程序(而不是脚本编辑器)部署,并支持更多扩展点。现有脚本继续有效,但 Shopify 建议迁移到函数。
非开发人员可以创建 Shopify Functions 吗?
不直接。函数需要编程知识(JavaScript 或 Rust)。但是,开发人员可以构建具有配置 UI 的应用程序,让商家无需编码即可自定义功能行为。 Shopify 应用商店中的许多应用程序在内部使用 Functions,同时呈现商家友好的界面。
单个商店可以运行的函数数量是否有限制?
Shopify 不对安装的功能数量施加硬性限制。但是,每次结帐评估都会按顺序运行所有适用的功能,因此需要考虑性能。每个功能 5 毫秒的限制确保单个功能不会减慢结帐速度,但理论上来说,拥有数十个功能可能会影响总结帐评估时间。
作者
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.