feat(payment): 后台「支付配置」支持微信支付与支付宝凭据管理
后端: - 新增 payment_configs 单行配置表;APIv3 密钥、应用私钥/公钥以 AES-256-GCM 密文入库(enc:v1 前缀,主密钥取 PAYMENT_SECRET_KEY,缺省回退 JWT_SECRET 派生) - 证书/私钥落 PAYMENT_CERT_DIR(默认 /data/payment-certs),目录 0700 / 文件 0600,不经任何静态路由暴露 - 接口:GET/PUT /api/admin/payment/config、POST /upload(PEM 校验 + 微信证书序列号自动回填)、POST /test(真打官方接口:微信 /v3/certificates 签名校验、支付宝 alipay.trade.query 签名校验)、POST /wechat/platform-certs(APIv3 密钥解密平台证书并落盘) - 未配置凭据时测试返回 skipped 而不是 500;敏感字段在返回体里一律脱敏 前端: - /payments 改为「通用设置 + 微信支付 / 支付宝 / Waffo 海外支付」页签(原 Waffo 页整页迁到 views/payments/Waffo.vue) - 微信:mchid、AppID、APIv3 密钥(密码框 + 掩码回显 + 更换/清除)、证书序列号、支付方式多选、三项证书上传、自动获取平台证书 - 支付宝:app_id、应用私钥(粘贴/上传)、支付宝公钥、网关、RSA2、回调地址 - 菜单归入「审计与设置 → 支付配置」
This commit is contained in:
1 parent
630f2819cb
commit
7d53c6ed3c
21 files changed
+3090
-6
No files matched your search
@@ -8,6 +8,7 @@ import (
|
||||
"backend/internal/controller/entitlement"
|
||||
"backend/internal/controller/license"
|
||||
"backend/internal/controller/order"
|
||||
paymentctl "backend/internal/controller/payment"
|
||||
"backend/internal/controller/plan"
|
||||
"backend/internal/controller/product"
|
||||
"backend/internal/controller/setting"
|
||||
@@ -106,6 +107,7 @@ func SetupRouter(db *gorm.DB, cfg *config.Config) *gin.Engine {
|
||||
analyticsController := analytics.NewAnalyticsController(db)
|
||||
settingController := setting.NewSettingController(db)
|
||||
syncController := synccontroller.NewController(db, cfg)
|
||||
paymentConfigController := paymentctl.NewPaymentConfigController(db, cfg)
|
||||
|
||||
api := r.Group("/api")
|
||||
{
|
||||
@@ -288,6 +290,16 @@ func SetupRouter(db *gorm.DB, cfg *config.Config) *gin.Engine {
|
||||
{
|
||||
register(paymentGroup, "POST", "/waffo/debug", settingController.DebugWaffo)
|
||||
}
|
||||
|
||||
// 支付配置(微信支付 / 支付宝,仅管理员) // Logan.Li
|
||||
paymentConfig := protected.Group("/admin/payment")
|
||||
{
|
||||
register(paymentConfig, "GET", "/config", paymentConfigController.GetConfig)
|
||||
register(paymentConfig, "PUT", "/config", paymentConfigController.UpdateConfig)
|
||||
register(paymentConfig, "POST", "/upload", paymentConfigController.Upload)
|
||||
register(paymentConfig, "POST", "/test", paymentConfigController.Test)
|
||||
register(paymentConfig, "POST", "/wechat/platform-certs", paymentConfigController.FetchWechatPlatformCerts)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user