优化支付流程,扩展产品价格返回字段
This commit is contained in:
@@ -3,10 +3,11 @@ package tasks
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"platform/web/events"
|
||||
q "platform/web/queries"
|
||||
m "platform/web/models"
|
||||
s "platform/web/services"
|
||||
|
||||
"github.com/hibiken/asynq"
|
||||
@@ -24,19 +25,30 @@ func HandleCompleteTrade(_ context.Context, task *asynq.Task) error {
|
||||
Method: event.Method,
|
||||
}
|
||||
|
||||
// 尝试完成交易
|
||||
user, err := s.User.Get(q.Q, event.UserId)
|
||||
if err != nil {
|
||||
return fmt.Errorf("获取用户失败: %w", err)
|
||||
// 关闭交易
|
||||
err := s.Trade.CancelTrade(&data)
|
||||
if errors.Is(err, s.ErrTradeStatusIgnored) {
|
||||
result, err := s.Trade.CheckTrade(&data)
|
||||
if err != nil {
|
||||
return fmt.Errorf("检查交易状态失败: %w", err)
|
||||
}
|
||||
|
||||
switch result.Status {
|
||||
case m.TradeStatusSuccess:
|
||||
if err := s.Trade.UpdateRemark(data.TradeNo, "已付款"); err != nil {
|
||||
slog.Error("添加备注失败", "err", err)
|
||||
}
|
||||
case m.TradeStatusCanceled:
|
||||
slog.Debug("交易已取消", "status", result.Status)
|
||||
default:
|
||||
return fmt.Errorf("意外交易状态: %v", result.Status)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := s.Trade.CompleteTrade(user, &data); err != nil {
|
||||
slog.Debug("结束交易失败:完成交易失败", "err", err)
|
||||
|
||||
// 交易无法完成,关闭交易
|
||||
if err := s.Trade.CancelTrade(&data); err != nil {
|
||||
return fmt.Errorf("结束交易失败:取消交易失败: %w", err)
|
||||
}
|
||||
if err != nil {
|
||||
return fmt.Errorf("结束交易失败:取消交易失败: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user