fix(shop): 修复支付回调状态判断逻辑,确保订单状态更新
- 将支付成功状态判断由字符串比较改为枚举值比较 - 使用 Transaction.TradeStateEnum.SUCCESS 替代 "支付成功" 字符串判断 - 避免因状态描述字符串不一致导致支付回调处理失败 - 保证支付成功后订单状态能够正确更新
This commit is contained in:
@@ -35,5 +35,5 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"lastUpdated": 1776002597201
|
||||
"lastUpdated": 1776017110068
|
||||
}
|
||||
15
.workbuddy/memory/2026-04-13.md
Normal file
15
.workbuddy/memory/2026-04-13.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# 2026-04-13 工作日志
|
||||
|
||||
## 修复支付回调订单状态不更新问题
|
||||
|
||||
**问题描述**:支付成功后,订单支付状态没有更新,回调地址 `https://glt-api.websoft.top/api/shop/shop-order/notify` 接收到了通知但订单状态未改变。
|
||||
|
||||
**问题原因**:`ShopOrderController.java` 的 `wxNotify` 方法中,使用 `StrUtil.equals("支付成功", transaction.getTradeStateDesc())` 来判断支付状态。但微信返回的 `tradeStateDesc` 可能不是固定的 "支付成功" 字符串(可能是 "SUCCESS" 或其他描述),导致支付成功的回调没有被正确处理。
|
||||
|
||||
**修复方案**:将状态判断从字符串比较改为枚举值比较:
|
||||
- 原代码:`if (StrUtil.equals("支付成功", transaction.getTradeStateDesc()))`
|
||||
- 修复后:`if (Transaction.TradeStateEnum.SUCCESS.equals(transaction.getTradeState()))`
|
||||
|
||||
**修改文件**:`src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java`
|
||||
|
||||
**状态**:已修复
|
||||
@@ -888,7 +888,8 @@ public class ShopOrderController extends BaseController {
|
||||
logger.info("✅ 异步通知解析成功 - 交易状态: {}, 商户订单号: {}",
|
||||
transaction.getTradeStateDesc(), transaction.getOutTradeNo());
|
||||
|
||||
if (StrUtil.equals("支付成功", transaction.getTradeStateDesc())) {
|
||||
// 使用枚举值判断支付状态,避免依赖状态描述字符串
|
||||
if (Transaction.TradeStateEnum.SUCCESS.equals(transaction.getTradeState())) {
|
||||
final String outTradeNo = transaction.getOutTradeNo();
|
||||
final String transactionId = transaction.getTransactionId();
|
||||
final Integer total = transaction.getAmount().getTotal();
|
||||
|
||||
Reference in New Issue
Block a user