Shopify结账后无需第三方应用按自定义规则更新商品库存咨询
Shopify无第三方应用实现自定义订单库存扣减方案
不需要第三方应用的前提下,你要的自定义库存扣减规则可以通过Shopify原生Webhook + 私有自定义应用 + 自研后端接口实现,无需修改Debut主题的任何前端代码,全程走Shopify官方原生能力,具体实现步骤如下:
1. 前置准备
- 准备一个可接收公网HTTP请求的后端服务,可使用任意开发语言实现(Node.js、Python、Java均可)
- 在Shopify后台创建自定义私有应用,开通
read_orders、write_inventory接口权限,记录对应的API Key、API密码、店铺域名信息
2. 配置订单支付触发Webhook
- 进入Shopify后台 > 设置 > 通知 > 滚动到页面底部的「Webhook」板块
- 点击「创建webhook」,事件选择
订单支付(order paid),数据格式选JSON,回调地址填你自己的后端服务接口地址,API版本选择最新稳定版即可
该Webhook会在用户完成订单支付后,自动将完整订单数据推送到你填写的回调接口,无需手动轮询订单状态
3. 后端接口核心处理逻辑
你在后端接口接收到Webhook推送的订单数据后,按以下逻辑处理即可实现自定义扣减:
- 第一步先校验Webhook请求的签名,确认请求来自Shopify官方,避免恶意请求篡改数据
- 遍历订单商品列表,通过SKU或商品ID判断订单中是否包含商品A
- 若确认订单包含商品A,依次调用Shopify Admin API的
inventory_level.adjust接口完成库存扣减:- 商品A对应库存位置扣减1
- 商品B对应库存位置扣减2
若你需要支持多件购买的扣减逻辑,比如买N件商品A就扣减N1的A库存 + N2的B库存,只需遍历订单时统计商品A的购买数量,再调整扣减数值即可
4. 核心代码示例(Node.js)
// 需先安装shopify-api-node依赖 const Shopify = require('shopify-api-node'); // 初始化Shopify客户端 const shopify = new Shopify({ shopName: '你的店铺二级域名(xxx.myshopify.com的前缀部分)', apiKey: '私有应用的API Key', password: '私有应用的API密码', apiVersion: '2024-01' // 替换为你选择的API版本号 }); // 订单支付Webhook回调处理函数 async function handleOrderPaid(orderData) { // 校验订单中是否包含商品A,此处用SKU判断,也可替换为商品ID判断 const productACount = orderData.line_items.reduce((total, item) => { return item.sku === '商品A的SKU' ? total + item.quantity : total }, 0); if (productACount <= 0) return; // 扣减商品A库存 await shopify.inventoryLevel.adjust({ inventory_item_id: '商品A的inventory_item_id', location_id: '你的店铺库存地点ID', available_adjustment: -1 * productACount }); // 扣减商品B库存 await shopify.inventoryLevel.adjust({ inventory_item_id: '商品B的inventory_item_id', location_id: '你的店铺库存地点ID', available_adjustment: -2 * productACount }); }
5. 注意事项
- 正式上线前先用Shopify测试订单模式验证库存扣减逻辑,确认符合预期再跑生产订单
- 可在扣减库存前先查询对应商品的当前库存余量,避免扣减为负数,也可加库存不足的预警逻辑
- 若店铺有多个库存地点,务必填写对应销售区域的库存地点ID,避免扣错仓库库存
内容的提问来源于stack exchange,提问作者Valentin Boumier
相关产品推荐
相关产品推荐

