BUGS 文件夹
此目录用于归档已知问题、Bug 分析和技术债。
目录规范
- 使用
YYYY-MM-DD-简短描述.md格式命名文件 - 问题修复后,文件移至
archive/子目录并标注解决版本
2026-04-22-跨设备订单支付来源不匹配.md
问题描述
商家后台显示订单的 source_device = 'computer'(PC端),但实际使用的支付方式是 netnewpower,而该支付配置为 仅 WAP 端(手机/平板)可用(display_param.device_show = 'wap')。
问题原因
订单创建时锁定设备,后续跨设备操作不会更新
- 订单创建:用户在 PC 端创建订单,
order.source_device = 'computer' - 跨设备操作:用户复制链接到手机继续操作
- 设备识别:手机访问时
app('Context')->sourceDevice = 'phone',符合 WAP 专属支付展示条件 - 支付选择:用户在手机上选择
netnewpower并完成支付 - 保存订单:
savePaymentMethod()更新了payment_id、payment_method等字段,但未更新source_device
影响范围
- 商家在后台看到订单设备来源与支付方式不一致,产生困惑
- 数据分析、报表统计可能不准确
根因代码
| 文件 | 行号 | 说明 |
|---|---|---|
common/services/OrderService.php | 2773-2781 | $data 未包含 source_device |
common/services/PaymentService.php | 586-589 | 设备过滤逻辑正确(动态判断当前设备) |
修复建议
在 OrderService::savePaymentMethod() 的 $data 数组中添加:
'source_device' => app('Context')->sourceDevice,建议先与产品确认此改动是否符合业务预期。
状态
- 已修复
- 待确认
- 暂不处理