Files
hfb_sys/backend/internal/modules/paymentconfig/dto.go
T

119 lines
5.2 KiB
Go

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")
ErrAppIDRequired = errors.New("extra_config.app_id is required for lakala provider")
ErrSerialNoRequired = errors.New("extra_config.serial_no is required for lakala provider")
ErrTermNoRequired = errors.New("extra_config.term_no is required for lakala provider")
)
// 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 lakala 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"`
}
// ExportBackup 支付配置备份导出内容。
type ExportBackup struct {
Type string `json:"type"`
Version int `json:"version"`
ExportedAt string `json:"exported_at"`
ExportedBy uint64 `json:"exported_by"`
Total int `json:"total"`
Configs []ConfigDTO `json:"configs"`
}