优化结构

This commit is contained in:
Yvan
2026-08-22 12:13:16 +08:00
parent d987244d0e
commit b27a66e9d3
200 changed files with 1794 additions and 1715 deletions
@@ -2,11 +2,10 @@ package payment
import (
"context"
"kra/internal/biz/system"
"strings"
"testing"
"kra/internal/biz"
"github.com/go-pay/gopay"
gopayQQ "github.com/go-pay/gopay/qq"
"github.com/go-pay/gopay/saobei"
@@ -16,12 +15,12 @@ import (
func TestWechatV2RefundRejectsInvalidRequestBeforeClient(t *testing.T) {
for _, tc := range []struct {
name string
req *biz.PaymentRefundRequest
req *system.PaymentRefundRequest
want string
}{
{name: "blank trade number", req: &biz.PaymentRefundRequest{TradeNo: " ", RefundNo: "R1", Amount: 1, TotalAmount: 1}, want: "out_trade_no"},
{name: "blank refund number", req: &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: " ", Amount: 1, TotalAmount: 1}, want: "out_refund_no"},
{name: "invalid amount", req: &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: "R1", Amount: 2, TotalAmount: 1}, want: "金额"},
{name: "blank trade number", req: &system.PaymentRefundRequest{TradeNo: " ", RefundNo: "R1", Amount: 1, TotalAmount: 1}, want: "out_trade_no"},
{name: "blank refund number", req: &system.PaymentRefundRequest{TradeNo: "T1", RefundNo: " ", Amount: 1, TotalAmount: 1}, want: "out_refund_no"},
{name: "invalid amount", req: &system.PaymentRefundRequest{TradeNo: "T1", RefundNo: "R1", Amount: 2, TotalAmount: 1}, want: "金额"},
} {
t.Run(tc.name, func(t *testing.T) {
_, err := (&wechatV2Adapter{}).Refund(context.Background(), tc.req, nil)
@@ -61,12 +60,12 @@ func TestWechatV2RefundIdentityValidation(t *testing.T) {
func TestQQRefundRejectsInvalidRequestBeforeClient(t *testing.T) {
for _, tc := range []struct {
name string
req *biz.PaymentRefundRequest
req *system.PaymentRefundRequest
want string
}{
{name: "blank trade number", req: &biz.PaymentRefundRequest{TradeNo: " ", RefundNo: "R1", Amount: 1}, want: "out_trade_no"},
{name: "blank refund number", req: &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: " ", Amount: 1}, want: "out_refund_no"},
{name: "invalid amount", req: &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: "R1", Amount: 0}, want: "金额"},
{name: "blank trade number", req: &system.PaymentRefundRequest{TradeNo: " ", RefundNo: "R1", Amount: 1}, want: "out_trade_no"},
{name: "blank refund number", req: &system.PaymentRefundRequest{TradeNo: "T1", RefundNo: " ", Amount: 1}, want: "out_refund_no"},
{name: "invalid amount", req: &system.PaymentRefundRequest{TradeNo: "T1", RefundNo: "R1", Amount: 0}, want: "金额"},
} {
t.Run(tc.name, func(t *testing.T) {
_, err := (&qqAdapter{}).Refund(context.Background(), tc.req, nil)
@@ -106,12 +105,12 @@ func TestQQRefundIdentityValidation(t *testing.T) {
func TestSaobeiRefundRejectsInvalidRequestBeforeClient(t *testing.T) {
for _, tc := range []struct {
name string
req *biz.PaymentRefundRequest
req *system.PaymentRefundRequest
want string
}{
{name: "blank trade number", req: &biz.PaymentRefundRequest{TradeNo: " ", RefundNo: "R1", Amount: 1}, want: "商户订单号"},
{name: "blank refund number", req: &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: " ", Amount: 1}, want: "退款单号"},
{name: "invalid amount", req: &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: "R1", Amount: 0}, want: "金额"},
{name: "blank trade number", req: &system.PaymentRefundRequest{TradeNo: " ", RefundNo: "R1", Amount: 1}, want: "商户订单号"},
{name: "blank refund number", req: &system.PaymentRefundRequest{TradeNo: "T1", RefundNo: " ", Amount: 1}, want: "退款单号"},
{name: "invalid amount", req: &system.PaymentRefundRequest{TradeNo: "T1", RefundNo: "R1", Amount: 0}, want: "金额"},
} {
t.Run(tc.name, func(t *testing.T) {
clientCreated := false
@@ -134,7 +133,7 @@ func TestSaobeiRefundRejectsMismatchedRefundNumber(t *testing.T) {
adapter := newSaobeiTestAdapter(&saobeiClientStub{refund: func(context.Context, gopay.BodyMap) (*saobei.RefundRsp, error) {
return &saobei.RefundRsp{RspBase: saobei.RspBase{ReturnCode: "01", ResultCode: "01"}, TerminalTrace: "OTHER", OutRefundNo: "SAOBEI-REFUND-1", RefundFee: "25"}, nil
}})
_, err := adapter.Refund(context.Background(), &biz.PaymentRefundRequest{TradeNo: "T1", RefundNo: "R1", Amount: 25}, nil)
_, err := adapter.Refund(context.Background(), &system.PaymentRefundRequest{TradeNo: "T1", RefundNo: "R1", Amount: 25}, nil)
if err == nil || !strings.Contains(err.Error(), "terminal_trace") {
t.Fatalf("Refund() error = %v", err)
}
@@ -144,7 +143,7 @@ func TestSaobeiBarcodeCreateTreatsPayingAsPending(t *testing.T) {
adapter := newSaobeiTestAdapter(&saobeiClientStub{barcodePay: func(context.Context, gopay.BodyMap) (*saobei.BarcodePayRsp, error) {
return &saobei.BarcodePayRsp{RspBase: saobei.RspBase{ReturnCode: "01", ResultCode: saobei.ResultCodePaying}, OutTradeNo: "SAOBEI-ORDER-1"}, nil
}})
result, err := adapter.Create(context.Background(), &biz.PaymentRequest{TradeNo: "LOCAL-1", Amount: 10, Extra: map[string]any{"method": "barcode", "auth_no": "AUTH-1"}}, nil)
result, err := adapter.Create(context.Background(), &system.PaymentRequest{TradeNo: "LOCAL-1", Amount: 10, Extra: map[string]any{"method": "barcode", "auth_no": "AUTH-1"}}, nil)
if err != nil {
t.Fatalf("Create() error = %v", err)
}