原订单显示刻字或尺寸,点击Reorder后购物车只有基础商品。先查看sales_order_item.product_options,不要从页面文本反推。
解决方案
- 解码product_options,确认options与info_buyRequest都含option_id和选择值。只有additional_options显示文本但buyRequest为空,说明下单时只做了展示,没有保存可重建配置。
- 自定义加购代码应使用Product Type prepareForCartAdvanced或Cart addProduct并传完整buyRequest,不要直接new Quote Item后写name/price。
- 自定义选项值已被删除或option_id在新版本变化时,Reorder应给出可理解错误并要求重新选择,不能静默加入无选项商品。
- 修复后新订单会保存完整buyRequest。历史订单若有足够的additional_options,可建立受控映射恢复;无法确定时不要自动猜值。
排查命令
SELECT item_id,sku,product_options FROM sales_order_item WHERE order_id=:order_id;
SELECT option_id,product_id,type,is_require FROM catalog_product_option WHERE product_id=:product_id;
SELECT option_type_id,option_id,sku FROM catalog_product_option_type_value WHERE option_id IN (:option_ids);回归测试
新建包含文本、下拉、日期和文件以外可重用选项的订单,再Reorder;购物车选项、价格附加值和最终订单完全一致。
文件上传选项通常不能安全复用原文件,应明确要求客户重新上传。

