优化结构

This commit is contained in:
Yvan
2026-08-22 15:53:14 +08:00
parent ca52de5db0
commit 491ed21d48
72 changed files with 746 additions and 695 deletions
+24 -24
View File
@@ -5,7 +5,7 @@ import (
"encoding/json"
"errors"
"fmt"
"kra/internal/biz/system"
bizpayment "kra/internal/biz/payment"
"net/http"
"net/url"
"os"
@@ -25,7 +25,7 @@ type alipayV3Client struct {
gateway *url.URL
}
func (a *alipayV3Adapter) Create(ctx context.Context, req *system.PaymentRequest, c map[string]any) (*system.PaymentResult, error) {
func (a *alipayV3Adapter) Create(ctx context.Context, req *bizpayment.PaymentRequest, c map[string]any) (*bizpayment.PaymentResult, error) {
if req == nil {
return nil, errors.New("支付宝 V3 下单参数为空")
}
@@ -93,8 +93,8 @@ func (a *alipayV3Adapter) Create(ctx context.Context, req *system.PaymentRequest
if strings.TrimSpace(rsp.QrCode) == "" {
return nil, errors.New("支付宝 V3 预创建响应缺少 qr_code")
}
return &system.PaymentResult{
Provider: system.PaymentAlipayV3, Status: "created", TradeNo: req.TradeNo,
return &bizpayment.PaymentResult{
Provider: bizpayment.PaymentAlipayV3, Status: "created", TradeNo: req.TradeNo,
QueryID: outTradeNo, Payload: mustJSON(rsp),
}, nil
case "alipay.trade.app.pay":
@@ -105,8 +105,8 @@ func (a *alipayV3Adapter) Create(ctx context.Context, req *system.PaymentRequest
if strings.TrimSpace(orderString) == "" {
return nil, errors.New("支付宝 V3 APP 支付参数为空")
}
return &system.PaymentResult{
Provider: system.PaymentAlipayV3, Status: "created", TradeNo: req.TradeNo,
return &bizpayment.PaymentResult{
Provider: bizpayment.PaymentAlipayV3, Status: "created", TradeNo: req.TradeNo,
Payload: mustJSON(map[string]string{"order_string": orderString}),
}, nil
case "alipay.trade.page.pay":
@@ -121,8 +121,8 @@ func (a *alipayV3Adapter) Create(ctx context.Context, req *system.PaymentRequest
if strings.TrimSpace(payURL) == "" {
return nil, errors.New("支付宝 V3 电脑网站支付 URL 为空")
}
return &system.PaymentResult{
Provider: system.PaymentAlipayV3, Status: "created", TradeNo: req.TradeNo,
return &bizpayment.PaymentResult{
Provider: bizpayment.PaymentAlipayV3, Status: "created", TradeNo: req.TradeNo,
Payload: mustJSON(map[string]string{"pay_url": payURL}),
}, nil
case "alipay.trade.wap.pay":
@@ -137,8 +137,8 @@ func (a *alipayV3Adapter) Create(ctx context.Context, req *system.PaymentRequest
if strings.TrimSpace(payURL) == "" {
return nil, errors.New("支付宝 V3 手机网站支付 URL 为空")
}
return &system.PaymentResult{
Provider: system.PaymentAlipayV3, Status: "created", TradeNo: req.TradeNo,
return &bizpayment.PaymentResult{
Provider: bizpayment.PaymentAlipayV3, Status: "created", TradeNo: req.TradeNo,
Payload: mustJSON(map[string]string{"pay_url": payURL}),
}, nil
default:
@@ -166,14 +166,14 @@ func (a *alipayV3Adapter) Create(ctx context.Context, req *system.PaymentRequest
if providerTradeNo == "" {
return nil, errors.New("支付宝 V3 创建响应缺少 trade_no")
}
return &system.PaymentResult{
Provider: system.PaymentAlipayV3, Status: "created", TradeNo: req.TradeNo,
return &bizpayment.PaymentResult{
Provider: bizpayment.PaymentAlipayV3, Status: "created", TradeNo: req.TradeNo,
ProviderTradeNo: providerTradeNo, QueryID: outTradeNo, Payload: mustJSON(rsp),
}, nil
}
}
func (a *alipayV3Adapter) Query(ctx context.Context, tradeNo string, c map[string]any) (*system.PaymentResult, error) {
func (a *alipayV3Adapter) Query(ctx context.Context, tradeNo string, c map[string]any) (*bizpayment.PaymentResult, error) {
tradeNo = strings.TrimSpace(tradeNo)
if tradeNo == "" {
return nil, errors.New("支付宝 V3 查单缺少 out_trade_no")
@@ -196,8 +196,8 @@ func (a *alipayV3Adapter) Query(ctx context.Context, tradeNo string, c map[strin
if outTradeNo == "" || outTradeNo != tradeNo {
return nil, errors.New("支付宝 V3 查询响应的 out_trade_no 缺失或不匹配")
}
result := &system.PaymentResult{
Provider: system.PaymentAlipayV3, Status: normalizePaymentStatus(rsp.TradeStatus, "pending"),
result := &bizpayment.PaymentResult{
Provider: bizpayment.PaymentAlipayV3, Status: normalizePaymentStatus(rsp.TradeStatus, "pending"),
TradeNo: outTradeNo, ProviderTradeNo: strings.TrimSpace(rsp.TradeNo),
Currency: alipayV3Currency(c, ""), Payload: mustJSON(rsp),
}
@@ -221,7 +221,7 @@ func (a *alipayV3Adapter) Query(ctx context.Context, tradeNo string, c map[strin
return result, nil
}
func (a *alipayV3Adapter) Refund(ctx context.Context, req *system.PaymentRefundRequest, c map[string]any) (*system.PaymentResult, error) {
func (a *alipayV3Adapter) Refund(ctx context.Context, req *bizpayment.PaymentRefundRequest, c map[string]any) (*bizpayment.PaymentResult, error) {
if req == nil {
return nil, errors.New("支付宝 V3 退款请求为空")
}
@@ -272,14 +272,14 @@ func (a *alipayV3Adapter) Refund(ctx context.Context, req *system.PaymentRefundR
if refundedAmount != req.Amount {
return nil, errors.New("支付宝 V3 退款响应金额不匹配")
}
return &system.PaymentResult{
Provider: system.PaymentAlipayV3, Status: "created", TradeNo: tradeNo,
return &bizpayment.PaymentResult{
Provider: bizpayment.PaymentAlipayV3, Status: "created", TradeNo: tradeNo,
ProviderTradeNo: providerTradeNo, Amount: refundedAmount,
Currency: alipayV3Currency(c, req.Currency), Payload: mustJSON(rsp),
}, nil
}
func (a *alipayV3Adapter) Callback(_ context.Context, callback *system.PaymentCallback, c map[string]any) (*system.PaymentResult, error) {
func (a *alipayV3Adapter) Callback(_ context.Context, callback *bizpayment.PaymentCallback, c map[string]any) (*bizpayment.PaymentResult, error) {
if callback == nil || len(callback.Body) == 0 {
return nil, errors.New("支付宝 V3 回调为空")
}
@@ -305,13 +305,13 @@ func (a *alipayV3Adapter) Callback(_ context.Context, callback *system.PaymentCa
return nil, errors.New("支付宝 V3 回调缺少 out_trade_no 或 trade_no")
}
payload, _ := json.Marshal(fields)
return &system.PaymentResult{
Provider: system.PaymentAlipayV3, Status: normalizePaymentStatus(fields["trade_status"], "pending"),
return &bizpayment.PaymentResult{
Provider: bizpayment.PaymentAlipayV3, Status: normalizePaymentStatus(fields["trade_status"], "pending"),
TradeNo: tradeNo, ProviderTradeNo: providerTradeNo, Payload: payload,
}, nil
}
func alipayV3TradePayResult(req *system.PaymentRequest, rsp *gopayAlipayV3.TradePayRsp) (*system.PaymentResult, error) {
func alipayV3TradePayResult(req *bizpayment.PaymentRequest, rsp *gopayAlipayV3.TradePayRsp) (*bizpayment.PaymentResult, error) {
if req == nil || rsp == nil {
return nil, errors.New("支付宝 V3 付款码支付响应为空")
}
@@ -330,8 +330,8 @@ func alipayV3TradePayResult(req *system.PaymentRequest, rsp *gopayAlipayV3.Trade
if amount != req.Amount {
return nil, errors.New("支付宝 V3 付款码支付响应金额不匹配")
}
result := &system.PaymentResult{
Provider: system.PaymentAlipayV3, Status: "success", TradeNo: outTradeNo,
result := &bizpayment.PaymentResult{
Provider: bizpayment.PaymentAlipayV3, Status: "success", TradeNo: outTradeNo,
ProviderTradeNo: providerTradeNo, Amount: amount,
Currency: strings.ToUpper(strings.TrimSpace(req.Currency)), Payload: mustJSON(rsp),
}