BUGS 文件夹

此目录用于归档已知问题、Bug 分析和技术债。

目录规范

  • 使用 YYYY-MM-DD-简短描述.md 格式命名文件
  • 问题修复后,文件移至 archive/ 子目录并标注解决版本

2026-04-22-跨设备订单支付来源不匹配.md

问题描述

商家后台显示订单的 source_device = 'computer'(PC端),但实际使用的支付方式是 netnewpower,而该支付配置为 仅 WAP 端(手机/平板)可用display_param.device_show = 'wap')。

问题原因

订单创建时锁定设备,后续跨设备操作不会更新

  1. 订单创建:用户在 PC 端创建订单,order.source_device = 'computer'
  2. 跨设备操作:用户复制链接到手机继续操作
  3. 设备识别:手机访问时 app('Context')->sourceDevice = 'phone',符合 WAP 专属支付展示条件
  4. 支付选择:用户在手机上选择 netnewpower 并完成支付
  5. 保存订单savePaymentMethod() 更新了 payment_idpayment_method 等字段,但未更新 source_device

影响范围

  • 商家在后台看到订单设备来源与支付方式不一致,产生困惑
  • 数据分析、报表统计可能不准确

根因代码

文件行号说明
common/services/OrderService.php2773-2781$data 未包含 source_device
common/services/PaymentService.php586-589设备过滤逻辑正确(动态判断当前设备)

修复建议

OrderService::savePaymentMethod()$data 数组中添加:

'source_device' => app('Context')->sourceDevice,

建议先与产品确认此改动是否符合业务预期。

状态

  • 已修复
  • 待确认
  • 暂不处理