This commit is contained in:
2026-01-27 03:13:15 -08:00
parent 5def1cf6d8
commit 48c92ea374
36 changed files with 1189 additions and 123 deletions
+18 -3
View File
@@ -37,6 +37,11 @@ func NewEPayNotifyLogic(ctx *gin.Context, svcCtx *svc.ServiceContext) *EPayNotif
}
func (l *EPayNotifyLogic) EPayNotify(req *types.EPayNotifyRequest) error {
l.Logger.Info("[EPayNotify] 收到支付回调",
logger.Field("orderNo", req.OutTradeNo),
logger.Field("tradeNo", req.TradeNo),
logger.Field("tradeStatus", req.TradeStatus),
logger.Field("money", req.Money))
// Find payment config
data, ok := l.ctx.Request.Context().Value(constant.CtxKeyPayment).(*payment.Payment)
@@ -51,6 +56,12 @@ func (l *EPayNotifyLogic) EPayNotify(req *types.EPayNotifyRequest) error {
return errors.Wrapf(xerr.NewErrCode(xerr.OrderNotExist), "order not exist: %v", req.OutTradeNo)
}
l.Logger.Info("[EPayNotify] 找到订单",
logger.Field("orderNo", orderInfo.OrderNo),
logger.Field("currentStatus", orderInfo.Status),
logger.Field("userId", orderInfo.UserId),
logger.Field("orderType", orderInfo.Type))
var config payment.EPayConfig
if err := json.Unmarshal([]byte(data.Config), &config); err != nil {
l.Logger.Errorw("[EPayNotify] Unmarshal config failed", logger.Field("error", err.Error()))
@@ -59,7 +70,7 @@ func (l *EPayNotifyLogic) EPayNotify(req *types.EPayNotifyRequest) error {
// Verify sign
client := epay.NewClient(config.Pid, config.Url, config.Key, config.Type)
if !client.VerifySign(urlParamsToMap(l.ctx.Request.URL.RawQuery)) && !l.svcCtx.Config.Debug {
l.Logger.Error("[EPayNotify] Verify sign failed")
l.Logger.Error("[EPayNotify] Verify sign failed", logger.Field("orderNo", req.OutTradeNo))
return nil
}
if req.TradeStatus != "TRADE_SUCCESS" {
@@ -67,9 +78,11 @@ func (l *EPayNotifyLogic) EPayNotify(req *types.EPayNotifyRequest) error {
return nil
}
if orderInfo.Status == 5 {
l.Logger.Info("[EPayNotify] 订单已完成,跳过处理", logger.Field("orderNo", req.OutTradeNo))
return nil
}
// Update order status
l.Logger.Info("[EPayNotify] 更新订单状态为已支付(2)", logger.Field("orderNo", req.OutTradeNo))
err = l.svcCtx.OrderModel.UpdateOrderStatus(l.ctx, req.OutTradeNo, 2)
if err != nil {
l.Logger.Error("[EPayNotify] Update order status failed", logger.Field("error", err.Error()), logger.Field("orderNo", req.OutTradeNo))
@@ -87,10 +100,12 @@ func (l *EPayNotifyLogic) EPayNotify(req *types.EPayNotifyRequest) error {
task := asynq.NewTask(queueType.ForthwithActivateOrder, bytes)
taskInfo, err := l.svcCtx.Queue.EnqueueContext(l.ctx, task)
if err != nil {
l.Logger.Error("[EPayNotify] Enqueue task failed", logger.Field("error", err.Error()))
l.Logger.Error("[EPayNotify] Enqueue task failed", logger.Field("error", err.Error()), logger.Field("orderNo", req.OutTradeNo))
return err
}
l.Logger.Info("[EPayNotify] Enqueue task success", logger.Field("taskInfo", taskInfo))
l.Logger.Info("[EPayNotify] ✅ 回调处理成功,已入队激活任务",
logger.Field("orderNo", req.OutTradeNo),
logger.Field("taskId", taskInfo.ID))
return nil
}