简化异步任务的交易取消逻辑
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"platform/web/auth"
|
||||
"platform/web/core"
|
||||
@@ -121,25 +120,17 @@ func TradeCancelByTask(c *fiber.Ctx) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 解析请求参数
|
||||
// 取消交易
|
||||
req := new(TradeCheckReq)
|
||||
if err := c.BodyParser(req); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 检查订单状态
|
||||
err = s.Trade.ConfirmTradeCanceled(&s.CheckTradeData{
|
||||
TradeNo: req.TradeNo,
|
||||
Method: req.Method,
|
||||
})
|
||||
err = s.Trade.CancelTrade(req.TradeNo, req.Method, time.Now())
|
||||
if err != nil {
|
||||
slog.Debug(fmt.Sprintf("订单无需取消:%s", err.Error()))
|
||||
} else {
|
||||
err = s.Trade.CancelTrade(req.TradeNo, req.Method, time.Now())
|
||||
if err != nil {
|
||||
slog.Warn("取消交易失败", "trade_no", req.TradeNo, "method", req.Method, "error", err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
return c.SendStatus(fiber.StatusNoContent)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -378,15 +378,12 @@ func (s *tradeService) CancelTrade(tradeNo string, method trade2.Method, now tim
|
||||
}
|
||||
|
||||
case trade2.MethodSft, trade2.MethodSftAlipay, trade2.MethodSftWeChat:
|
||||
resp, err := g.SFTPay.OrderClose(&g.OrderCloseReq{
|
||||
_, err := g.SFTPay.OrderClose(&g.OrderCloseReq{
|
||||
MchOrderNo: &tradeNo,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if resp.State != "TRADE_CLOSE" {
|
||||
slog.Warn("商福通交易取消失败", "state", resp.State)
|
||||
return errors.New("交易取消失败")
|
||||
slog.Debug(fmt.Sprintf("订单无需关闭:%s", err.Error()))
|
||||
return nil
|
||||
}
|
||||
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user