修复余额支付保险订单支付凭证校验:回退错误的保险金额双重计算

d3273438b 提交在余额支付路径也加了保险金额,但余额支付的 payAmount
已通过 payOrderSuccessCallback 累加(可能已含保险),再加一次
insuranceAmount 会导致双重计算,永远校验失败。

- 余额支付路径:直接比较 payAmount vs payRecordAmount(不加保险)
- 非余额支付路径:保持 payAmount + insuranceAmount vs payRecordAmount(正确)
This commit is contained in:
Guoqs
2026-07-25 13:26:27 +08:00
parent fcbbc52e99
commit 2eca1f6a79

View File

@@ -1137,10 +1137,9 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
.reason("订单支付明细与会员钱包出账金额不一致")
.build();
}
// 订单支付金额 = 充电金额 + 保险金额
BigDecimal orderPayAmount = orderBasicInfo.getPayAmount()
.add(orderBasicInfo.getInsuranceAmount() == null ? BigDecimal.ZERO : orderBasicInfo.getInsuranceAmount());
if (!baseFieldsReady || !samePaymentAmount(orderPayAmount, payRecordAmount)) {
// 余额支付payAmount 已通过回调累加可能含保险payRecordAmount 仅含余额支付记录,
// 直接比较两者即可,不应再加保险金额(避免双重计算)
if (!baseFieldsReady || !samePaymentAmount(orderBasicInfo.getPayAmount(), payRecordAmount)) {
return OrderPaymentCheckResult.builder()
.checkCompleted(true)
.paymentEvidenceFound(true)