v1.12.16 手续费百分比计算修复
v1.12.16
🐛 修复:手续费百分比计算错误(充100元+5%变600)
根因
PaymentService::calcFee() 的百分比分支用 $amountFen * $fee,把 fee 当成小数
(0.05=5%)。但后台 UI 提示"如 1.5 表示 1.5%",用户按百分数值填 5(意图 5%),
代码却算成 10000分 × 5 = 50000分 = ¥500 → 应付 = 原金额 + 500 = ¥600。
UI 与后端语义不一致。
修复
calcFee() 百分比分支改为 $amountFen * $fee / 100(fee=5 → 5%),与后台 UI 提示一致。
同步更新方法注释说明语义。
验证
| 场景 | 修复前 | 修复后 | 正确 |
|---|---|---|---|
| 5% 客户承担, 充100元 | ¥600 ✗ | ¥105 | ✓ |
| 1.5% 客户承担, 6.50元 | — | ¥6.60 | ✓ |
| 5% 商户承担, 100元 | — | ¥100(手续费记商户) | ✓ |
| 固定 0.5元 客户承担 | — | ¥7.00 | ✓ |
php artisan test:176 通过 / 545 断言,无回归。
说明
- 已填写的百分比值(如
5)修复后会被正确解释为 5%,无需迁移数据。 - 仅改
app/Support/PaymentService.php。