优化结构
This commit is contained in:
@@ -5,10 +5,9 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"kra/internal/biz/system"
|
||||
"strings"
|
||||
|
||||
"kra/internal/biz"
|
||||
|
||||
"github.com/go-pay/gopay"
|
||||
gopayQQ "github.com/go-pay/gopay/qq"
|
||||
)
|
||||
@@ -61,7 +60,7 @@ func verifyQQResponse(apiKey, signType string, response any) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *qqAdapter) Create(ctx context.Context, req *biz.PaymentRequest, c map[string]any) (*biz.PaymentResult, error) {
|
||||
func (a *qqAdapter) Create(ctx context.Context, req *system.PaymentRequest, c map[string]any) (*system.PaymentResult, error) {
|
||||
if req == nil {
|
||||
return nil, errors.New("QQ 支付下单请求为空")
|
||||
}
|
||||
@@ -104,7 +103,7 @@ func (a *qqAdapter) Create(ctx context.Context, req *biz.PaymentRequest, c map[s
|
||||
if status == "pending" && strings.EqualFold(rsp.ResultCode, "SUCCESS") && strings.TrimSpace(rsp.TransactionId) != "" {
|
||||
status = "success"
|
||||
}
|
||||
return &biz.PaymentResult{Provider: biz.PaymentQQ, Status: status, TradeNo: firstNonEmptyQQ(rsp.OutTradeNo, req.TradeNo), ProviderTradeNo: strings.TrimSpace(rsp.TransactionId), Payload: mustJSON(rsp)}, nil
|
||||
return &system.PaymentResult{Provider: system.PaymentQQ, Status: status, TradeNo: firstNonEmptyQQ(rsp.OutTradeNo, req.TradeNo), ProviderTradeNo: strings.TrimSpace(rsp.TransactionId), Payload: mustJSON(rsp)}, nil
|
||||
}
|
||||
bm.Set("trade_type", tradeType)
|
||||
mergeGoPayExtras(bm, req.Extra, "nonce_str", "body", "out_trade_no", "total_fee", "spbill_create_ip", "notify_url", "trade_type", "mch_id", "sign_type")
|
||||
@@ -118,7 +117,7 @@ func (a *qqAdapter) Create(ctx context.Context, req *biz.PaymentRequest, c map[s
|
||||
if rsp == nil || !qqOK(rsp.ReturnCode, rsp.ResultCode) {
|
||||
return nil, fmt.Errorf("QQ 支付下单失败: %s", first(rspMap(rsp), "return_msg", "ret_msg", "err_code_des"))
|
||||
}
|
||||
result := &biz.PaymentResult{Provider: biz.PaymentQQ, Status: "created", TradeNo: req.TradeNo, Payload: mustJSON(rsp)}
|
||||
result := &system.PaymentResult{Provider: system.PaymentQQ, Status: "created", TradeNo: req.TradeNo, Payload: mustJSON(rsp)}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
@@ -153,7 +152,7 @@ func firstNonEmptyQQ(values ...string) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (a *qqAdapter) Query(ctx context.Context, tradeNo string, c map[string]any) (*biz.PaymentResult, error) {
|
||||
func (a *qqAdapter) Query(ctx context.Context, tradeNo string, c map[string]any) (*system.PaymentResult, error) {
|
||||
tradeNo = strings.TrimSpace(tradeNo)
|
||||
if tradeNo == "" {
|
||||
return nil, errors.New("QQ 支付查单缺少 out_trade_no")
|
||||
@@ -178,7 +177,7 @@ func (a *qqAdapter) Query(ctx context.Context, tradeNo string, c map[string]any)
|
||||
if rsp == nil || !qqOK(rsp.ReturnCode, rsp.ResultCode) {
|
||||
return nil, fmt.Errorf("QQ 支付查单失败: %s", first(rspMap(rsp), "return_msg", "ret_msg", "err_code_des"))
|
||||
}
|
||||
result := &biz.PaymentResult{Provider: biz.PaymentQQ, Status: normalizeQQState(rsp.TradeState), TradeNo: rsp.OutTradeNo, ProviderTradeNo: rsp.TransactionId, Payload: mustJSON(rsp)}
|
||||
result := &system.PaymentResult{Provider: system.PaymentQQ, Status: normalizeQQState(rsp.TradeState), TradeNo: rsp.OutTradeNo, ProviderTradeNo: rsp.TransactionId, Payload: mustJSON(rsp)}
|
||||
if result.TradeNo == "" {
|
||||
result.TradeNo = tradeNo
|
||||
} else if strings.TrimSpace(result.TradeNo) != tradeNo {
|
||||
@@ -205,7 +204,7 @@ func (a *qqAdapter) Query(ctx context.Context, tradeNo string, c map[string]any)
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (a *qqAdapter) Refund(ctx context.Context, req *biz.PaymentRefundRequest, c map[string]any) (*biz.PaymentResult, error) {
|
||||
func (a *qqAdapter) Refund(ctx context.Context, req *system.PaymentRefundRequest, c map[string]any) (*system.PaymentResult, error) {
|
||||
if req == nil {
|
||||
return nil, errors.New("QQ 支付退款请求为空")
|
||||
}
|
||||
@@ -269,7 +268,7 @@ func (a *qqAdapter) Refund(ctx context.Context, req *biz.PaymentRefundRequest, c
|
||||
if returnedTradeNo == "" {
|
||||
returnedTradeNo = tradeNo
|
||||
}
|
||||
return &biz.PaymentResult{Provider: biz.PaymentQQ, Status: "pending", TradeNo: returnedTradeNo, ProviderTradeNo: strings.TrimSpace(rsp.RefundId), Amount: refundAmount, Currency: strings.ToUpper(req.Currency), Payload: mustJSON(rsp)}, nil
|
||||
return &system.PaymentResult{Provider: system.PaymentQQ, Status: "pending", TradeNo: returnedTradeNo, ProviderTradeNo: strings.TrimSpace(rsp.RefundId), Amount: refundAmount, Currency: strings.ToUpper(req.Currency), Payload: mustJSON(rsp)}, nil
|
||||
}
|
||||
|
||||
func validateQQRefundIdentity(tradeNo, refundNo string, rsp *gopayQQ.RefundResponse) error {
|
||||
@@ -290,7 +289,7 @@ func validateQQRefundIdentity(tradeNo, refundNo string, rsp *gopayQQ.RefundRespo
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *qqAdapter) Callback(_ context.Context, callback *biz.PaymentCallback, c map[string]any) (*biz.PaymentResult, error) {
|
||||
func (a *qqAdapter) Callback(_ context.Context, callback *system.PaymentCallback, c map[string]any) (*system.PaymentResult, error) {
|
||||
if callback == nil {
|
||||
return nil, errors.New("QQ 支付回调为空")
|
||||
}
|
||||
@@ -319,5 +318,5 @@ func (a *qqAdapter) Callback(_ context.Context, callback *biz.PaymentCallback, c
|
||||
status = "success"
|
||||
}
|
||||
payload, _ := json.Marshal(values)
|
||||
return &biz.PaymentResult{Provider: biz.PaymentQQ, Status: status, TradeNo: values["out_trade_no"], ProviderTradeNo: values["transaction_id"], Payload: payload}, nil
|
||||
return &system.PaymentResult{Provider: system.PaymentQQ, Status: status, TradeNo: values["out_trade_no"], ProviderTradeNo: values["transaction_id"], Payload: payload}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user