结账显示两条完全相同的配送方式。Magento依赖carrier_code + method_code唯一标识,不是靠标题区分。
固定复现范围
保存shipping-methods接口原始rates,比较carrier_code、method_code、amount,判断重复来自后端还是前端。
定位真实原因
检查自定义Carrier的$_code和Method code,复制模块后必须更换code,同Carrier不同服务也要不同method。
执行修复
检查collectRates插件只调用proceed一次并且不会重复append,前端mixin不要重复push Observable。
恢复后处理
修复后清config/FPC并重新估算运费;已有Quote的冲突shipping_method应清除后重选。
rg -n '$_code|setCarrier(|setMethod(|collectRates' app/code
SELECT carrier,method,price FROM quote_shipping_rate WHERE address_id=:address_id ORDER BY rate_id;回归测试
不同地址重复估算三次,每个carrier_method只有一条;保存到Quote和Order的配送方式正确。

