每日整理真实提问 356 个问题 · 726 个回答 需要系统性的技术文档?看 Shopify 技术百科 1000 篇 → 400-873-8117

Shopify App 与 Function 开发

需求该做成 App、写成 Function,还是只改主题?判断只看一件事:这个逻辑必须在结账里生效吗。必须在结账里生效的只有 Function。

20+ 上架应用Function 与扩展跟平台版本走
Function 开发 折扣、运费、支付方式、行项目调整。运行在 Shopify 服务端,结账时一定生效。
自定义 App 后台管理界面、定时任务、与 ERP/CRM 交互,需要 OAuth 与计费时走标准 App 路径。
扩展与 Headless 结账 UI 扩展、主题应用扩展、Hydrogen / Storefront API 前端。
接口与数据 GraphQL、Webhook、队列与对账,所有写操作可重入。

三种扩展方式怎么选

主题只管展示。用它算价格、算运费一定会出错,因为结账时以服务端为准。

Function 管结账逻辑:折扣、运费、支付方式排序、行项目合并拆分。执行有时间与内存限制,复杂计算要先在外部算好再传参。

App 管后台与集成:需要管理界面、定时任务、和外部系统交互、处理大量数据。App 可以带 Function 一起发布。

判断不清时用这条规则:会不会影响「钱」或「订单数据」。会 → Function 或 App;只是显示 → 主题。

我们做过的典型项目

  • 按客户标签与市场组合的阶梯折扣(Function),替代三个互相冲突的折扣应用
  • 满件赠送与套装拆行(Cart 与行项目处理),库存按组件扣减
  • 结账页加自定义字段并写入订单 metafield,售后系统按字段自动分流
  • 订阅商品:selling plan + 定时扣款 + 失败重试 + 客户自助跳过
  • 退货自助页面:Return API 创建退货单、回补库存、按规则退款
  • ERP/3PL 对接:订单下行、库存上行、状态回传,带幂等与补偿

技术底线

  • 用 GraphQL Admin API,不用已进入 legacy 的 REST 路径
  • Webhook 5 秒内返回 2xx,重活丢队列;用 X-Shopify-Webhook-Id 做幂等
  • API 版本显式锁定,升级前先在测试店跑一遍
  • 所有写操作可重入,定时任务可断点续跑

交付与维护

交付内容:代码仓库、环境变量说明、部署流程、接口文档、改动清单。上线后 30 天免费修 bug。

Shopify 每年有 4 个 API 版本,每个版本支持 12 个月。我们会在版本到期前提醒并做适配,不让你的功能因为平台升级突然失效。