优化结构

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
+14 -14
View File
@@ -4,7 +4,7 @@ import (
"context"
"errors"
"fmt"
"kra/internal/biz/system"
bizpayment "kra/internal/biz/payment"
"strings"
"github.com/go-pay/gopay"
@@ -17,7 +17,7 @@ func (a *lakalaAdapter) client(c map[string]any) (*lakala.Client, error) {
return lakala.NewClient(text(c, "partner_code"), text(c, "credential_code"), !strings.EqualFold(text(c, "environment"), "sandbox"))
}
func (a *lakalaAdapter) Create(ctx context.Context, req *system.PaymentRequest, c map[string]any) (*system.PaymentResult, error) {
func (a *lakalaAdapter) Create(ctx context.Context, req *bizpayment.PaymentRequest, c map[string]any) (*bizpayment.PaymentResult, error) {
if req == nil {
return nil, errors.New("拉卡拉支付下单请求为空")
}
@@ -74,7 +74,7 @@ func lakalaCreateMethod(extra, config map[string]any) string {
return strings.NewReplacer(".", "_", "-", "_", " ", "_").Replace(strings.ToLower(strings.TrimSpace(method)))
}
func lakalaCreateResult(tradeNo string, rsp *lakala.PaymentRsp) (*system.PaymentResult, error) {
func lakalaCreateResult(tradeNo string, rsp *lakala.PaymentRsp) (*bizpayment.PaymentResult, error) {
if rsp == nil || !lakalaCreateResponseOK(rsp.ReturnCode, rsp.ResultCode) {
return nil, fmt.Errorf("拉卡拉支付下单失败: %v", rsp)
}
@@ -85,10 +85,10 @@ func lakalaCreateResult(tradeNo string, rsp *lakala.PaymentRsp) (*system.Payment
if partnerOrderID := strings.TrimSpace(rsp.PartnerOrderId); partnerOrderID != "" && partnerOrderID != tradeNo {
return nil, errors.New("拉卡拉支付下单响应的商户订单号不匹配")
}
return &system.PaymentResult{Provider: system.PaymentLakala, Status: "created", TradeNo: tradeNo, QueryID: orderID, Payload: mustJSON(rsp)}, nil
return &bizpayment.PaymentResult{Provider: bizpayment.PaymentLakala, Status: "created", TradeNo: tradeNo, QueryID: orderID, Payload: mustJSON(rsp)}, nil
}
func lakalaRetailCreateResult(tradeNo string, rsp *lakala.RetailPayRsp) (*system.PaymentResult, error) {
func lakalaRetailCreateResult(tradeNo string, rsp *lakala.RetailPayRsp) (*bizpayment.PaymentResult, error) {
if rsp == nil || !lakalaRetailCreateResponseOK(rsp.ReturnCode, rsp.ResultCode) {
return nil, fmt.Errorf("拉卡拉线下支付下单失败: %v", rsp)
}
@@ -99,15 +99,15 @@ func lakalaRetailCreateResult(tradeNo string, rsp *lakala.RetailPayRsp) (*system
if partnerOrderID := strings.TrimSpace(rsp.PartnerOrderId); partnerOrderID != "" && partnerOrderID != tradeNo {
return nil, errors.New("拉卡拉线下支付下单响应的商户订单号不匹配")
}
result := &system.PaymentResult{
Provider: system.PaymentLakala, Status: "created", TradeNo: tradeNo,
result := &bizpayment.PaymentResult{
Provider: bizpayment.PaymentLakala, Status: "created", TradeNo: tradeNo,
QueryID: orderID, Amount: int64(rsp.TotalFee), Currency: strings.ToUpper(rsp.Currency),
Payload: mustJSON(rsp),
}
return result, nil
}
func (a *lakalaAdapter) Query(ctx context.Context, tradeNo string, c map[string]any) (*system.PaymentResult, error) {
func (a *lakalaAdapter) Query(ctx context.Context, tradeNo string, c map[string]any) (*bizpayment.PaymentResult, error) {
client, err := a.client(c)
if err != nil {
return nil, err
@@ -131,7 +131,7 @@ func (a *lakalaAdapter) Query(ctx context.Context, tradeNo string, c map[string]
if returnedTradeNo == "" {
return nil, errors.New("拉卡拉支付查单响应缺少商户订单号")
}
result := &system.PaymentResult{Provider: system.PaymentLakala, Status: status, TradeNo: returnedTradeNo, ProviderTradeNo: strings.TrimSpace(rsp.ChannelOrderId), QueryID: orderID, Amount: int64(rsp.TotalFee), Currency: strings.ToUpper(rsp.Currency), Payload: mustJSON(rsp)}
result := &bizpayment.PaymentResult{Provider: bizpayment.PaymentLakala, Status: status, TradeNo: returnedTradeNo, ProviderTradeNo: strings.TrimSpace(rsp.ChannelOrderId), QueryID: orderID, Amount: int64(rsp.TotalFee), Currency: strings.ToUpper(rsp.Currency), Payload: mustJSON(rsp)}
if result.Currency == "" {
result.Currency = strings.ToUpper(firstAny(c, "currency", "default_currency"))
}
@@ -149,7 +149,7 @@ func (a *lakalaAdapter) Query(ctx context.Context, tradeNo string, c map[string]
return result, nil
}
func (a *lakalaAdapter) Refund(ctx context.Context, req *system.PaymentRefundRequest, c map[string]any) (*system.PaymentResult, error) {
func (a *lakalaAdapter) Refund(ctx context.Context, req *bizpayment.PaymentRefundRequest, c map[string]any) (*bizpayment.PaymentResult, error) {
if req == nil {
return nil, errors.New("拉卡拉支付退款请求为空")
}
@@ -181,7 +181,7 @@ func (a *lakalaAdapter) Refund(ctx context.Context, req *system.PaymentRefundReq
return lakalaRefundResult(&effective, rsp)
}
func lakalaRefundResult(req *system.PaymentRefundRequest, rsp *lakala.RefundRsp) (*system.PaymentResult, error) {
func lakalaRefundResult(req *bizpayment.PaymentRefundRequest, rsp *lakala.RefundRsp) (*bizpayment.PaymentResult, error) {
if rsp == nil || !lakalaRefundResponseOK(rsp.ReturnCode, rsp.ResultCode) {
return nil, fmt.Errorf("拉卡拉支付退款失败: %v", rsp)
}
@@ -204,10 +204,10 @@ func lakalaRefundResult(req *system.PaymentRefundRequest, rsp *lakala.RefundRsp)
} else if requestCurrency != "" && currency != requestCurrency {
return nil, errors.New("拉卡拉支付退款响应币种不匹配")
}
return &system.PaymentResult{Provider: system.PaymentLakala, Status: normalizeLakalaRefundState(rsp.ResultCode), TradeNo: req.TradeNo, ProviderTradeNo: providerRefundID, Amount: int64(rsp.Amount), Currency: currency, Payload: mustJSON(rsp)}, nil
return &bizpayment.PaymentResult{Provider: bizpayment.PaymentLakala, Status: normalizeLakalaRefundState(rsp.ResultCode), TradeNo: req.TradeNo, ProviderTradeNo: providerRefundID, Amount: int64(rsp.Amount), Currency: currency, Payload: mustJSON(rsp)}, nil
}
func (a *lakalaAdapter) Callback(_ context.Context, callback *system.PaymentCallback, c map[string]any) (*system.PaymentResult, error) {
func (a *lakalaAdapter) Callback(_ context.Context, callback *bizpayment.PaymentCallback, c map[string]any) (*bizpayment.PaymentResult, error) {
if callback == nil {
return nil, errors.New("拉卡拉支付回调为空")
}
@@ -222,5 +222,5 @@ func (a *lakalaAdapter) Callback(_ context.Context, callback *system.PaymentCall
if err := lakala.VerifySign(notify, text(c, "partner_code"), text(c, "credential_code")); err != nil {
return nil, err
}
return &system.PaymentResult{Provider: system.PaymentLakala, Status: "success", TradeNo: notify.PartnerOrderId, ProviderTradeNo: strings.TrimSpace(notify.ChannelOrderId), QueryID: strings.TrimSpace(notify.OrderId), Amount: int64(notify.TotalFee), Currency: strings.ToUpper(notify.Currency), Payload: mustJSON(notify)}, nil
return &bizpayment.PaymentResult{Provider: bizpayment.PaymentLakala, Status: "success", TradeNo: notify.PartnerOrderId, ProviderTradeNo: strings.TrimSpace(notify.ChannelOrderId), QueryID: strings.TrimSpace(notify.OrderId), Amount: int64(notify.TotalFee), Currency: strings.ToUpper(notify.Currency), Payload: mustJSON(notify)}, nil
}