From 9c03fe8f7c748f99b1c23e6d7bd06de6433cc23b Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Fri, 7 Mar 2025 04:01:24 +0800 Subject: [PATCH] fix pay callback inside amount --- .../internal/logic/pay/alipaycallbacklogic.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/user/cmd/api/internal/logic/pay/alipaycallbacklogic.go b/app/user/cmd/api/internal/logic/pay/alipaycallbacklogic.go index 2d1560a..7355c8a 100644 --- a/app/user/cmd/api/internal/logic/pay/alipaycallbacklogic.go +++ b/app/user/cmd/api/internal/logic/pay/alipaycallbacklogic.go @@ -45,12 +45,21 @@ func (l *AlipayCallbackLogic) AlipayCallback(w http.ResponseWriter, r *http.Requ alipay.ACKNotification(w) return nil } - amount := lzUtils.ToAlipayAmount(order.Amount) - // 确保订单金额和状态正确,防止重复更新 - if amount != notification.TotalAmount { - logx.Errorf("支付宝支付回调,金额不一致") + user, err := l.svcCtx.UserModel.FindOne(l.ctx, order.UserId) + if err != nil { + logx.Errorf("支付宝支付回调,查找用户失败: %+v", err) return nil } + amount := lzUtils.ToAlipayAmount(order.Amount) + + if user.Inside != 1 { + // 确保订单金额和状态正确,防止重复更新 + if amount != notification.TotalAmount { + logx.Errorf("支付宝支付回调,金额不一致") + return nil + } + } + if order.Status != "pending" { w.WriteHeader(http.StatusOK) _, _ = w.Write([]byte("success")) // 确保只写入一次响应