优化结构
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user