fix zgame callback base config

This commit is contained in:
zhx 2026-06-29 18:31:41 +08:00
parent db71bbfe09
commit 785058a189
3 changed files with 17 additions and 4 deletions

View File

@ -1007,8 +1007,9 @@ func buildLaunchURL(game gamedomain.LaunchableGame, session gamedomain.LaunchSes
query.Set("session", token)
query.Set("gameId", strings.TrimSpace(session.ProviderGameID))
query.Set("game_id", strings.TrimSpace(session.ProviderGameID))
query.Set("callbackBase", "/api/v1/zgame/callback")
query.Set("callback_base", "/api/v1/zgame/callback")
callbackBase := config.CallbackBaseValue()
query.Set("callbackBase", callbackBase)
query.Set("callback_base", callbackBase)
if config.DefaultLang != "" {
query.Set("lang", config.DefaultLang)
}

View File

@ -567,6 +567,7 @@ func TestLaunchGameBuildsZGameURL(t *testing.T) {
"token_ttl_seconds":7200,
"uid_mode":"display_user_id",
"merchant_payload":"room_game",
"callback_base":"https://api.example.test/api/v1/zgame/callback",
"bridge_script_url":"https://cdn.example/zgame-bridge.js",
"bridge_script_version":"20260629.1",
"game_urls":{"1001":"https://zgame.example/h5/1001"}
@ -607,8 +608,8 @@ func TestLaunchGameBuildsZGameURL(t *testing.T) {
"session": token,
"gameId": "1001",
"game_id": "1001",
"callbackBase": "/api/v1/zgame/callback",
"callback_base": "/api/v1/zgame/callback",
"callbackBase": "https://api.example.test/api/v1/zgame/callback",
"callback_base": "https://api.example.test/api/v1/zgame/callback",
"lang": "en",
"roomId": "room_1",
"room_id": "room_1",

View File

@ -38,6 +38,9 @@ type zgameAdapterConfig struct {
// game_urls 支持 ZGame 每款游戏独立 H5 地址launch_url_template 用于批量上新时按 provider_game_id 生成地址。
GameURLs map[string]string `json:"game_urls"`
LaunchURLTemplate string `json:"launch_url_template"`
// callback_base 可按环境覆盖为完整公网 HTTPS 地址,避免 H5 在第三方域名下把相对路径解析到厂商域名。
CallbackBase string `json:"callback_base"`
CallbackBaseAlias string `json:"callbackBase"`
// merchant_payload 是 ZGame consume 回调的透传字段来源;只参与厂商回传,不进入内部业务判断。
MerchantPayload string `json:"merchant_payload"`
// level/gender 是 ZGame 用户资料响应里的展示字段;真实等级接入前保持显式默认值,避免从其它体系误推。
@ -58,6 +61,7 @@ func zgameConfigFromPlatform(value any) zgameAdapterConfig {
config.UIDMode = strings.ToLower(strings.TrimSpace(config.UIDMode))
config.DefaultLang = strings.TrimSpace(config.DefaultLang)
config.LaunchURLTemplate = strings.TrimSpace(config.LaunchURLTemplate)
config.CallbackBase = strings.TrimSpace(firstNonEmpty(config.CallbackBase, config.CallbackBaseAlias))
config.MerchantPayload = strings.TrimSpace(config.MerchantPayload)
config.GameURLs = normalizeStringMap(config.GameURLs)
return config
@ -70,6 +74,13 @@ func (c zgameAdapterConfig) TokenTTL() time.Duration {
return zgameDefaultTokenTTL
}
func (c zgameAdapterConfig) CallbackBaseValue() string {
if c.CallbackBase != "" {
return c.CallbackBase
}
return "/api/v1/zgame/callback"
}
func zgameLaunchBaseURL(game gamedomain.LaunchableGame, config zgameAdapterConfig) string {
for _, key := range []string{game.ProviderGameID, game.GameID, strings.ToLower(game.GameID)} {
if raw := strings.TrimSpace(config.GameURLs[strings.TrimSpace(key)]); raw != "" {