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 Research and Development Team
在 ECOSIRE 构建企业级数字产品。分享关于 Odoo 集成、电商自动化和 AI 驱动商业解决方案的洞见。
相关文章
电子商务的人工智能个性化:可转化的个性化体验
为电子商务部署人工智能个性化,包括产品推荐、动态内容、个性化搜索和客户旅程优化,将转化率提高 15-30%。
使用 Hydrogen 的 Headless Shopify:构建高性能定制店面
使用 Hydrogen 框架构建无头 Shopify 店面的完整指南,涵盖 Remix、店面 API、Oxygen 托管和性能优化。
构建移动优先的 Shopify 商店:完整的优化指南
打造可转化的移动优先 Shopify 商店。涵盖主题选择、移动用户体验、结账优化、应用性能和 Shopify 特定的移动策略。