支持后台支付配置管理
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
package paymentconfig
|
||||
|
||||
import "errors"
|
||||
|
||||
var (
|
||||
ErrConfigNotFound = errors.New("payment config not found")
|
||||
ErrDuplicateDefault = errors.New("duplicate default config for provider")
|
||||
ErrInvalidProvider = errors.New("invalid payment provider")
|
||||
ErrInvalidStatus = errors.New("invalid status")
|
||||
ErrCannotDeleteInUse = errors.New("cannot delete config in use")
|
||||
ErrEncryptionFailed = errors.New("encryption failed")
|
||||
ErrDecryptionFailed = errors.New("decryption failed")
|
||||
ErrNoActiveConfigFound = errors.New("no active config found for provider")
|
||||
ErrMerchantIDRequired = errors.New("merchant_id is required")
|
||||
ErrNameRequired = errors.New("name is required")
|
||||
ErrGatewayURLRequired = errors.New("gateway_url is required for leshua provider")
|
||||
ErrSignKeyRequired = errors.New("sign_key is required for leshua provider")
|
||||
ErrNotifyKeyRequired = errors.New("notify_key is required for leshua provider")
|
||||
ErrNotifyURLRequired = errors.New("notify_url is required for leshua provider")
|
||||
ErrInvalidSignType = errors.New("invalid sign_type")
|
||||
)
|
||||
|
||||
// DTO 数据传输对象
|
||||
type ConfigDTO struct {
|
||||
ID uint64 `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Provider string `json:"provider"`
|
||||
MerchantID string `json:"merchant_id"`
|
||||
GatewayURL string `json:"gateway_url"`
|
||||
SignKey string `json:"sign_key,omitempty"` // 默认不返回
|
||||
NotifyKey string `json:"notify_key,omitempty"` // 默认不返回
|
||||
NotifyURL string `json:"notify_url"`
|
||||
JumpURL string `json:"jump_url"`
|
||||
PayWay string `json:"pay_way"`
|
||||
JSPayFlag string `json:"jspay_flag"`
|
||||
SignType string `json:"sign_type"`
|
||||
ExtraConfig map[string]any `json:"extra_config"`
|
||||
IsDefault bool `json:"is_default"`
|
||||
Status string `json:"status"`
|
||||
Environment string `json:"environment"`
|
||||
BusinessTags []string `json:"business_tags"`
|
||||
TotalTransactions int64 `json:"total_transactions"`
|
||||
TotalAmountCent int64 `json:"total_amount_cent"`
|
||||
LastUsedAt *string `json:"last_used_at"`
|
||||
CreatedBy *uint64 `json:"created_by"`
|
||||
UpdatedBy *uint64 `json:"updated_by"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
}
|
||||
|
||||
// CreateRequest 创建支付配置请求
|
||||
type CreateRequest struct {
|
||||
Name string `json:"name" binding:"required"`
|
||||
Provider string `json:"provider" binding:"required,oneof=leshua mock"`
|
||||
MerchantID string `json:"merchant_id" binding:"required"`
|
||||
GatewayURL string `json:"gateway_url"`
|
||||
SignKey string `json:"sign_key"`
|
||||
NotifyKey string `json:"notify_key"`
|
||||
NotifyURL string `json:"notify_url"`
|
||||
JumpURL string `json:"jump_url"`
|
||||
PayWay string `json:"pay_way"`
|
||||
JSPayFlag string `json:"jspay_flag"`
|
||||
SignType string `json:"sign_type"`
|
||||
ExtraConfig map[string]any `json:"extra_config"`
|
||||
IsDefault bool `json:"is_default"`
|
||||
Status string `json:"status" binding:"omitempty,oneof=active disabled testing"`
|
||||
Environment string `json:"environment" binding:"omitempty,oneof=production sandbox"`
|
||||
BusinessTags []string `json:"business_tags"`
|
||||
}
|
||||
|
||||
// UpdateRequest 更新支付配置请求
|
||||
type UpdateRequest struct {
|
||||
Name *string `json:"name"`
|
||||
MerchantID *string `json:"merchant_id"`
|
||||
GatewayURL *string `json:"gateway_url"`
|
||||
SignKey *string `json:"sign_key"`
|
||||
NotifyKey *string `json:"notify_key"`
|
||||
NotifyURL *string `json:"notify_url"`
|
||||
JumpURL *string `json:"jump_url"`
|
||||
PayWay *string `json:"pay_way"`
|
||||
JSPayFlag *string `json:"jspay_flag"`
|
||||
SignType *string `json:"sign_type"`
|
||||
ExtraConfig map[string]any `json:"extra_config"`
|
||||
IsDefault *bool `json:"is_default"`
|
||||
Status *string `json:"status"`
|
||||
Environment *string `json:"environment"`
|
||||
BusinessTags []string `json:"business_tags"`
|
||||
}
|
||||
|
||||
// ListQuery 列表查询参数
|
||||
type ListQuery struct {
|
||||
Provider string `form:"provider"`
|
||||
Status string `form:"status"`
|
||||
Environment string `form:"environment"`
|
||||
Page int `form:"page"`
|
||||
PageSize int `form:"page_size"`
|
||||
}
|
||||
|
||||
// ListResponse 列表响应
|
||||
type ListResponse struct {
|
||||
Items []ConfigDTO `json:"items"`
|
||||
Total int64 `json:"total"`
|
||||
Page int `json:"page"`
|
||||
PageSize int `json:"page_size"`
|
||||
}
|
||||
Reference in New Issue
Block a user