功能:接入乐玩开放平台双渠道路由,并修复渠道锁定与 Webhook 可靠性

在保持 DLC 默认零破坏的前提下,支持 priority/仅乐玩/仅 DLC 履约策略与后台 GUI 配置;同步补齐 Prepare 渠道落库、乐玩订单取消、Webhook 验签与失败重试。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
yml2213
2026-09-11 15:48:03 +08:00
co-authored by Cursor
parent a314f3f51b
commit f7f48d0feb
22 changed files with 6489 additions and 189 deletions
+12
View File
@@ -54,6 +54,13 @@ type Config struct {
// CORSAllowedOrigins 跨域允许的来源(逗号分隔);为空时仅放行常见本地开发端口。
// 生产前后端同域(Caddy 统一入口)时无需配置;仅在前后端分离部署时设置。
CORSAllowedOrigins []string
// 乐玩开放平台配置
LewanBaseURL string
LewanApplicationID string
LewanAccessKey string
LewanSecretKey string
LewanWebhookSecret string
}
// Load 加载配置:先尝试读取 .env,再读系统环境变量(已存在的系统环境变量优先级更高)
@@ -86,6 +93,11 @@ func Load() *Config {
CallbackRetryScheduleSeconds: getEnvIntList("CALLBACK_RETRY_SCHEDULE", nil),
UploadDir: getEnv("UPLOAD_DIR", "data/uploads"),
CORSAllowedOrigins: getEnvList("CORS_ALLOWED_ORIGINS", nil),
LewanBaseURL: getEnv("LEWAN_BASE_URL", "https://shop.cloudtentacles.com"),
LewanApplicationID: getEnv("LEWAN_APPLICATION_ID", ""),
LewanAccessKey: getEnv("LEWAN_ACCESS_KEY", ""),
LewanSecretKey: getEnv("LEWAN_SECRET_KEY", ""),
LewanWebhookSecret: getEnv("LEWAN_WEBHOOK_SECRET", ""),
}
}