Shopify实现多SKU捆绑加购并设专属总价的可行性咨询
Shopify捆绑产品需求实现方案
没问题,这个需求完全可以实现,而且绝对不会影响顾客使用他们自己的折扣码(因为我们根本不会占用Shopify订单仅有的那1个折扣码名额)。下面给你两种靠谱的实现方案:
方案1:无代码/低代码——用捆绑类应用实现
如果你不想折腾代码,这是最省心的方式:
- 选择Shopify应用商店里支持「固定价格捆绑+不占用折扣码额度」的第三方捆绑工具(比如Bundle Builder类应用)
- 这类应用的核心逻辑是:创建一个虚拟的捆绑产品入口(比如SKU设为
BUNDLE-AB,定价150美元),当顾客点击「加入购物车」时,应用会自动将真实SKU AAA和BBB同时加入购物车,通过自定义逻辑直接锁定总价为150美元——这个价格调整完全不依赖Shopify的折扣码功能,所以顾客结账时依然能正常使用自己的折扣码。 - 优势:操作简单,不用写代码,后续调整捆绑内容或价格也很方便。
方案2:自定义代码实现(适合有开发能力的团队)
如果想完全自主可控,不依赖第三方应用,可以通过修改主题代码实现:
核心思路
创建一个专门的捆绑产品页面(可以是自定义页面,也可以用一个虚拟产品当入口),然后修改「加入购物车」按钮的逻辑,通过Shopify的AJAX API同时将AAA和BBB加入购物车,并直接设置总价为150美元(比如把两个SKU的单价各设为75美元,总和刚好150)。
代码示例(修改主题的JS文件)
在主题的产品页JS(比如product-form.js或自定义的捆绑页面JS)中添加以下逻辑:
// 绑定捆绑产品的加入购物车按钮事件 document.querySelector('#add-bundle-to-cart').addEventListener('click', async () => { // 替换为AAA和BBB的实际变体ID(可在Shopify后台产品变体页查看) const aaaVariantId = '123456789'; const bbbVariantId = '987654321'; // 构造要加入购物车的商品项,自定义单价使总和为150美元 const lineItems = [ { variant_id: aaaVariantId, quantity: 1, price: 75 }, { variant_id: bbbVariantId, quantity: 1, price: 75 } ]; try { // 调用Shopify购物车API添加商品 const response = await fetch('/cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ line_items: lineItems }) }); const data = await response.json(); if (response.ok) { // 加入成功后跳转到购物车页面 window.location.href = '/cart'; } else { console.error('加入购物车失败:', data); // 这里可以添加错误提示给顾客 } } catch (error) { console.error('请求出错:', error); } });
- 关键说明:这种方式的价格调整是直接在加入购物车时设置的,完全不会触发Shopify的折扣码验证机制,所以顾客结账时依然能正常使用自己的折扣码,两者完全不冲突。
- 优势:完全自定义,不依赖第三方应用,可控性极强。
注意事项
- 无论用哪种方案,都要在捆绑产品页面清晰标注包含SKU AAA和BBB,避免顾客产生误解。
- 一定要测试完整流程:确认加入购物车后两个SKU都显示、总价为150美元,并且顾客可以正常输入自己的折扣码,折扣会正确叠加在150美元的总价上。
内容的提问来源于stack exchange,提问作者Jackson Cunningham
相关产品推荐
相关产品推荐

