This commit is contained in:
liangzai
2025-12-31 17:07:27 +08:00
parent a30d77845d
commit c768fbfc0f
2 changed files with 97 additions and 26 deletions

View File

@@ -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)
// 重新查询订单(获取最新版本号)

View File

@@ -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)
}