diff --git a/src/cmds/archive.ts b/src/cmds/archive.ts index 21bc19cf..ddb3f435 100644 --- a/src/cmds/archive.ts +++ b/src/cmds/archive.ts @@ -586,6 +586,7 @@ async function fetchAndSaveLatestWebApis(gameTargets: GameTarget[]) { { name: 'mainBgImage', method: apiUtils.akEndfield.launcherWeb.mainBgImage, dir: 'main_bg_image' }, { name: 'banner', method: apiUtils.akEndfield.launcherWeb.banner, dir: 'banner' }, { name: 'announcement', method: apiUtils.akEndfield.launcherWeb.announcement, dir: 'announcement' }, + { name: 'urlConfig', method: apiUtils.akEndfield.launcherWeb.urlConfig, dir: 'url_config' } ] as const; for (const target of gameTargets) { diff --git a/src/types/api/akEndfield/Api.ts b/src/types/api/akEndfield/Api.ts index f24d35af..99e5d903 100644 --- a/src/types/api/akEndfield/Api.ts +++ b/src/types/api/akEndfield/Api.ts @@ -131,6 +131,10 @@ type LauncherWebAnnouncement = { }[]; }; +type LauncherWebUrlConfig = { + payment_url: string; +}; + type AccSrvUserAuthV1TokenByEmail = { data: { token: string; @@ -565,6 +569,7 @@ export type { LauncherWebMainBgImage, LauncherWebBanner, LauncherWebAnnouncement, + LauncherWebUrlConfig, AccSrvUserAuthV1TokenByEmail, AccSrvUserInfoV1Basic, AccSrvUserInfoV1ThirdParty, diff --git a/src/utils/api/akEndfield/launcherWeb.ts b/src/utils/api/akEndfield/launcherWeb.ts index 401aeef2..b34b5e6a 100644 --- a/src/utils/api/akEndfield/launcherWeb.ts +++ b/src/utils/api/akEndfield/launcherWeb.ts @@ -174,4 +174,38 @@ export default { .json(); return (rsp as any).proxy_rsps[0].get_announcement_rsp as TypesApiAkEndfield.LauncherWebAnnouncement; }, + urlConfig: async ( + appCode: string, + channel: number, + subChannel: number, + language: (typeof defaultSettings.launcherWebLang)[number], + region: 'os' | 'cn', + platform: 'Windows' = 'Windows', + ): Promise => { + const apiBase = + region === 'cn' + ? appConfig.network.api.akEndfield.base.launcherCN + : appConfig.network.api.akEndfield.base.launcher; + const rsp = await ky + .post(`https://${apiBase}/proxy/web/batch_proxy`, { + ...defaultSettings.ky, + json: { + proxy_reqs: [ + { + kind: 'get_url_config', + get_url_config_req: { + appcode: appCode, + channel: String(channel), + sub_channel: String(subChannel), + language, + platform, + source: 'launcher', + }, + }, + ], + }, + }) + .json(); + return (rsp as any).proxy_rsps[0].get_url_config_rsp as TypesApiAkEndfield.LauncherWebUrlConfig; + }, };