From c768fbfc0fa9d413e9107166645abe127f7d1e51 Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Wed, 31 Dec 2025 17:07:27 +0800 Subject: [PATCH] fix --- .../internal/logic/pay/paymentchecklogic.go | 2 +- .../api/internal/service/easyPayService.go | 121 ++++++++++++++---- 2 files changed, 97 insertions(+), 26 deletions(-) diff --git a/app/main/api/internal/logic/pay/paymentchecklogic.go b/app/main/api/internal/logic/pay/paymentchecklogic.go index 3b0fe71..e570fb9 100644 --- a/app/main/api/internal/logic/pay/paymentchecklogic.go +++ b/app/main/api/internal/logic/pay/paymentchecklogic.go @@ -58,7 +58,7 @@ func (l *PaymentCheckLogic) PaymentCheck(req *types.PaymentCheckReq) (resp *type // 查询失败不影响返回,继续返回当前订单状态 } else { // 如果易支付返回订单已支付(status == 1),更新本地订单状态 - if queryResp.Status == 1 { + if queryResp.GetStatusInt() == 1 { logx.Infof("主动查询发现易支付订单已支付,订单号: %s,开始更新订单状态", req.OrderNo) // 重新查询订单(获取最新版本号) diff --git a/app/main/api/internal/service/easyPayService.go b/app/main/api/internal/service/easyPayService.go index 60c4446..36bfefc 100644 --- a/app/main/api/internal/service/easyPayService.go +++ b/app/main/api/internal/service/easyPayService.go @@ -35,36 +35,107 @@ func NewEasyPayService(c config.Config) *EasyPayService { // EasyPayOrderResponse API接口支付响应 type EasyPayOrderResponse struct { - Code int `json:"code"` - Msg string `json:"msg"` - TradeNo string `json:"trade_no,omitempty"` - OId string `json:"O_id,omitempty"` - PayUrl string `json:"payurl,omitempty"` - Qrcode string `json:"qrcode,omitempty"` - Img string `json:"img,omitempty"` + Code interface{} `json:"code"` // 可能是 int 或 string + Msg string `json:"msg"` + TradeNo string `json:"trade_no,omitempty"` + OId string `json:"O_id,omitempty"` + PayUrl string `json:"payurl,omitempty"` + Qrcode string `json:"qrcode,omitempty"` + Img string `json:"img,omitempty"` +} + +// GetCodeInt 获取 code 的 int 值 +func (r *EasyPayOrderResponse) GetCodeInt() int { + switch v := r.Code.(type) { + case int: + return v + case float64: + return int(v) + case string: + if v == "1" || v == "error" { + if v == "1" { + return 1 + } + return 0 + } + return 0 + default: + return 0 + } } // EasyPayQueryResponse 查询订单响应 type EasyPayQueryResponse struct { - Code int `json:"code"` - Msg string `json:"msg"` - TradeNo string `json:"trade_no,omitempty"` - OutTradeNo string `json:"out_trade_no,omitempty"` - Type string `json:"type,omitempty"` - Pid string `json:"pid,omitempty"` - Addtime string `json:"addtime,omitempty"` - Endtime string `json:"endtime,omitempty"` - Name string `json:"name,omitempty"` - Money string `json:"money,omitempty"` - Status int `json:"status,omitempty"` - Param string `json:"param,omitempty"` - Buyer string `json:"buyer,omitempty"` + Code interface{} `json:"code"` // 可能是 int 或 string + Msg string `json:"msg"` + TradeNo string `json:"trade_no,omitempty"` + OutTradeNo string `json:"out_trade_no,omitempty"` + Type string `json:"type,omitempty"` + Pid string `json:"pid,omitempty"` + Addtime string `json:"addtime,omitempty"` + Endtime string `json:"endtime,omitempty"` + Name string `json:"name,omitempty"` + Money string `json:"money,omitempty"` + Status interface{} `json:"status,omitempty"` // 可能是 int 或 string + Param string `json:"param,omitempty"` + Buyer string `json:"buyer,omitempty"` +} + +// GetCodeInt 获取 code 的 int 值 +func (r *EasyPayQueryResponse) GetCodeInt() int { + switch v := r.Code.(type) { + case int: + return v + case float64: + return int(v) + case string: + if v == "1" { + return 1 + } + return 0 + default: + return 0 + } +} + +// GetStatusInt 获取 status 的 int 值 +func (r *EasyPayQueryResponse) GetStatusInt() int { + switch v := r.Status.(type) { + case int: + return v + case float64: + return int(v) + case string: + if v == "1" { + return 1 + } + return 0 + default: + return 0 + } } // EasyPayRefundResponse 退款响应 type EasyPayRefundResponse struct { - Code int `json:"code"` - Msg string `json:"msg"` + Code interface{} `json:"code"` // 可能是 int 或 string + Msg string `json:"msg"` +} + +// GetCodeInt 获取 code 的 int 值 +func (r *EasyPayRefundResponse) GetCodeInt() int { + switch v := r.Code.(type) { + case int: + return v + case float64: + return int(v) + case string: + if v == "1" { + return 1 + } + return 0 + default: + return 0 + } } // EasyPayNotification 支付回调通知 @@ -213,7 +284,7 @@ func (e *EasyPayService) CreateEasyPayAppOrder(ctx context.Context, amount float return "", fmt.Errorf("解析响应失败: %v, 响应内容: %s", err, string(body)) } - if orderResp.Code != 1 { + if orderResp.GetCodeInt() != 1 { return "", fmt.Errorf("创建订单失败: %s", orderResp.Msg) } @@ -321,7 +392,7 @@ func (e *EasyPayService) QueryOrderStatus(ctx context.Context, outTradeNo string return nil, fmt.Errorf("解析响应失败: %v, 响应内容: %s", err, string(body)) } - if queryResp.Code != 1 { + if queryResp.GetCodeInt() != 1 { return nil, fmt.Errorf("查询订单失败: %s", queryResp.Msg) } @@ -374,7 +445,7 @@ func (e *EasyPayService) Refund(ctx context.Context, outTradeNo string, refundAm return fmt.Errorf("解析响应失败: %v, 响应内容: %s", err, string(body)) } - if refundResp.Code != 1 { + if refundResp.GetCodeInt() != 1 { return fmt.Errorf("退款失败: %s", refundResp.Msg) }