修复支付网关地址空白字符
This commit is contained in:
@@ -3,6 +3,7 @@ package paymentconfig
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"hfb_sys/backend/internal/model"
|
||||
|
||||
@@ -12,6 +13,7 @@ import (
|
||||
|
||||
// Create 创建配置
|
||||
func (r *Repository) Create(ctx context.Context, req CreateRequest, actorID uint64, meta AuditMeta) (*ConfigDTO, error) {
|
||||
req = normalizeCreateRequest(req)
|
||||
// 验证必填字段
|
||||
if err := r.validateCreateRequest(req); err != nil {
|
||||
return nil, err
|
||||
@@ -91,10 +93,9 @@ func (r *Repository) Create(ctx context.Context, req CreateRequest, actorID uint
|
||||
return &dto, nil
|
||||
}
|
||||
|
||||
// Update 更新配置
|
||||
|
||||
// Update 更新配置
|
||||
func (r *Repository) Update(ctx context.Context, id uint64, req UpdateRequest, actorID uint64, meta AuditMeta) (*ConfigDTO, error) {
|
||||
req = normalizeUpdateRequest(req)
|
||||
if req.SignType != nil && *req.SignType != "" && !isValidSignType(*req.SignType) {
|
||||
return nil, ErrInvalidSignType
|
||||
}
|
||||
@@ -222,7 +223,66 @@ func (r *Repository) Update(ctx context.Context, id uint64, req UpdateRequest, a
|
||||
return &dto, nil
|
||||
}
|
||||
|
||||
// Delete 删除配置
|
||||
// normalizeCreateRequest 清理后台创建配置时常见的复制粘贴空白,避免隐藏字符进入渠道请求。
|
||||
func normalizeCreateRequest(req CreateRequest) CreateRequest {
|
||||
req.Name = strings.TrimSpace(req.Name)
|
||||
req.Provider = strings.TrimSpace(req.Provider)
|
||||
req.MerchantID = strings.TrimSpace(req.MerchantID)
|
||||
req.GatewayURL = strings.TrimSpace(req.GatewayURL)
|
||||
req.SignKey = strings.TrimSpace(req.SignKey)
|
||||
req.NotifyKey = strings.TrimSpace(req.NotifyKey)
|
||||
req.NotifyURL = strings.TrimSpace(req.NotifyURL)
|
||||
req.JumpURL = strings.TrimSpace(req.JumpURL)
|
||||
req.PayWay = strings.TrimSpace(req.PayWay)
|
||||
req.JSPayFlag = strings.TrimSpace(req.JSPayFlag)
|
||||
req.SignType = strings.TrimSpace(req.SignType)
|
||||
req.Status = strings.TrimSpace(req.Status)
|
||||
req.Environment = strings.TrimSpace(req.Environment)
|
||||
req.ExtraConfig = trimExtraConfig(req.ExtraConfig)
|
||||
return req
|
||||
}
|
||||
|
||||
// normalizeUpdateRequest 清理后台更新配置时提交的字符串字段。
|
||||
func normalizeUpdateRequest(req UpdateRequest) UpdateRequest {
|
||||
trimStringPtr(req.Name)
|
||||
trimStringPtr(req.MerchantID)
|
||||
trimStringPtr(req.GatewayURL)
|
||||
trimStringPtr(req.SignKey)
|
||||
trimStringPtr(req.NotifyKey)
|
||||
trimStringPtr(req.NotifyURL)
|
||||
trimStringPtr(req.JumpURL)
|
||||
trimStringPtr(req.PayWay)
|
||||
trimStringPtr(req.JSPayFlag)
|
||||
trimStringPtr(req.SignType)
|
||||
trimStringPtr(req.Status)
|
||||
trimStringPtr(req.Environment)
|
||||
req.ExtraConfig = trimExtraConfig(req.ExtraConfig)
|
||||
return req
|
||||
}
|
||||
|
||||
// trimStringPtr 原地清理可选字符串字段。
|
||||
func trimStringPtr(value *string) {
|
||||
if value == nil {
|
||||
return
|
||||
}
|
||||
*value = strings.TrimSpace(*value)
|
||||
}
|
||||
|
||||
// trimExtraConfig 清理扩展配置里的字符串值,证书和私钥内部换行会被保留。
|
||||
func trimExtraConfig(config map[string]any) map[string]any {
|
||||
if config == nil {
|
||||
return nil
|
||||
}
|
||||
trimmed := make(map[string]any, len(config))
|
||||
for key, value := range config {
|
||||
if text, ok := value.(string); ok {
|
||||
trimmed[key] = strings.TrimSpace(text)
|
||||
continue
|
||||
}
|
||||
trimmed[key] = value
|
||||
}
|
||||
return trimmed
|
||||
}
|
||||
|
||||
// Delete 删除配置
|
||||
func (r *Repository) Delete(ctx context.Context, id uint64, actorID uint64, meta AuditMeta) error {
|
||||
|
||||
Reference in New Issue
Block a user