Shopware 6:如何通过App(非插件)实现冲突商品加购拦截
Shopware App实现分配送类型商品加购混单拦截方案
不需要依赖原生「商品加入购物车」事件,纯App模式即可完整实现你需要的两类商品不可同单的限制
核心可行方案:使用官方原生Cart校验Webhook(优先推荐,无绕过风险)
Shopware App体系本身预留了全链路购物车校验入口,不需要插件权限即可注册使用:
- 触发时机:覆盖所有购物车内容变更场景,包括用户点击加购、修改购物车商品数量、删除商品、进入结算页等所有涉及购物车数据变动的操作,不存在漏拦截的缺口
- 实现步骤:
- 在App的
manifest.xml配置文件中注册cart校验类型的webhook,将回调地址指向你自己的App服务端 - 提前给两类商品做标记:可以用商品自定义属性区分,比如给大件自提商品设置属性值
delivery_type=self_pickup_large,小件快递商品设置delivery_type=express_small - 当用户触发购物车变动时,Shopware会把完整的当前购物车商品数据推送给你的App服务端,你只需要遍历商品判断配送类型:如果同时存在两类商品,直接返回约定格式的错误响应,Shopware会自动在前端弹出你配置的错误提示,直接拦截本次操作,不符合规则的商品不会被加入购物车,也无法进入结算流程
- 在App的
补充体验优化方案:前端前置判断(非必须,仅优化交互)
如果想减少无效接口请求,可以在App中申请Storefront脚本注入权限,做前端前置提示:
- 在商品详情页、商品列表页加载时,提前拉取当前用户购物车内已有的商品配送类型标记
- 用户点击加购按钮时,先在前端判断待加购商品和购物车已有商品的类型是否冲突,如果冲突直接弹出提示,阻止加购请求发出
注意:前端判断仅做体验优化,必须搭配上文提到的服务端Cart校验webhook做兜底,否则用户可以通过直接调用Store API的方式绕过前端限制,导致规则失效。
内容的提问来源于stack exchange,提问作者Fabian Blechschmidt
相关产品推荐
相关产品推荐

