diff --git a/.gitignore b/.gitignore
index ce1ebbd..6d425c2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,6 +29,7 @@ migrate_working_dir/
pubspec.lock
# Android
+**/android/key.properties
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
diff --git a/README.md b/README.md
index a934e7d..c2131b3 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# MagiEvery AI - Flutter 应用
+# PetsHero - Flutter 应用
基于 `design/MagiEveryAI-AB` 设计图实现的 AI 图像/视频生成应用。
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 7af8182..9e36992 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -12,6 +12,12 @@ if (localPropertiesFile.exists()) {
}
}
+def keystoreProperties = new Properties()
+def keystorePropertiesFile = rootProject.file('key.properties')
+if (keystorePropertiesFile.exists()) {
+ keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
+}
+
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
@@ -48,13 +54,22 @@ android {
versionName flutterVersionName
}
+ signingConfigs {
+ release {
+ keyAlias keystoreProperties['keyAlias']
+ keyPassword keystoreProperties['keyPassword']
+ storeFile file(keystoreProperties['storeFile'])
+ storePassword keystoreProperties['storePassword']
+ }
+ }
+
buildTypes {
debug {
// 允许 HTTP 连接本地代理(手机无法直连域名时)
manifestPlaceholders = [usesCleartextTraffic: "true"]
}
release {
- signingConfig signingConfigs.debug
+ signingConfig signingConfigs.release
manifestPlaceholders = [usesCleartextTraffic: "false"]
}
}
@@ -63,6 +78,7 @@ android {
dependencies {
implementation 'com.google.android.gms:play-services-ads-identifier:18.1.0'
implementation 'com.android.installreferrer:installreferrer:2.2'
+ implementation 'androidx.appcompat:appcompat:1.7.0'
}
flutter {
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 4369cb2..6452503 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -4,9 +4,9 @@
+ android:icon="@mipmap/ic_launcher">
", // AES(原始path) → Base64
"power_level": "", // AES("POST"或"GET") → Base64
- "quest_rank": "", // AES(映射后的Header字段名JSON) → Base64
- "battle_score": "", // AES(映射后的参数名JSON) → Base64
+ "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+ "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
"loyalty_index": "", // AES(V2包装后的业务数据) → Base64
- "billing_addr": "<每次请求随机 Base64>", // 噪音
- "utm_term": "<每次请求随机 Base64>", // 噪音
- "cluster_id": "<每次请求随机 Base64>", // 噪音
- "lsn_value": "<每次请求随机 Base64>", // 噪音
- "accuracy_val": "<每次请求随机 Base64>", // 噪音
- "dir_path": "<每次请求随机 Base64>" // 噪音
+ "billing_addr": "<随机4-8位字母数字,AES加密→Base64>", // 噪音
+ "utm_term": "<随机4-8位字母数字,AES加密→Base64>", // 噪音
+ "cluster_id": "<随机4-8位字母数字,AES加密→Base64>", // 噪音
+ "lsn_value": "<随机4-8位字母数字,AES加密→Base64>", // 噪音
+ "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>", // 噪音
+ "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
}
```
> 注意: 即使原始接口为 GET(无请求体),走代理后也统一使用 POST,b 参数仍需传入 V2 包装后的空业务体。
-> 噪音 key 的值为每次请求随机生成的 Base64 字符串(模拟 AES 密文外观),服务端会忽略。
+> 噪音 key 的值为随机 4-8 位字母数字,AES 加密后 Base64 编码,每次请求重新生成,服务端会忽略。
## V2 包装结构
@@ -77,12 +77,12 @@
}
}
},
- "roar": "<每次请求随机生成8位字母数字组合>",
- "clash": "<每次请求随机生成8位字母数字组合>",
- "thunder": "<每次请求随机生成8位字母数字组合>",
- "rumble": "<每次请求随机生成8位字母数字组合>",
- "howl": "<每次请求随机生成8位字母数字组合>",
- "growl": "<每次请求随机生成8位字母数字组合>"
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
}
```
@@ -126,6 +126,83 @@
}
```
+V2 完整请求体:
+
+```
+// recomends — 获取推荐提示词
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "htc17rrCpG+d9Lj6Lh5iy3BmR/52yLIsJdjM7/IFXgo=", // AES(/v1/image/prompt/recomends)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ {
+ "constrain": "", // tag
+ "ledger": "" // prompt
+ }
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
### 2. 设备登录(快速登录)
`POST /v1/user/fast_login` | 鉴权: 需要
@@ -166,7 +243,10 @@
"sidekick": { // data
"surge": "", // extConfig (string) 客户端界面配置下发
"accolade": "", // type (string) 类型
- "evolve": {}, // appFbConfig (object) 应用FB配置
+ "evolve": { // appFbConfig (object) 应用FB配置
+ "fbClientId": "", // fbClientId (string) Facebook应用ID
+ "fbClientToken": "" // fbClientToken (string) Facebook客户端Token
+ },
"retrospect": "", // usign (string) 用户签名
"navigate": "", // countryCode (string) 国家代码
"conquer": "", // creditsRecordUrl (string) 积分记录URL
@@ -176,8 +256,19 @@
"galaxy": "", // email (string) 邮箱
"nexus": {}, // ext (object) 扩展信息
"upgrade": false, // forcePayCenter (boolean) 是否强制跳转支付中心
- "regulate": {}, // t2IConfig (object) T2I配置
- "pursue": {}, // h5UrlConfig (object) H5 URL配置
+ "regulate": { // t2IConfig (object) T2I配置
+ "greaves": {}, // credits (object) 积分配置(key为任务类型,value为积分数)
+ "templates": [ // templates (array) 提示词模板列表
+ {
+ "revenue": "", // img (string) 示例图片URL
+ "ledger": "" // prompt (string) 提示词内容
+ }
+ ]
+ },
+ "pursue": { // h5UrlConfig (object) H5 URL配置
+ "digitize": "", // url (string) H5页面URL
+ "launchImgUrl": "" // launchImgUrl (string) 启动图URL
+ },
"switch": "", // payCenterUrl (string) 支付中心URL
"vow": 0, // freeBlurTimes (int) 免费去模糊次数
"realm": "", // avatar (string) 头像URL
@@ -194,7 +285,581 @@
}
```
-### 3. 注销账户
+V2 完整请求体:
+
+```
+// fast_login — 设备登录(快速登录)
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "JBK3hR8hMGmPYYcbg7jqs9qf6SWWQG3IGHQLbwst7TA=", // AES(/v1/user/fast_login)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "digest": "", // referer (string) 归因信息,如 utm_source=googleplay
+ "resolution": "", // sign (string) 签名,MD5(deviceId)大写32位
+ "origin": "" // deviceId (string) 设备ID
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "surge": "", // extConfig
+ "accolade": "", // type
+ "evolve": {
+ "fbClientId": "",
+ "fbClientToken": ""
+ }, // appFbConfig
+ "retrospect": "", // usign
+ "navigate": "", // countryCode
+ "conquer": "", // creditsRecordUrl
+ "concession": "", // tgId
+ "reveal": 0, // credit
+ "defer": "", // tgName
+ "galaxy": "", // email
+ "nexus": {
+ }, // ext
+ "upgrade": false, // forcePayCenter
+ "regulate": {
+ "greaves": {
+ }, // credits
+ "templates": [
+ {
+ "revenue": "", // img
+ "ledger": "" // prompt
+ }
+ ]
+ }, // t2IConfig
+ "pursue": {
+ "digitize": "", // url
+ "launchImgUrl": ""
+ }, // h5UrlConfig
+ "switch": "", // payCenterUrl
+ "vow": 0, // freeBlurTimes
+ "realm": "", // avatar
+ "terminal": "", // userName
+ "equip": false, // firstRegister
+ "asset": "", // userId
+ "generate": false, // isVip
+ "rally": [
+ ], // tags
+ "decree": 0, // freeTimes
+ "reevaluate": "", // userToken
+ "tokenize": 0, // subScribeValidTime
+ "line": 0 // status
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 3. Google登录
+
+`POST /v1/user/login/google` | 鉴权: 需要
+
+请求头 (字段映射后):
+
+```
+ portal 应用包名(必填) (原始: pkg)
+ knight 用户登录token (原始: User_token)
+```
+
+查询参数 (字段映射后):
+
+```json
+{
+ "sentinel": "" // app — 应用标识(必填)
+}
+```
+
+请求体 (字段映射后):
+
+```json
+{
+ "sentinel": "", // app (string) 应用标识(必填)
+ "digest": "", // referer (string) 归因信息,如 utm_source=googleplay
+ "item": "", // inviteBy (string) 邀请人
+ "helm": "", // code (string) OAuth授权码
+ "supplier": "", // verifyCode (string) 验证码
+ "crest": "", // ch (string) 渠道号
+ "realm": "", // avatar (string) 头像URL
+ "accolade": "", // type (string) 类型
+ "terminal": "", // userName (string) 用户名
+ "asset": "", // userId (string) 用户ID
+ "origin": "", // deviceId (string) 设备ID
+ "block": "", // phone (string) 手机号
+ "totem": "", // domain (string) 域名
+ "series": "", // keepUserId (string) 保留用户ID
+ "relic": "", // campaignInfo (string) 活动信息
+ "listing": "", // state (string) OAuth state
+ "campaign": "", // refererType (string) 归因类型
+ "galaxy": "" // email (string) 邮箱
+}
+```
+
+响应 (解密后, 字段映射后):
+
+```json
+{
+ "rampart": "", // msg (string) 消息
+ "helm": 0, // code (int) 状态码,0=成功
+ "sidekick": { // data
+ "surge": "", // extConfig (string) 客户端界面配置下发
+ "accolade": "", // type (string) 类型
+ "evolve": { // appFbConfig (object) 应用FB配置
+ "fbClientId": "", // fbClientId (string) Facebook应用ID
+ "fbClientToken": "" // fbClientToken (string) Facebook客户端Token
+ },
+ "retrospect": "", // usign (string) 用户签名
+ "navigate": "", // countryCode (string) 国家代码
+ "conquer": "", // creditsRecordUrl (string) 积分记录URL
+ "concession": "", // tgId (string) Telegram ID
+ "reveal": 0, // credit (int) 积分余额
+ "defer": "", // tgName (string) Telegram 用户名
+ "galaxy": "", // email (string) 邮箱
+ "nexus": {}, // ext (object) 扩展信息
+ "upgrade": false, // forcePayCenter (boolean) 是否强制跳转支付中心
+ "regulate": { // t2IConfig (object) T2I配置
+ "greaves": {}, // credits (object) 积分配置(key为任务类型,value为积分数)
+ "templates": [ // templates (array) 提示词模板列表
+ {
+ "revenue": "", // img (string) 示例图片URL
+ "ledger": "" // prompt (string) 提示词内容
+ }
+ ]
+ },
+ "pursue": { // h5UrlConfig (object) H5 URL配置
+ "digitize": "", // url (string) H5页面URL
+ "launchImgUrl": "" // launchImgUrl (string) 启动图URL
+ },
+ "switch": "", // payCenterUrl (string) 支付中心URL
+ "vow": 0, // freeBlurTimes (int) 免费去模糊次数
+ "realm": "", // avatar (string) 头像URL
+ "terminal": "", // userName (string) 用户名
+ "equip": false, // firstRegister (boolean) 是否首次注册
+ "asset": "", // userId (string) 用户ID
+ "generate": false, // isVip (boolean) 是否VIP
+ "rally": [], // tags (array) 用户标签
+ "decree": 0, // freeTimes (int) 免费次数
+ "reevaluate": "", // userToken (string) 用户登录token
+ "tokenize": 0, // subScribeValidTime (int) 订阅有效时间戳
+ "line": 0 // status (int) 用户状态
+ }
+}
+```
+
+V2 完整请求体:
+
+```
+// google — Google登录
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "IzM+23jOVdgfyuowLiRGMZFrfjMGtMAsbnQ9v720NxU=", // AES(/v1/user/login/google)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "sentinel": "", // app (string) 应用标识(必填)
+ "digest": "", // referer (string) 归因信息,如 utm_source=googleplay
+ "item": "", // inviteBy (string) 邀请人
+ "helm": "", // code (string) OAuth授权码
+ "supplier": "", // verifyCode (string) 验证码
+ "crest": "", // ch (string) 渠道号
+ "realm": "", // avatar (string) 头像URL
+ "accolade": "", // type (string) 类型
+ "terminal": "", // userName (string) 用户名
+ "asset": "", // userId (string) 用户ID
+ "origin": "", // deviceId (string) 设备ID
+ "block": "", // phone (string) 手机号
+ "totem": "", // domain (string) 域名
+ "series": "", // keepUserId (string) 保留用户ID
+ "relic": "", // campaignInfo (string) 活动信息
+ "listing": "", // state (string) OAuth state
+ "campaign": "", // refererType (string) 归因类型
+ "galaxy": "" // email (string) 邮箱
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "surge": "", // extConfig
+ "accolade": "", // type
+ "evolve": {
+ "fbClientId": "",
+ "fbClientToken": ""
+ }, // appFbConfig
+ "retrospect": "", // usign
+ "navigate": "", // countryCode
+ "conquer": "", // creditsRecordUrl
+ "concession": "", // tgId
+ "reveal": 0, // credit
+ "defer": "", // tgName
+ "galaxy": "", // email
+ "nexus": {
+ }, // ext
+ "upgrade": false, // forcePayCenter
+ "regulate": {
+ "greaves": {
+ }, // credits
+ "templates": [
+ {
+ "revenue": "", // img
+ "ledger": "" // prompt
+ }
+ ]
+ }, // t2IConfig
+ "pursue": {
+ "digitize": "", // url
+ "launchImgUrl": ""
+ }, // h5UrlConfig
+ "switch": "", // payCenterUrl
+ "vow": 0, // freeBlurTimes
+ "realm": "", // avatar
+ "terminal": "", // userName
+ "equip": false, // firstRegister
+ "asset": "", // userId
+ "generate": false, // isVip
+ "rally": [
+ ], // tags
+ "decree": 0, // freeTimes
+ "reevaluate": "", // userToken
+ "tokenize": 0, // subScribeValidTime
+ "line": 0 // status
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 4. Apple登录
+
+`POST /v1/user/login/apple` | 鉴权: 需要
+
+请求头 (字段映射后):
+
+```
+ portal 应用包名(必填) (原始: pkg)
+ knight 用户登录token (原始: User_token)
+```
+
+查询参数 (字段映射后):
+
+```json
+{
+ "sentinel": "" // app — 应用标识(必填)
+}
+```
+
+请求体 (字段映射后):
+
+```json
+{
+ "sentinel": "", // app (string) 应用标识(必填)
+ "digest": "", // referer (string) 归因信息,如 utm_source=googleplay
+ "item": "", // inviteBy (string) 邀请人
+ "helm": "", // code (string) OAuth授权码
+ "supplier": "", // verifyCode (string) 验证码
+ "crest": "", // ch (string) 渠道号
+ "realm": "", // avatar (string) 头像URL
+ "accolade": "", // type (string) 类型
+ "terminal": "", // userName (string) 用户名
+ "asset": "", // userId (string) 用户ID
+ "origin": "", // deviceId (string) 设备ID
+ "block": "", // phone (string) 手机号
+ "totem": "", // domain (string) 域名
+ "series": "", // keepUserId (string) 保留用户ID
+ "relic": "", // campaignInfo (string) 活动信息
+ "listing": "", // state (string) OAuth state
+ "campaign": "", // refererType (string) 归因类型
+ "galaxy": "" // email (string) 邮箱
+}
+```
+
+响应 (解密后, 字段映射后):
+
+```json
+{
+ "rampart": "", // msg (string) 消息
+ "helm": 0, // code (int) 状态码,0=成功
+ "sidekick": { // data
+ "surge": "", // extConfig (string) 客户端界面配置下发
+ "accolade": "", // type (string) 类型
+ "evolve": { // appFbConfig (object) 应用FB配置
+ "fbClientId": "", // fbClientId (string) Facebook应用ID
+ "fbClientToken": "" // fbClientToken (string) Facebook客户端Token
+ },
+ "retrospect": "", // usign (string) 用户签名
+ "navigate": "", // countryCode (string) 国家代码
+ "conquer": "", // creditsRecordUrl (string) 积分记录URL
+ "concession": "", // tgId (string) Telegram ID
+ "reveal": 0, // credit (int) 积分余额
+ "defer": "", // tgName (string) Telegram 用户名
+ "galaxy": "", // email (string) 邮箱
+ "nexus": {}, // ext (object) 扩展信息
+ "upgrade": false, // forcePayCenter (boolean) 是否强制跳转支付中心
+ "regulate": { // t2IConfig (object) T2I配置
+ "greaves": {}, // credits (object) 积分配置(key为任务类型,value为积分数)
+ "templates": [ // templates (array) 提示词模板列表
+ {
+ "revenue": "", // img (string) 示例图片URL
+ "ledger": "" // prompt (string) 提示词内容
+ }
+ ]
+ },
+ "pursue": { // h5UrlConfig (object) H5 URL配置
+ "digitize": "", // url (string) H5页面URL
+ "launchImgUrl": "" // launchImgUrl (string) 启动图URL
+ },
+ "switch": "", // payCenterUrl (string) 支付中心URL
+ "vow": 0, // freeBlurTimes (int) 免费去模糊次数
+ "realm": "", // avatar (string) 头像URL
+ "terminal": "", // userName (string) 用户名
+ "equip": false, // firstRegister (boolean) 是否首次注册
+ "asset": "", // userId (string) 用户ID
+ "generate": false, // isVip (boolean) 是否VIP
+ "rally": [], // tags (array) 用户标签
+ "decree": 0, // freeTimes (int) 免费次数
+ "reevaluate": "", // userToken (string) 用户登录token
+ "tokenize": 0, // subScribeValidTime (int) 订阅有效时间戳
+ "line": 0 // status (int) 用户状态
+ }
+}
+```
+
+V2 完整请求体:
+
+```
+// apple — Apple登录
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "w0u04gY31QXp9b1HcPwgUFAzHZWr51nx5OqDHb/C9vY=", // AES(/v1/user/login/apple)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "sentinel": "", // app (string) 应用标识(必填)
+ "digest": "", // referer (string) 归因信息,如 utm_source=googleplay
+ "item": "", // inviteBy (string) 邀请人
+ "helm": "", // code (string) OAuth授权码
+ "supplier": "", // verifyCode (string) 验证码
+ "crest": "", // ch (string) 渠道号
+ "realm": "", // avatar (string) 头像URL
+ "accolade": "", // type (string) 类型
+ "terminal": "", // userName (string) 用户名
+ "asset": "", // userId (string) 用户ID
+ "origin": "", // deviceId (string) 设备ID
+ "block": "", // phone (string) 手机号
+ "totem": "", // domain (string) 域名
+ "series": "", // keepUserId (string) 保留用户ID
+ "relic": "", // campaignInfo (string) 活动信息
+ "listing": "", // state (string) OAuth state
+ "campaign": "", // refererType (string) 归因类型
+ "galaxy": "" // email (string) 邮箱
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "surge": "", // extConfig
+ "accolade": "", // type
+ "evolve": {
+ "fbClientId": "",
+ "fbClientToken": ""
+ }, // appFbConfig
+ "retrospect": "", // usign
+ "navigate": "", // countryCode
+ "conquer": "", // creditsRecordUrl
+ "concession": "", // tgId
+ "reveal": 0, // credit
+ "defer": "", // tgName
+ "galaxy": "", // email
+ "nexus": {
+ }, // ext
+ "upgrade": false, // forcePayCenter
+ "regulate": {
+ "greaves": {
+ }, // credits
+ "templates": [
+ {
+ "revenue": "", // img
+ "ledger": "" // prompt
+ }
+ ]
+ }, // t2IConfig
+ "pursue": {
+ "digitize": "", // url
+ "launchImgUrl": ""
+ }, // h5UrlConfig
+ "switch": "", // payCenterUrl
+ "vow": 0, // freeBlurTimes
+ "realm": "", // avatar
+ "terminal": "", // userName
+ "equip": false, // firstRegister
+ "asset": "", // userId
+ "generate": false, // isVip
+ "rally": [
+ ], // tags
+ "decree": 0, // freeTimes
+ "reevaluate": "", // userToken
+ "tokenize": 0, // subScribeValidTime
+ "line": 0 // status
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 5. 注销账户
`GET /v1/user/delete` | 鉴权: 需要
@@ -227,7 +892,80 @@
}
```
-### 4. 获取换衣模板
+V2 完整请求体:
+
+```
+// delete — 注销账户
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "+My5Dm1nYfQTvljGJsOV6g==", // AES(/v1/user/delete)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 6. 获取换衣模板
`GET /v1/image/clothes_template` | 鉴权: 需要
@@ -268,7 +1006,88 @@
}
```
-### 5. 获取用户通用信息
+V2 完整请求体:
+
+```
+// clothes_template — 获取换衣模板
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "+RfrZmGD8Uzkm6hmMNG5mzF0IljYMv/hrsAWRkUHixU=", // AES(/v1/image/clothes_template)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ {
+ "congregation": "", // templateName
+ "greaves": 0, // credits
+ "realm": "", // avatar
+ "accolade": 0, // type
+ "rebalance": "", // user
+ "inject": "" // templateUrl
+ }
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 7. 获取用户通用信息
`GET /v1/user/common_info` | 鉴权: 需要
@@ -303,7 +1122,10 @@
"sidekick": { // data
"surge": "", // extConfig (string) 客户端界面配置下发
"accolade": "", // type (string) 类型
- "evolve": {}, // appFbConfig (object) 应用FB配置
+ "evolve": { // appFbConfig (object) 应用FB配置
+ "fbClientId": "", // fbClientId (string) Facebook应用ID
+ "fbClientToken": "" // fbClientToken (string) Facebook客户端Token
+ },
"retrospect": "", // usign (string) 用户签名
"navigate": "", // countryCode (string) 国家代码
"conquer": "", // creditsRecordUrl (string) 积分记录URL
@@ -313,8 +1135,19 @@
"galaxy": "", // email (string) 邮箱
"nexus": {}, // ext (object) 扩展信息
"upgrade": false, // forcePayCenter (boolean) 是否强制跳转支付中心
- "regulate": {}, // t2IConfig (object) T2I配置
- "pursue": {}, // h5UrlConfig (object) H5 URL配置
+ "regulate": { // t2IConfig (object) T2I配置
+ "greaves": {}, // credits (object) 积分配置(key为任务类型,value为积分数)
+ "templates": [ // templates (array) 提示词模板列表
+ {
+ "revenue": "", // img (string) 示例图片URL
+ "ledger": "" // prompt (string) 提示词内容
+ }
+ ]
+ },
+ "pursue": { // h5UrlConfig (object) H5 URL配置
+ "digitize": "", // url (string) H5页面URL
+ "launchImgUrl": "" // launchImgUrl (string) 启动图URL
+ },
"switch": "", // payCenterUrl (string) 支付中心URL
"vow": 0, // freeBlurTimes (int) 免费去模糊次数
"realm": "", // avatar (string) 头像URL
@@ -331,7 +1164,123 @@
}
```
-### 6. 归因上报
+V2 完整请求体:
+
+```
+// common_info — 获取用户通用信息
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "/gPDnflXdn59gbWvtfU+uhFqI7OJK9pUgbdP1FOPuH8=", // AES(/v1/user/common_info)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "surge": "", // extConfig
+ "accolade": "", // type
+ "evolve": {
+ "fbClientId": "",
+ "fbClientToken": ""
+ }, // appFbConfig
+ "retrospect": "", // usign
+ "navigate": "", // countryCode
+ "conquer": "", // creditsRecordUrl
+ "concession": "", // tgId
+ "reveal": 0, // credit
+ "defer": "", // tgName
+ "galaxy": "", // email
+ "nexus": {
+ }, // ext
+ "upgrade": false, // forcePayCenter
+ "regulate": {
+ "greaves": {
+ }, // credits
+ "templates": [
+ {
+ "revenue": "", // img
+ "ledger": "" // prompt
+ }
+ ]
+ }, // t2IConfig
+ "pursue": {
+ "digitize": "", // url
+ "launchImgUrl": ""
+ }, // h5UrlConfig
+ "switch": "", // payCenterUrl
+ "vow": 0, // freeBlurTimes
+ "realm": "", // avatar
+ "terminal": "", // userName
+ "equip": false, // firstRegister
+ "asset": "", // userId
+ "generate": false, // isVip
+ "rally": [
+ ], // tags
+ "decree": 0, // freeTimes
+ "reevaluate": "", // userToken
+ "tokenize": 0, // subScribeValidTime
+ "line": 0 // status
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 8. 归因上报
`POST /v1/user/referrer` | 鉴权: 需要
@@ -375,7 +1324,81 @@
}
```
-### 7. 获取用户账户信息
+V2 完整请求体:
+
+```
+// referrer — 归因上报
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "d5p1sgWrVsTbMLkRSh+g5Atr10nt1WaD1C4W2Jw4T1E=", // AES(/v1/user/referrer)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "digest": "", // referer (string) 归因信息,如 utm_source=googleplay
+ "origin": "" // deviceId (string) 设备ID
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 9. 获取用户账户信息
`GET /v1/user/account` | 鉴权: 需要
@@ -404,7 +1427,10 @@
"sidekick": { // data
"surge": "", // extConfig (string) 客户端界面配置下发
"accolade": "", // type (string) 类型
- "evolve": {}, // appFbConfig (object) 应用FB配置
+ "evolve": { // appFbConfig (object) 应用FB配置
+ "fbClientId": "", // fbClientId (string) Facebook应用ID
+ "fbClientToken": "" // fbClientToken (string) Facebook客户端Token
+ },
"retrospect": "", // usign (string) 用户签名
"navigate": "", // countryCode (string) 国家代码
"conquer": "", // creditsRecordUrl (string) 积分记录URL
@@ -414,8 +1440,19 @@
"galaxy": "", // email (string) 邮箱
"nexus": {}, // ext (object) 扩展信息
"upgrade": false, // forcePayCenter (boolean) 是否强制跳转支付中心
- "regulate": {}, // t2IConfig (object) T2I配置
- "pursue": {}, // h5UrlConfig (object) H5 URL配置
+ "regulate": { // t2IConfig (object) T2I配置
+ "greaves": {}, // credits (object) 积分配置(key为任务类型,value为积分数)
+ "templates": [ // templates (array) 提示词模板列表
+ {
+ "revenue": "", // img (string) 示例图片URL
+ "ledger": "" // prompt (string) 提示词内容
+ }
+ ]
+ },
+ "pursue": { // h5UrlConfig (object) H5 URL配置
+ "digitize": "", // url (string) H5页面URL
+ "launchImgUrl": "" // launchImgUrl (string) 启动图URL
+ },
"switch": "", // payCenterUrl (string) 支付中心URL
"vow": 0, // freeBlurTimes (int) 免费去模糊次数
"realm": "", // avatar (string) 头像URL
@@ -432,7 +1469,123 @@
}
```
-### 8. 获取Google商品列表
+V2 完整请求体:
+
+```
+// account — 获取用户账户信息
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "ko82/Ko5QTQvyGwXblxoTfLS28kvYwcqsG/Z8eunjaY=", // AES(/v1/user/account)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "surge": "", // extConfig
+ "accolade": "", // type
+ "evolve": {
+ "fbClientId": "",
+ "fbClientToken": ""
+ }, // appFbConfig
+ "retrospect": "", // usign
+ "navigate": "", // countryCode
+ "conquer": "", // creditsRecordUrl
+ "concession": "", // tgId
+ "reveal": 0, // credit
+ "defer": "", // tgName
+ "galaxy": "", // email
+ "nexus": {
+ }, // ext
+ "upgrade": false, // forcePayCenter
+ "regulate": {
+ "greaves": {
+ }, // credits
+ "templates": [
+ {
+ "revenue": "", // img
+ "ledger": "" // prompt
+ }
+ ]
+ }, // t2IConfig
+ "pursue": {
+ "digitize": "", // url
+ "launchImgUrl": ""
+ }, // h5UrlConfig
+ "switch": "", // payCenterUrl
+ "vow": 0, // freeBlurTimes
+ "realm": "", // avatar
+ "terminal": "", // userName
+ "equip": false, // firstRegister
+ "asset": "", // userId
+ "generate": false, // isVip
+ "rally": [
+ ], // tags
+ "decree": 0, // freeTimes
+ "reevaluate": "", // userToken
+ "tokenize": 0, // subScribeValidTime
+ "line": 0 // status
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 10. 获取Google商品列表
`GET /v1/payment/getGooglePayActivities` | 鉴权: 需要
@@ -501,7 +1654,116 @@
}
```
-### 9. 获取Apple商品列表
+V2 完整请求体:
+
+```
+// getGooglePayActivities — 获取Google商品列表
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "ASwRlxDbjvdAMp6ZmjijjC9j+MNvLSw+6NdeznTDyGTNuAWVloT8VcE+HQns0oZX", // AES(/v1/payment/getGooglePayActivities)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "cleanse": [
+ {
+ "extrapolate": "", // note
+ "helm": "", // code
+ "forge": 0, // bonus
+ "guardian": "", // actualAmount
+ "lead": "", // discountOff
+ "glossary": "", // title
+ "curriculum": "", // originAmount
+ "warrior": "", // activityId
+ "distribute": "", // subscriptionPeriod
+ "greaves": 0, // credits
+ "shield": "", // client
+ "species": 0, // days
+ "familiar": "", // currency
+ "subtract": 0 // productType
+ }
+ ], // subscriptionActivitys
+ "summon": [
+ {
+ "extrapolate": "", // note
+ "helm": "", // code
+ "forge": 0, // bonus
+ "guardian": "", // actualAmount
+ "lead": "", // discountOff
+ "glossary": "", // title
+ "curriculum": "", // originAmount
+ "warrior": "", // activityId
+ "distribute": "", // subscriptionPeriod
+ "greaves": 0, // credits
+ "shield": "", // client
+ "species": 0, // days
+ "familiar": "", // currency
+ "subtract": 0 // productType
+ }
+ ] // activitys
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 11. 获取Apple商品列表
`GET /v1/payment/getApplePayActivities` | 鉴权: 需要
@@ -570,7 +1832,116 @@
}
```
-### 10. 创建支付订单
+V2 完整请求体:
+
+```
+// getApplePayActivities — 获取Apple商品列表
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "7cFXs1gnsOusTcYJayudo0iRoN/MBgv2WP3OnBp0Wf2x5+QtDEsAuVXsrF9Y+5hO", // AES(/v1/payment/getApplePayActivities)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "cleanse": [
+ {
+ "extrapolate": "", // note
+ "helm": "", // code
+ "forge": 0, // bonus
+ "guardian": "", // actualAmount
+ "lead": "", // discountOff
+ "glossary": "", // title
+ "curriculum": "", // originAmount
+ "warrior": "", // activityId
+ "distribute": "", // subscriptionPeriod
+ "greaves": 0, // credits
+ "shield": "", // client
+ "species": 0, // days
+ "familiar": "", // currency
+ "subtract": 0 // productType
+ }
+ ], // subscriptionActivitys
+ "summon": [
+ {
+ "extrapolate": "", // note
+ "helm": "", // code
+ "forge": 0, // bonus
+ "guardian": "", // actualAmount
+ "lead": "", // discountOff
+ "glossary": "", // title
+ "curriculum": "", // originAmount
+ "warrior": "", // activityId
+ "distribute": "", // subscriptionPeriod
+ "greaves": 0, // credits
+ "shield": "", // client
+ "species": 0, // days
+ "familiar": "", // currency
+ "subtract": 0 // productType
+ }
+ ] // activitys
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 12. 创建支付订单
`POST /v1/payment/createPayment` | 鉴权: 需要
@@ -641,13 +2012,125 @@
"protect": "", // cryptoInvoiceUrl (string) 加密发票URL
"convert": "", // payUrl (string) 支付URL
"federation": "", // id (string) 支付ID/订单ID
- "destroy": {}, // payStatus (object) 支付状态
+ "destroy": "", // payStatus (string) 支付状态枚举名:INIT | SUCCESS | PROCESSING | FAILED | CANCELED
"transplant": 0 // openType (int) URL打开方式,0=内部/1=外部浏览器
}
}
```
-### 11. Google支付结果回调
+V2 完整请求体:
+
+```
+// createPayment — 创建支付订单
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "xARz0A3sqGipBMRB6VFu6OK7MAR+bb8/pc9aV1y6BcI=", // AES(/v1/payment/createPayment)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "sentinel": "", // app (string) 应用标识(必填)
+ "bazaar": "", // lastName (string) 姓
+ "vambrace": "", // country (string) 国家代码
+ "dominion": "", // expireMonth (string) 过期月
+ "captain": "", // accountName (string) 账户名
+ "frame": "", // userInfoType (string) 用户信息类型
+ "legend": false, // automaticRenewal (boolean) 是否自动续费
+ "lineage": "", // channel (string) 渠道
+ "companion": "", // cvcCode (string) CVC安全码
+ "armor": "", // channelType (string) 渠道类型
+ "asset": "", // userId (string) 用户ID
+ "warrior": "", // activityId (string) 活动模板ID
+ "appointment": "", // firstName (string) 名
+ "ceremony": "", // subPaymentMethod (string) 子支付方式
+ "block": "", // phone (string) 电话
+ "insurer": "", // tgOrderId (string) Telegram订单ID
+ "concession": "", // tgId (string) Telegram ID
+ "brigade": "", // name (string) 姓名
+ "resource": "", // paymentMethod (string) 支付方式,如 GOOGLEPAY/APPLEPAY
+ "sanctuary": "", // expireYear (string) 过期年
+ "artifact": "", // card (string) 卡号
+ "line": "" // status (string) 状态
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "scout": {
+ }, // features
+ "handshake": [
+ {
+ "mold": "", // showName
+ "brigade": "", // name
+ "greylist": "", // icon
+ "unzip": "", // paylink
+ "federation": 0, // id
+ "invent": 0 // sort
+ }
+ ], // payTypeList
+ "merge": "", // issuerUrl
+ "protect": "", // cryptoInvoiceUrl
+ "convert": "", // payUrl
+ "federation": "", // id
+ "destroy": "", // payStatus
+ "transplant": 0 // openType
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 13. Google支付结果回调
`POST /v1/payment/googlepay` | 鉴权: 需要
@@ -691,12 +2174,95 @@
"visor": "", // count (string) 数量
"familiar": "", // currency (string) 货币
"federation": "", // id (string) 支付ID/订单ID
- "line": {} // status (object) 状态
+ "line": "" // status (string) 支付状态枚举名:INIT | SUCCESS | PROCESSING | FAILED | CANCELED
}
}
```
-### 12. Apple支付结果回调
+V2 完整请求体:
+
+```
+// googlepay — Google支付结果回调
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "B4Kcm78LNE7abI+Owtvw3xzHbYTXRRzl0kv+59c5lmY=", // AES(/v1/payment/googlepay)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "sample": "", // signature (string) 签名
+ "merchant": "", // purchaseData (string) Google支付凭据JSON
+ "federation": "", // id (string) 支付ID/订单ID
+ "asset": "" // userId (string) 用户ID
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "warrior": "", // activityId
+ "disambiguate": "", // redirectUrl
+ "awaken": false, // addCredits
+ "visor": "", // count
+ "familiar": "", // currency
+ "federation": "", // id
+ "line": "" // status
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 14. Apple支付结果回调
`POST /v1/payment/applepay` | 鉴权: 需要
@@ -740,12 +2306,95 @@
"visor": "", // count (string) 数量
"familiar": "", // currency (string) 货币
"federation": "", // id (string) 支付ID/订单ID
- "line": {} // status (object) 状态
+ "line": "" // status (string) 支付状态枚举名:INIT | SUCCESS | PROCESSING | FAILED | CANCELED
}
}
```
-### 13. 获取支付订单列表
+V2 完整请求体:
+
+```
+// applepay — Apple支付结果回调
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "pgYTPo74BK+lt8/kkiDC+rRSZqYXehDqi5x8YVzW8vk=", // AES(/v1/payment/applepay)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "attendee": "", // receipt (string) Apple支付凭据
+ "federation": "", // id (string) 支付ID/订单ID
+ "asset": "", // userId (string) 用户ID
+ "chronicle": "" // transactionId (string) 交易ID
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "warrior": "", // activityId
+ "disambiguate": "", // redirectUrl
+ "awaken": false, // addCredits
+ "visor": "", // count
+ "familiar": "", // currency
+ "federation": "", // id
+ "line": "" // status
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 15. 获取支付订单列表
`GET /v1/payment/getPaymentDetailList` | 鉴权: 需要
@@ -777,7 +2426,80 @@
}
```
-### 14. 创建文生图任务
+V2 完整请求体:
+
+```
+// getPaymentDetailList — 获取支付订单列表
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "akl74gH/MMSG3R615uxuZhw6C49HU26J1wVLCZ4fXsny0tvJL2MHKrBv2fHrp42m", // AES(/v1/payment/getPaymentDetailList)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 16. 创建文生图任务
`POST /v1/image/txt2img_create` | 鉴权: 需要
@@ -815,13 +2537,90 @@
"rampart": "", // msg (string) 消息
"helm": 0, // code (int) 状态码,0=成功
"sidekick": { // data
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0 // taskId (int) 任务ID
}
}
```
-### 15. 创建换衣任务
+V2 完整请求体:
+
+```
+// txt2img_create — 创建文生图任务
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "9AkXTk9OIqDaK9lXXYVyARPxVIu8Y0H0vP3uCysLa5o=", // AES(/v1/image/txt2img_create)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "declaration": 1, // 固定传参
+ "quest": "", // aspectRatio (string) 宽高比
+ "ledger": "" // prompt (string) 文本提示词
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "listing": 0, // state
+ "tree": 0 // taskId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 17. 创建换衣任务
`POST /v1/image/clothes_swap_ex` | 鉴权: 需要
@@ -859,13 +2658,89 @@
"rampart": "", // msg (string) 消息
"helm": 0, // code (int) 状态码,0=成功
"sidekick": { // data
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0 // taskId (int) 任务ID
}
}
```
-### 16. 查询图片生成进度
+V2 完整请求体:
+
+```
+// clothes_swap_ex — 创建换衣任务
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "+RfrZmGD8Uzkm6hmMNG5mxl8Gx0mk1ZKQLJ69q4mIZo=", // AES(/v1/image/clothes_swap_ex)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "profit": "", // srcImgBase64 (string) 源图片Base64数据
+ "statute": "" // srcImgUrl (string) 源图片URL
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "listing": 0, // state
+ "tree": 0 // taskId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 18. 查询图片生成进度
`GET /v1/image/progress` | 鉴权: 需要
@@ -903,7 +2778,7 @@
}
],
"dice": 0, // progress (int) 进度
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"accolade": 0, // type (int) 任务类型
"flowStep": 0, // waitTime (int) 等待时间
"tree": 0, // taskId (int) 任务ID
@@ -912,7 +2787,225 @@
}
```
-### 17. 创建视频换脸任务
+V2 完整请求体:
+
+```
+// progress — 查询图片生成进度
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "fnugypQVDHXWalukCBusLojG59cRtfOzh5bYBatSg6I=", // AES(/v1/image/progress)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "curate": [
+ {
+ "reconfigure": "", // imgUrl
+ "reify": false, // isBlur
+ "royalty": 0, // imageId
+ "booking": "", // resolution
+ "reconnect": 0 // imgType
+ }
+ ], // imageInfos
+ "dice": 0, // progress
+ "listing": 0, // state
+ "accolade": 0, // type
+ "flowStep": 0, // waitTime
+ "tree": 0, // taskId
+ "revert": 0 // queueCnt
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 19. 获取视频换脸模板
+
+`GET /v1/image/faceswap_video_template` | 鉴权: 需要
+
+请求头 (字段映射后):
+
+```
+ portal 应用包名(必填) (原始: pkg)
+ knight 用户登录token (原始: User_token)
+```
+
+查询参数 (字段映射后):
+
+```json
+{
+ "sentinel": "", // app — 应用标识(必填)
+ "crest": "", // ch — 渠道号
+ "asset": "", // userId — 用户ID
+ "insignia": "" // categoryId — 分类ID
+}
+```
+
+响应 (解密后, 字段映射后):
+
+```json
+{
+ "rampart": "", // msg (string) 消息
+ "helm": 0, // code (int) 状态码,0=成功
+ "sidekick": [ // data (array) 视频换脸模板列表
+ {
+ "unite": 0, // frameIndex (int) 帧索引
+ "demonstrate": 0, // videoDuration (int) 视频时长
+ "congregation": "", // templateName (string) 模板名称
+ "greaves": 0, // credits (int) 积分
+ "leap": 0, // faceIndex (int) 人脸索引
+ "simulate": "", // templateFaceUrl (string) 模板人脸URL
+ "realm": "", // avatar (string) 头像
+ "ascend": "", // animate (string) 动画
+ "rebalance": "", // user (string) 用户
+ "inject": "" // templateUrl (string) 模板URL
+ }
+ ]
+}
+```
+
+V2 完整请求体:
+
+```
+// faceswap_video_template — 获取视频换脸模板
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "pZQuCb74NC6YLZGPO/mRyDZUo9AJCfIiIJ+o4Z9hhr8r0b5Vvcw9vnJuIEVir9Km", // AES(/v1/image/faceswap_video_template)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ {
+ "unite": 0, // frameIndex
+ "demonstrate": 0, // videoDuration
+ "congregation": "", // templateName
+ "greaves": 0, // credits
+ "leap": 0, // faceIndex
+ "simulate": "", // templateFaceUrl
+ "realm": "", // avatar
+ "ascend": "", // animate
+ "rebalance": "", // user
+ "inject": "" // templateUrl
+ }
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 20. 创建视频换脸任务
`POST /v1/image/video_facewap_task` | 鉴权: 需要
@@ -955,13 +3048,385 @@
"rampart": "", // msg (string) 消息
"helm": 0, // code (int) 状态码,0=成功
"sidekick": { // data
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0 // taskId (int) 任务ID
}
}
```
-### 18. 创建图转视频姿态任务
+V2 完整请求体:
+
+```
+// video_facewap_task — 创建视频换脸任务
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "u7fAlGvwVuiU3GAJWsYfCrBAssXCMl2atJBZ8nHkhlU=", // AES(/v1/image/video_facewap_task)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "fragment": 10, // 固定传参
+ "bond": "", // headPos (string) 头像位置
+ "promotion": "", // videoUrl (string) 视频URL
+ "arena": 2, // 固定传参
+ "agent": "", // headImg (string) 头像图片
+ "congregation": "", // templateName (string) 模板名称
+ "applicant": 1, // 固定传参
+ "accolade": 0, // 固定传参
+ "histogram": 3 // 固定传参
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "listing": 0, // state
+ "tree": 0 // taskId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 21. 检测图片人脸
+
+`POST /v1/image/get_image_faces` | 鉴权: 需要
+
+请求头 (字段映射后):
+
+```
+ portal 应用包名(必填) (原始: pkg)
+ knight 用户登录token (原始: User_token)
+```
+
+查询参数 (字段映射后):
+
+```json
+{
+ "sentinel": "", // app — 应用标识(必填)
+ "crest": "", // ch — 渠道号
+ "asset": "" // userId — 用户ID
+}
+```
+
+请求体 (字段映射后):
+
+```json
+{
+ "profit": "", // srcImgBase64 (string) 源图片Base64数据
+ "statute": "" // srcImgUrl (string) 源图片URL
+}
+```
+
+响应 (解密后, 字段映射后):
+
+```json
+{
+ "rampart": "", // msg (string) 消息
+ "helm": 0, // code (int) 状态码,0=成功
+ "sidekick": { // data
+ "cosmos": 0, // duration (int) 时长
+ "promotion": "", // videoUrl (string) 视频URL
+ "strike": [ // faceInfos (array) 人脸信息列表
+ {
+ "dash": "", // face (string) 人脸图片
+ "parry": 0, // face_index (int) 人脸索引
+ "venture": "", // gender (string) 性别
+ "configure": 0, // y1 (int) 左上角Y坐标
+ "invoke": 0, // x1 (int) 左上角X坐标
+ "manufacture": 0, // y2 (int) 右下角Y坐标
+ "prewarm": 0, // index (int) 索引
+ "sync": 0, // x2 (int) 右下角X坐标
+ "transform": 0, // age (int) 年龄
+ "pledge": 0 // frame_index (int) 帧索引
+ }
+ ],
+ "deserialize": 0 // needCredits (int) 所需积分
+ }
+}
+```
+
+V2 完整请求体:
+
+```
+// get_image_faces — 检测图片人脸
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "m8/e/XZNDVzERrYbaXbvJoLVrdC3dFm5zz2lqCLZEJE=", // AES(/v1/image/get_image_faces)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "profit": "", // srcImgBase64 (string) 源图片Base64数据
+ "statute": "" // srcImgUrl (string) 源图片URL
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "cosmos": 0, // duration
+ "promotion": "", // videoUrl
+ "strike": [
+ {
+ "dash": "", // face
+ "parry": 0, // face_index
+ "venture": "", // gender
+ "configure": 0, // y1
+ "invoke": 0, // x1
+ "manufacture": 0, // y2
+ "prewarm": 0, // index
+ "sync": 0, // x2
+ "transform": 0, // age
+ "pledge": 0 // frame_index
+ }
+ ], // faceInfos
+ "deserialize": 0 // needCredits
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 22. 检测视频人脸
+
+`POST /v1/image/get_video_faces` | 鉴权: 需要
+
+请求头 (字段映射后):
+
+```
+ portal 应用包名(必填) (原始: pkg)
+ knight 用户登录token (原始: User_token)
+```
+
+查询参数 (字段映射后):
+
+```json
+{
+ "sentinel": "", // app — 应用标识(必填)
+ "crest": "", // ch — 渠道号
+ "asset": "", // userId — 用户ID
+ "cosmos": "", // duration — 时长
+ "compendium": "" // srcVideo — 源视频
+}
+```
+
+响应 (解密后, 字段映射后):
+
+```json
+{
+ "rampart": "", // msg (string) 消息
+ "helm": 0, // code (int) 状态码,0=成功
+ "sidekick": { // data
+ "cosmos": 0, // duration (int) 时长
+ "promotion": "", // videoUrl (string) 视频URL
+ "strike": [ // faceInfos (array) 人脸信息列表
+ {
+ "dash": "", // face (string) 人脸图片
+ "parry": 0, // face_index (int) 人脸索引
+ "venture": "", // gender (string) 性别
+ "configure": 0, // y1 (int) 左上角Y坐标
+ "invoke": 0, // x1 (int) 左上角X坐标
+ "manufacture": 0, // y2 (int) 右下角Y坐标
+ "prewarm": 0, // index (int) 索引
+ "sync": 0, // x2 (int) 右下角X坐标
+ "transform": 0, // age (int) 年龄
+ "pledge": 0 // frame_index (int) 帧索引
+ }
+ ],
+ "deserialize": 0 // needCredits (int) 所需积分
+ }
+}
+```
+
+V2 完整请求体:
+
+```
+// get_video_faces — 检测视频人脸
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "RktekAqpwFr4a9UrAdL2Q5mXMGtWeZpD4x98x8o9EqM=", // AES(/v1/image/get_video_faces)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "cosmos": 0, // duration
+ "promotion": "", // videoUrl
+ "strike": [
+ {
+ "dash": "", // face
+ "parry": 0, // face_index
+ "venture": "", // gender
+ "configure": 0, // y1
+ "invoke": 0, // x1
+ "manufacture": 0, // y2
+ "prewarm": 0, // index
+ "sync": 0, // x2
+ "transform": 0, // age
+ "pledge": 0 // frame_index
+ }
+ ], // faceInfos
+ "deserialize": 0 // needCredits
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 23. 创建图转视频姿态任务
`POST /v1/image/img2video_pose_task` | 鉴权: 需要
@@ -994,13 +3459,87 @@
"rampart": "", // msg (string) 消息
"helm": 0, // code (int) 状态码,0=成功
"sidekick": { // data
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0 // taskId (int) 任务ID
}
}
```
-### 19. 获取图转视频姿态模板
+V2 完整请求体:
+
+```
+// img2video_pose_task — 创建图转视频姿态任务
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "MckCynrhgryF3CC/4R7nV/5IwFr5uhwYLUQGATkw7qs=", // AES(/v1/image/img2video_pose_task)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "listing": 0, // state
+ "tree": 0 // taskId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 24. 获取图转视频姿态模板
`GET /v1/image/img2Video_pose_template` | 鉴权: 需要
@@ -1046,7 +3585,380 @@
}
```
-### 20. 创建换脸任务
+V2 完整请求体:
+
+```
+// img2Video_pose_template — 获取图转视频姿态模板
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "9zFQk1LSljxTmJVs2zioYaokMmO248m495JIo8HEFckr0b5Vvcw9vnJuIEVir9Km", // AES(/v1/image/img2Video_pose_template)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ {
+ "cosmos": 0, // duration
+ "extend": "", // templateTfUrl
+ "pipe": 0, // templateTfCredits
+ "acknowledge": "", // templateFifUrl
+ "congregation": "", // templateName
+ "greaves": {
+ }, // credits
+ "unwrap": 0, // templateTfDuration
+ "decommission": 0, // templateFifDuration
+ "ascend": "", // animate
+ "pause": 0, // templateFifCredits
+ "inject": "" // templateUrl
+ }
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 25. 获取我的作品
+
+`GET /v1/image/mycreation` | 鉴权: 需要
+
+请求头 (字段映射后):
+
+```
+ portal 应用包名(必填) (原始: pkg)
+ knight 用户登录token (原始: User_token)
+```
+
+查询参数 (字段映射后):
+
+```json
+{
+ "sentinel": "", // app — 应用标识(必填)
+ "asset": "", // userId — 用户ID
+ "trophy": "", // page — 页码
+ "heatmap": "", // size — 每页数量
+ "cipher": "" // taskType — 任务类型
+}
+```
+
+响应 (解密后, 字段映射后):
+
+```json
+{
+ "rampart": "", // msg (string) 消息
+ "helm": 0, // code (int) 状态码,0=成功
+ "sidekick": { // data
+ "weigh": 0, // total (int) 总数
+ "empower": 0, // current (int) 当前页
+ "heatmap": 0, // size (int) 每页大小
+ "harvest": false, // optimizeCountSql (boolean) 是否优化count SQL
+ "intensify": [ // records (array) 记录列表
+ {
+ "reconfigure": "", // imgUrl (string) 图片URL
+ "reify": false, // isBlur (boolean) 是否模糊
+ "cipher": 0, // taskType (int) 任务类型
+ "royalty": 0, // imageId (long) 图片ID
+ "unleash": "", // appraise (string) 评价
+ "booking": "", // resolution (string) 分辨率
+ "ledger": "", // prompt (string) 提示词
+ "reconnect": 0 // imgType (int) 图片类型
+ }
+ ],
+ "architect": 0, // maxLimit (int) 最大限制
+ "suspend": false, // searchCount (boolean) 是否搜索count
+ "seek": false, // optimizeJoinOfCountSql (boolean) 是否优化join count SQL
+ "identify": [], // orders (array) 排序
+ "command": "" // countId (string) count ID
+ }
+}
+```
+
+V2 完整请求体:
+
+```
+// mycreation — 获取我的作品
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "tUJUrkzJkuy/PJtFeaFez/FUbPg1LZ8g0iXfnjaxW8o=", // AES(/v1/image/mycreation)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "weigh": 0, // total
+ "empower": 0, // current
+ "heatmap": 0, // size
+ "harvest": false, // optimizeCountSql
+ "intensify": [
+ {
+ "reconfigure": "", // imgUrl
+ "reify": false, // isBlur
+ "cipher": 0, // taskType
+ "royalty": 0, // imageId
+ "unleash": "", // appraise
+ "booking": "", // resolution
+ "ledger": "", // prompt
+ "reconnect": 0 // imgType
+ }
+ ], // records
+ "architect": 0, // maxLimit
+ "suspend": false, // searchCount
+ "seek": false, // optimizeJoinOfCountSql
+ "identify": [
+ ], // orders
+ "command": "" // countId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 26. 获取推荐头像
+
+`GET /v1/image/recommendhead` | 鉴权: 需要
+
+请求头 (字段映射后):
+
+```
+ portal 应用包名(必填) (原始: pkg)
+ knight 用户登录token (原始: User_token)
+```
+
+查询参数 (字段映射后):
+
+```json
+{
+ "sentinel": "", // app — 应用标识(必填)
+ "asset": "" // userId — 用户ID
+}
+```
+
+响应 (解密后, 字段映射后):
+
+```json
+{
+ "rampart": "", // msg (string) 消息
+ "helm": 0, // code (int) 状态码,0=成功
+ "sidekick": { // data
+ "associate": [ // sys (array) 系统推荐列表
+ {
+ "revenue": "", // img (string) 图片
+ "bond": "", // headPos (string) 头部位置
+ "leap": 0, // faceIndex (int) 人脸索引
+ "digitize": "" // url (string) URL
+ }
+ ],
+ "entrap": [ // recent (array) 最近使用列表
+ {
+ "revenue": "", // img (string) 图片
+ "bond": "", // headPos (string) 头部位置
+ "leap": 0, // faceIndex (int) 人脸索引
+ "digitize": "" // url (string) URL
+ }
+ ]
+ }
+}
+```
+
+V2 完整请求体:
+
+```
+// recommendhead — 获取推荐头像
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "2lkgHC/EO4JgJL2ht0CeROHMMntqYKgFvNO/XCK1TyY=", // AES(/v1/image/recommendhead)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "associate": [
+ {
+ "revenue": "", // img
+ "bond": "", // headPos
+ "leap": 0, // faceIndex
+ "digitize": "" // url
+ }
+ ], // sys
+ "entrap": [
+ {
+ "revenue": "", // img
+ "bond": "", // headPos
+ "leap": 0, // faceIndex
+ "digitize": "" // url
+ }
+ ] // recent
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 27. 创建换脸任务
`POST /v1/image/faceswap_task` | 鉴权: 需要
@@ -1086,13 +3998,220 @@
"rampart": "", // msg (string) 消息
"helm": 0, // code (int) 状态码,0=成功
"sidekick": { // data
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0 // taskId (int) 任务ID
}
}
```
-### 21. App事件打点上报
+V2 完整请求体:
+
+```
+// faceswap_task — 创建换脸任务
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "pZQuCb74NC6YLZGPO/mRyDYdcbR8CUOur8pawoKJ5qw=", // AES(/v1/image/faceswap_task)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "revenue": "", // img (string) 图片
+ "bond": "", // headPos (string) 头像位置
+ "arena": 0, // 固定传参
+ "agent": "", // headImg (string) 头像图片
+ "booking": "", // resolution (string) 分辨率
+ "histogram": 2, // 固定传参
+ "stadium": 1 // 固定传参
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "listing": 0, // state
+ "tree": 0 // taskId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 28. 获取图片模板
+
+`GET /v1/image/image_template` | 鉴权: 需要
+
+请求头 (字段映射后):
+
+```
+ portal 应用包名(必填) (原始: pkg)
+ knight 用户登录token (原始: User_token)
+```
+
+查询参数 (字段映射后):
+
+```json
+{
+ "sentinel": "", // app — 应用标识(必填)
+ "crest": "", // ch — 渠道号
+ "asset": "", // userId — 用户ID
+ "insignia": "" // categoryId — 分类ID
+}
+```
+
+响应 (解密后, 字段映射后):
+
+```json
+{
+ "rampart": "", // msg (string) 消息
+ "helm": 0, // code (int) 状态码,0=成功
+ "sidekick": [ // data (array) 图片模板列表
+ {
+ "bond": "", // headPos (string) 头像位置
+ "congregation": "", // templateName (string) 模板名称
+ "leap": 0, // faceIndex (int) 人脸索引
+ "greaves": 0, // credits (int) 积分
+ "realm": "", // avatar (string) 头像
+ "rebalance": "", // user (string) 用户
+ "theorize": "", // resulotion (string) 分辨率
+ "inject": "" // templateUrl (string) 模板URL
+ }
+ ]
+}
+```
+
+V2 完整请求体:
+
+```
+// image_template — 获取图片模板
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "XUCp6nWYnEP5aBtDzRw07JrewUeQlB9m0cMwMpSxoSc=", // AES(/v1/image/image_template)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ {
+ "bond": "", // headPos
+ "congregation": "", // templateName
+ "leap": 0, // faceIndex
+ "greaves": 0, // credits
+ "realm": "", // avatar
+ "rebalance": "", // user
+ "theorize": "", // resulotion
+ "inject": "" // templateUrl
+ }
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 29. App事件打点上报
`POST /v1/log/appevent` | 鉴权: 需要
@@ -1127,7 +4246,79 @@
}
```
-### 22. 创建黏土风格任务
+V2 完整请求体:
+
+```
+// appevent — App事件打点上报
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "B9Wum7FH+IkJ/qSKE8yp6PLS28kvYwcqsG/Z8eunjaY=", // AES(/v1/log/appevent)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 30. 创建黏土风格任务
`POST /v1/image/clay_stylization` | 鉴权: 需要
@@ -1165,13 +4356,89 @@
"rampart": "", // msg (string) 消息
"helm": 0, // code (int) 状态码,0=成功
"sidekick": { // data
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0 // taskId (int) 任务ID
}
}
```
-### 23. 创建自定义换衣任务
+V2 完整请求体:
+
+```
+// clay_stylization — 创建黏土风格任务
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "efe3nmVAVTo4GwufCHGZn6/OuCdnVXoKnVUB18NlEaY=", // AES(/v1/image/clay_stylization)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "profit": "", // srcImgBase64 (string) 源图片Base64数据
+ "statute": "" // srcImgUrl (string) 源图片URL
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "listing": 0, // state
+ "tree": 0 // taskId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 31. 创建自定义换衣任务
`POST /v1/image/custom_clothes_swap` | 鉴权: 需要
@@ -1207,13 +4474,89 @@
"rampart": "", // msg (string) 消息
"helm": 0, // code (int) 状态码,0=成功
"sidekick": { // data
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0 // taskId (int) 任务ID
}
}
```
-### 24. 获取文生图标签
+V2 完整请求体:
+
+```
+// custom_clothes_swap — 创建自定义换衣任务
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "ipj4rBNPdps6blpCvT8S4eMpl1GbmBEyeyl0PeGfEF4=", // AES(/v1/image/custom_clothes_swap)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "balance": "", // srcImg2 (string) 源图片2的文件路径
+ "endeavor": "" // srcImg1 (string) 源图片1的文件路径
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "listing": 0, // state
+ "tree": 0 // taskId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 32. 获取文生图标签
`GET /v1/image/txt2img_tags` | 鉴权: 需要
@@ -1243,13 +4586,100 @@
"sidekick": [ // data (array) 标签列表
{
"parallelize": "", // theme (string) 主题
- "rally": [] // tags (array) 标签
+ "rally": [ // tags (array) 标签
+ {
+ "constrain": "", // tag (string) 标签名
+ "valor": "" // desc (string) 描述
+ }
+ ]
}
]
}
```
-### 25. 获取文生图提示词模板
+V2 完整请求体:
+
+```
+// txt2img_tags — 获取文生图标签
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "9AkXTk9OIqDaK9lXXYVyAb5FRZUhqPJbndWcaUq6VgQ=", // AES(/v1/image/txt2img_tags)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ {
+ "parallelize": "", // theme
+ "rally": [
+ {
+ "constrain": "", // tag
+ "valor": "" // desc
+ }
+ ] // tags
+ }
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 33. 获取文生图提示词模板
`POST /v1/image/txt2img_prompts` | 鉴权: 需要
@@ -1281,7 +4711,200 @@
}
```
-### 26. 获取分类列表
+V2 完整请求体:
+
+```
+// txt2img_prompts — 获取文生图提示词模板
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "9AkXTk9OIqDaK9lXXYVyAaHztqFyfBVJmw86sPTZ5KY=", // AES(/v1/image/txt2img_prompts)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "sidekick": [{"custom":"","parallelize":"","rally":[]}]
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "ledger": "", // prompt
+ "rally": "" // tags
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 34. 获取用户支付记录
+
+`GET /v1/user/payments` | 鉴权: 需要
+
+请求头 (字段映射后):
+
+```
+ portal 应用包名(必填) (原始: pkg)
+ knight 用户登录token (原始: User_token)
+```
+
+查询参数 (字段映射后):
+
+```json
+{
+ "sentinel": "", // app — 应用标识(必填)
+ "asset": "" // userId — 用户ID
+}
+```
+
+响应 (解密后, 字段映射后):
+
+```json
+{
+ "rampart": "", // msg (string) 消息
+ "helm": 0, // code (int) 状态码,0=成功
+ "sidekick": [ // data (array) 支付记录列表
+ {
+ "hero": 0, // amount (int) 支付金额
+ "restart": 0, // payTime (int) 支付时间戳
+ "intercept": "", // payMethod (string) 支付方式
+ "familiar": "", // currency (string) 货币类型
+ "assert": "" // payId (string) 支付ID
+ }
+ ]
+}
+```
+
+V2 完整请求体:
+
+```
+// payments — 获取用户支付记录
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "3g7ODurMzgd+K+DZoJ4hBLHn5C0MSwC5VeysX1j7mE4=", // AES(/v1/user/payments)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ {
+ "hero": 0, // amount
+ "restart": 0, // payTime
+ "intercept": "", // payMethod
+ "familiar": "", // currency
+ "assert": "" // payId
+ }
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 35. 获取分类列表
`GET /v1/image/category-list` | 鉴权: 需要
@@ -1317,7 +4940,85 @@
}
```
-### 27. 获取App语言配置
+V2 完整请求体:
+
+```
+// category_list — 获取分类列表
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "YiEwYYtY/jrNfR/6L3LjNcO1tDtYBjRkYRWFRJU8uds=", // AES(/v1/image/category-list)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ {
+ "recharge": "", // templateType
+ "patrol": "", // categoryName
+ "insignia": 0 // categoryId
+ }
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 36. 获取App语言配置
`GET /v1/config/app-language` | 鉴权: 需要
@@ -1349,7 +5050,81 @@
}
```
-### 28. 图片动作风格化gif
+V2 完整请求体:
+
+```
+// app_language — 获取App语言配置
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "/0p7cVewd+WqmRAeA1yXfRrzFB0GLIIEsLkB3neLCYs=", // AES(/v1/config/app-language)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "charge": "" // config
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 37. 图片动作风格化gif
`POST /v1/image/offtop_video` | 鉴权: 需要
@@ -1386,13 +5161,89 @@
"rampart": "", // msg (string) 消息
"helm": 0, // code (int) 状态码,0=成功
"sidekick": { // data
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0 // taskId (int) 任务ID
}
}
```
-### 29. 获取我的任务列表
+V2 完整请求体:
+
+```
+// offtop_video — 图片动作风格化gif
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "baq0prjaYcmb6oSUqLbvxmquher0440frp0L3ZPvTFk=", // AES(/v1/image/offtop_video)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "summary": "480p", // 固定传参
+ "refuge": "" // srcImg (string) 源图片
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "listing": 0, // state
+ "tree": 0 // taskId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 38. 获取我的任务列表
`GET /v1/image/my-tasks` | 鉴权: 需要
@@ -1428,9 +5279,15 @@
{
"cipher": 0, // taskType (int) 任务类型
"discover": 0, // createTime (long) 创建时间
- "listing": "", // state (string) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0, // taskId (long) 任务ID
- "downsample": [] // imgList (array) 图片列表
+ "downsample": [ // imgList (array) 图片列表
+ {
+ "reconfigure": "", // imgUrl (string) 图片URL
+ "booking": "", // resolution (string) 分辨率
+ "reconnect": 0 // imgType (int) 图片类型
+ }
+ ]
}
],
"manifest": false // hasNext (boolean) 是否有下一页
@@ -1438,7 +5295,99 @@
}
```
-### 30. 创建增强换脸任务
+V2 完整请求体:
+
+```
+// my_tasks — 获取我的任务列表
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "2NZQYBiTDfxnbiL8L3yzfsdXyXMDoWk2r4fMzMJFPXA=", // AES(/v1/image/my-tasks)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "weigh": 0, // total
+ "empower": 0, // current
+ "heatmap": 0, // size
+ "intensify": [
+ {
+ "cipher": 0, // taskType
+ "discover": 0, // createTime
+ "listing": 0, // state
+ "tree": 0, // taskId
+ "downsample": [
+ {
+ "reconfigure": "", // imgUrl
+ "booking": "", // resolution
+ "reconnect": 0 // imgType
+ }
+ ] // imgList
+ }
+ ], // records
+ "manifest": false // hasNext
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 39. 创建增强换脸任务
`POST /v1/image/faceswap_ex_task` | 鉴权: 需要
@@ -1474,13 +5423,89 @@
"rampart": "", // msg (string) 消息
"helm": 0, // code (int) 状态码,0=成功
"sidekick": { // data
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0 // taskId (int) 任务ID
}
}
```
-### 31. 创建生图任务
+V2 完整请求体:
+
+```
+// faceswap_ex_task — 创建增强换脸任务
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "pZQuCb74NC6YLZGPO/mRyGWK2GYVejPgKHRytHrqrXw=", // AES(/v1/image/faceswap_ex_task)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "balance": "", // srcImg2 (string) 源图片2的文件路径
+ "endeavor": "" // srcImg1 (string) 源图片1的文件路径
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "listing": 0, // state
+ "tree": 0 // taskId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 40. 创建生图任务
`POST /v1/image/create-task` | 鉴权: 需要
@@ -1523,13 +5548,97 @@
"rampart": "", // msg (string) 消息
"helm": 0, // code (int) 状态码,0=成功
"sidekick": { // data
- "listing": 0, // state (int) 任务状态
+ "listing": 0, // state (int) 任务状态:1=队列中 | 2=处理中 | 3=完成 | 4=超时 | 5=错误 | 6=中止
"tree": 0 // taskId (int) 任务ID
}
}
```
-### 32. 获取积分页面信息
+V2 完整请求体:
+
+```
+// create_task — 创建生图任务
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "rI0Hnrfr+omz0lgMlJaQHf2B/h7caWjEKjxYbKXcSN4=", // AES(/v1/image/create-task)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "nexus": "", // ext (string) 扩展参数
+ "cipher": "", // taskType (string) 任务类型
+ "heatmap": "", // size (string) 输出尺寸,如 480p
+ "congregation": "", // templateName (string) 模板名称
+ "balance": "", // srcImg2 (string) 源图片2的文件路径
+ "guild": "", // srcImg1Url (string) 源图片1的URL
+ "allowance": false, // 固定传参
+ "endeavor": "", // srcImg1 (string) 源图片1的文件路径
+ "commission": "", // srcImg2Url (string) 源图片2的URL
+ "ledger": "" // prompt (string) 文本提示词
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "listing": 0, // state
+ "tree": 0 // taskId
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 41. 获取积分页面信息
`GET /v1/user/credits-page` | 鉴权: 需要
@@ -1575,7 +5684,94 @@
}
```
-### 33. 删除任务
+V2 完整请求体:
+
+```
+// credits_page — 获取积分页面信息
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "Fxw9d1hrN+y+1MRKUZrnvSVJ/DrPhgkptWl0inq6XQk=", // AES(/v1/user/credits-page)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "weigh": 0, // total
+ "empower": 0, // current
+ "coordinate": 0, // pages
+ "heatmap": 0, // size
+ "intensify": [
+ {
+ "tailor": "", // subBusinessType
+ "greaves": 0, // credits
+ "discover": 0, // createTime
+ "vanquish": "", // businessId
+ "accolade": 0, // type
+ "defend": "" // businessType
+ }
+ ] // records
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 42. 删除任务
`POST /v1/image/delete-task` | 鉴权: 需要
@@ -1607,7 +5803,80 @@
}
```
-### 34. 获取支付方式列表
+V2 完整请求体:
+
+```
+// delete_task — 删除任务
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "uSEyKQBaKpqWKxMyG6uSBv2B/h7caWjEKjxYbKXcSN4=", // AES(/v1/image/delete-task)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "tree": 0 // taskId (int) 任务ID
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 43. 获取支付方式列表
`POST /v1/payment/get-payment-methods` | 鉴权: 需要
@@ -1651,7 +5920,94 @@
}
```
-### 35. 获取订单详情
+V2 完整请求体:
+
+```
+// get_payment_methods — 获取支付方式列表
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "pKTjSWEFROYi4ZSn5eMXfYHaCMQ1ESxQF0a7jxeJrGM=", // AES(/v1/payment/get-payment-methods)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "warrior": 0, // activityId (int) 活动模板ID
+ "vambrace": "" // country (string) 国家代码
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "renew": [
+ {
+ "ceremony": "", // subPaymentMethod
+ "conjure": 0, // bonusCredits
+ "brigade": "", // name
+ "greylist": "", // icon
+ "finalize": false, // recentlyUsed
+ "resource": "", // paymentMethod
+ "deny": false, // recommend
+ "enchant": 0.0, // bonusRatio
+ "deploy": false // selected
+ }
+ ] // paymentMethods
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 44. 获取订单详情
`GET /v1/payment/getOrderDetail` | 鉴权: 需要
@@ -1684,12 +6040,92 @@
"visor": "", // count (string) 数量
"familiar": "", // currency (string) 货币
"federation": "", // id (string) 支付ID/订单ID
- "line": {} // status (object) 状态
+ "line": "" // status (string) 支付状态枚举名:INIT | SUCCESS | PROCESSING | FAILED | CANCELED
}
}
```
-### 36. 获取反馈上传URL
+V2 完整请求体:
+
+```
+// getOrderDetail — 获取订单详情
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "tV1hweljjY+aaQDf/Z5pJHO3+O6pZOm00cuW1CBPjSM=", // AES(/v1/payment/getOrderDetail)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "warrior": "", // activityId
+ "disambiguate": "", // redirectUrl
+ "awaken": false, // addCredits
+ "visor": "", // count
+ "familiar": "", // currency
+ "federation": "", // id
+ "line": "" // status
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 45. 获取反馈上传URL
`POST /v1/feedback/upload-presigned-url` | 鉴权: 需要
@@ -1721,7 +6157,82 @@
}
```
-### 37. 提交反馈
+V2 完整请求体:
+
+```
+// upload_presigned_url — 获取反馈上传URL
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "orVu5EV4wketjm3s7dpINX3rgZjX7lkR1ySDUdycypd+BppU4+QHliSwjd40ejKk", // AES(/v1/feedback/upload-presigned-url)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "layer": "" // fileName (string) 文件名
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "shed": "", // uploadUrl
+ "hunt": "" // filePath
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 46. 提交反馈
`POST /v1/feedback/submit` | 鉴权: 需要
@@ -1755,7 +6266,81 @@
}
```
-### 38. 获取反馈列表
+V2 完整请求体:
+
+```
+// submit — 提交反馈
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "2TPm4cO/6EAiAP+0nFLZFAfRMxamRw7mtQp2oyg1WDU=", // AES(/v1/feedback/submit)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "inventory": [],
+ "pauldron": "", // contentType (string) 内容类型
+ "cloak": "" // content (string) 内容
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": false // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 47. 获取反馈列表
`GET /v1/feedback/list` | 鉴权: 需要
@@ -1800,7 +6385,95 @@
}
```
-### 39. 标记反馈已读
+V2 完整请求体:
+
+```
+// list — 获取反馈列表
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "o0za2eNxr2M/wNp4474h0TU+subYe0OSk9tX0uO2G6M=", // AES(/v1/feedback/list)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "weigh": 0, // total
+ "empower": 0, // current
+ "heatmap": 0, // size
+ "intensify": [
+ {
+ "redact": false, // read
+ "track": 0, // feedbackId
+ "inventory": [
+ ], // fileUrls
+ "voxelize": 0, // replyStatus
+ "uncover": "", // createTimeText
+ "cloak": "" // content
+ }
+ ], // records
+ "manifest": false // hasNext
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 48. 标记反馈已读
`POST /v1/feedback/read` | 鉴权: 需要
@@ -1832,7 +6505,80 @@
}
```
-### 40. 获取未读消息数
+V2 完整请求体:
+
+```
+// read — 标记反馈已读
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "wuTBDHBVRDri3+rNYPPPhuZKxHeLVr128QorwtYqyfo=", // AES(/v1/feedback/read)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "registry": []
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 49. 获取未读消息数
`GET /v1/user/unread-message-count` | 鉴权: 需要
@@ -1870,7 +6616,88 @@
}
```
-### 41. 获取图转视频分类
+V2 完整请求体:
+
+```
+// unread_message_count — 获取未读消息数
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "b1fyDddTbwX8J5yeb4RDXC4rte3yUDCeMpw7Y+XCm8Y=", // AES(/v1/user/unread-message-count)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "footprint": [
+ {
+ "visor": 0, // count
+ "accolade": "" // type
+ }
+ ], // unreadCountList
+ "defragment": 0, // totalUnreadCount
+ "probe": 0 // lastUpdateTime
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 50. 获取图转视频分类
`GET /v1/image/img2video/categories` | 鉴权: 需要
@@ -1897,7 +6724,85 @@
}
```
-### 42. 获取图转视频任务列表
+V2 完整请求体:
+
+```
+// categories — 获取图转视频分类
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "MckCynrhgryF3CC/4R7nVxIjtn/UVOCeJYwjKsE1byc=", // AES(/v1/image/img2video/categories)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ {
+ "brigade": "", // name
+ "greylist": "", // icon
+ "federation": 0 // id
+ }
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 51. 获取图转视频任务列表
`GET /v1/image/img2video/tasks` | 鉴权: 需要
@@ -1924,23 +6829,141 @@
"helm": 0, // code (int) 状态码,0=成功
"sidekick": [ // data (array) 任务列表
{
- "preempt": {}, // previewVideo (object) 预览视频
- "preprocess": {}, // resolution720p (object) 720p分辨率
+ "preempt": { // previewVideo (object) 预览视频
+ "lowUrl": "", // lowUrl (string) 低分辨率视频URL
+ "digitize": "", // url (string) 视频URL
+ "hlsUrl": "" // hlsUrl (string) HLS流URL
+ },
+ "preprocess": { // resolution720p (object) 720p分辨率配置
+ "cosmos": 0, // duration (int) 时长(秒)
+ "greaves": 0, // credits (int) 所需积分
+ "greylist": "" // icon (string) 图标URL
+ },
"simplify": 0, // imageCount (int) 图片数量
"nexus": "", // ext (string) 扩展参数
"cipher": "", // taskType (string) 任务类型
- "reverify": {}, // resolution480p (object) 480p分辨率
+ "reverify": { // resolution480p (object) 480p分辨率配置
+ "cosmos": 0, // duration (int) 时长(秒)
+ "greaves": 0, // credits (int) 所需积分
+ "greylist": "" // icon (string) 图标URL
+ },
"congregation": "", // templateName (string) 模板名称
"allowance": false, // needopt (boolean) 是否优化,通过配置控制
- "subscribe": {}, // label (object) 标签
+ "subscribe": { // label (object) 标签
+ "greylist": "" // icon (string) 标签图标URL
+ },
"glossary": "", // title (string) 标题
- "extract": {} // previewImage (object) 预览图
+ "extract": { // previewImage (object) 预览图
+ "digitize": "" // url (string) 图片URL
+ }
}
]
}
```
-### 43. 获取预签名上传URL
+V2 完整请求体:
+
+```
+// tasks — 获取图转视频任务列表
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "MckCynrhgryF3CC/4R7nV+FeAz7t9nA8SXvtDdT0Tsk=", // AES(/v1/image/img2video/tasks)
+// "power_level": "pk2LyrB1C4p7ga0Wml8zIg==", // AES(GET)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// 注意: 原始接口为 GET,走代理后统一 POST,仍需传 V2 请求体(业务字段为空)
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": [
+ {
+ "preempt": {
+ "lowUrl": "",
+ "digitize": "", // url
+ "hlsUrl": ""
+ }, // previewVideo
+ "preprocess": {
+ "cosmos": 0, // duration
+ "greaves": 0, // credits
+ "greylist": "" // icon
+ }, // resolution720p
+ "simplify": 0, // imageCount
+ "nexus": "", // ext
+ "cipher": "", // taskType
+ "reverify": {
+ "cosmos": 0, // duration
+ "greaves": 0, // credits
+ "greylist": "" // icon
+ }, // resolution480p
+ "congregation": "", // templateName
+ "allowance": false, // needopt
+ "subscribe": {
+ "greylist": "" // icon
+ }, // label
+ "glossary": "", // title
+ "extract": {
+ "digitize": "" // url
+ } // previewImage
+ }
+ ] // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
+### 52. 获取预签名上传URL
`POST /v1/image/upload-presigned-url` | 鉴权: 需要
@@ -1979,6 +7002,89 @@
}
```
+V2 完整请求体:
+
+```
+// upload_presigned_url — 获取预签名上传URL
+// POST {baseUrl}/quester/defender/summoner
+//
+// 代理请求:
+// {
+// "hero_class": "petsHeroAI", // appId 明文
+// "pet_species": "71cQz8GwS59uZWbDSUl3g5Tw3bsKFw2qnr3fhePqBfw=", // AES(/v1/image/upload-presigned-url)
+// "power_level": "VP+tlhOYAAqQIAPPKEmKEg==", // AES(POST)
+// "quest_rank": "", // AES(映射后的Header字段名构造JSON) → Base64
+// "battle_score": "", // AES(映射后的URL参数字段名构造JSON) → Base64
+// "loyalty_index": "", // AES(V2包装后的业务数据) → Base64
+// "billing_addr": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "utm_term": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "cluster_id": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "lsn_value": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "accuracy_val": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// "dir_path": "<随机4-8位字母数字,AES加密→Base64>" // 噪音
+// }
+//
+// V2 请求体 — 填入业务值后 AES 加密,填入 loyalty_index
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "gateway": "", // fileName1 (string) 文件名1
+ "action": "", // fileName2 (string) 文件名2
+ "pauldron": "", // contentType (string) 文件MIME类型
+ "stronghold": 0 // expectedSize (int) 预期文件大小
+ }
+ }
+ }
+ }
+ },
+ "roar": "<随机4-8位字母数字,AES加密→Base64>",
+ "clash": "<随机4-8位字母数字,AES加密→Base64>",
+ "thunder": "<随机4-8位字母数字,AES加密→Base64>",
+ "rumble": "<随机4-8位字母数字,AES加密→Base64>",
+ "howl": "<随机4-8位字母数字,AES加密→Base64>",
+ "growl": "<随机4-8位字母数字,AES加密→Base64>"
+}
+```
+
+V2 完整响应体 (解密后):
+
+```json
+{
+ "arsenal": 4,
+ "vault": {
+ "tome": {
+ "codex": {
+ "grimoire": {
+ "sanctum": {
+ "rampart": "", // msg
+ "helm": 0, // code
+ "sidekick": {
+ "bolster": "", // uploadUrl1
+ "soar": 0, // expiresIn
+ "remap": {
+ }, // requiredHeaders
+ "expound": "", // uploadUrl2
+ "train": "", // filePath2
+ "recruit": "" // filePath1
+ } // data
+ }
+ }
+ }
+ }
+ },
+ "roar": "Gpi2C7Dg",
+ "clash": "XDiAM66y",
+ "thunder": "O0xTOn6x",
+ "rumble": "3xGSz02a",
+ "howl": "WRN1EzZY",
+ "growl": "1TZlZMZd"
+}
+```
+
## 错误码
| code | 说明 |
@@ -2000,18 +7106,33 @@
| accountId | wizard |
| accountName | captain |
| activityId | warrior |
+| activitys | summon |
| actualAmount | guardian |
+| addCredits | awaken |
| adsTokenId | champion |
+| age | transform |
| amount | hero |
+| animate | ascend |
| app | sentinel |
+| appFbConfig | evolve |
| appType | ranger |
+| appraise | unleash |
| approveState | paladin |
| aspectRatio | quest |
| automaticRenewal | legend |
+| avatar | realm |
+| baseCredits | wield |
| baseUrl | destiny |
| begTime | emblem |
+| bonus | forge |
+| bonusCredits | conjure |
+| bonusRatio | enchant |
+| businessId | vanquish |
+| businessType | defend |
| campaignInfo | relic |
| card | artifact |
+| categoryId | insignia |
+| categoryName | patrol |
| ch | crest |
| channel | lineage |
| channelType | armor |
@@ -2019,28 +7140,62 @@
| clientId | gauntlet |
| code | helm |
| coder | mantle |
+| config | charge |
+| content | cloak |
| contentType | pauldron |
| count | visor |
+| countId | command |
| country | vambrace |
+| countryCode | navigate |
+| creatTime | explore |
+| createTime | discover |
+| createTimeText | uncover |
+| credit | reveal |
+| creditPromotion | unlock |
+| credits | greaves |
+| creditsRecordUrl | conquer |
+| cryptoInvoiceUrl | protect |
| currency | familiar |
+| current | empower |
| cvcCode | companion |
| data | sidekick |
| days | species |
+| department | inspire |
+| desc | valor |
+| description | pedigree |
| devId | ancestry |
| deviceId | origin |
+| discountOff | lead |
| domain | totem |
+| domains | avatar |
| dt | sigil |
+| duration | cosmos |
+| email | galaxy |
+| enabled | nebula |
| endTime | citadel |
| event | fortress |
| expectedSize | stronghold |
| expireMonth | dominion |
| expireYear | sanctuary |
+| expiresIn | soar |
| ext | nexus |
+| extConfig | surge |
| extJson | vanguard |
+| face | dash |
+| faceIndex | leap |
+| faceInfos | strike |
+| face_index | parry |
+| feature | dodge |
+| features | scout |
+| feedbackId | track |
| feedbackIds | registry |
| fileName | layer |
| fileName1 | gateway |
| fileName2 | action |
+| filePath | hunt |
+| filePath1 | recruit |
+| filePath2 | train |
+| fileUrls | inventory |
| filterCountry | blueprint |
| filterDomain | vendor |
| filterOwnerId | participant |
@@ -2048,57 +7203,125 @@
| filterTaskType | package |
| filterVip | quotation |
| firstName | appointment |
+| firstRegister | equip |
+| forcePayCenter | upgrade |
| fps | notification |
+| frameIndex | unite |
+| frame_index | pledge |
+| freeBlurTimes | vow |
+| freeTimes | decree |
+| gender | venture |
| googleClientId | discourse |
+| h5UrlConfig | pursue |
+| hasNext | manifest |
| hash | mediation |
| hashIsZero | corpus |
| headFaceIndex | histogram |
| headImg | agent |
| headPos | bond |
| headType | arena |
+| hint | traverse |
| host | initiative |
+| icon | greylist |
+| id | federation |
+| imageCount | simplify |
| imageFaceIndex | committee |
| imageId | royalty |
+| imageInfos | curate |
| img | revenue |
| imgCount | declaration |
| imgId | criterion |
+| imgList | downsample |
+| imgType | reconnect |
+| imgUrl | reconfigure |
+| index | prewarm |
| inviteBy | item |
+| invitedCnt | deduce |
+| isBlur | reify |
+| isVip | generate |
+| issuerUrl | merge |
| keepUserId | series |
+| label | subscribe |
| lang | seminar |
| lastName | bazaar |
+| lastUpdateTime | probe |
| link | festival |
| list | junction |
+| maxLimit | architect |
| method | heap |
+| methodActivitys | modify |
+| methodChannels | restore |
| model | authorization |
| msg | rampart |
+| name | brigade |
+| needCredits | deserialize |
| needImage | assembly |
| needUndress | directive |
| needopt | allowance |
| negativePrompt | underwriter |
+| note | extrapolate |
+| openType | transplant |
+| optimizeCountSql | harvest |
+| optimizeJoinOfCountSql | seek |
| orderId | gazette |
+| orders | identify |
| originAmount | curriculum |
| owner | genealogy |
| p12KeyPath | arraignment |
| packageName | folio |
| page | trophy |
+| pages | coordinate |
| password | township |
+| payCenterUrl | switch |
+| payId | assert |
+| payMethod | intercept |
| payMethods | wallet |
+| payStatus | destroy |
+| payTime | restart |
+| payTypeList | handshake |
+| payUrl | convert |
+| paylink | unzip |
| paymentMethod | resource |
+| paymentMethods | renew |
+| permissions | sandbox |
| phone | block |
| pkg | portal |
| platform | trigger |
+| previewImage | extract |
+| previewVideo | preempt |
+| productType | subtract |
+| progress | dice |
| prompt | ledger |
| publicKey | template |
| purchaseData | merchant |
+| queueCnt | revert |
+| read | redact |
| receipt | attendee |
+| recent | entrap |
+| recentlyUsed | finalize |
+| recommend | deny |
+| records | intensify |
+| redirectUrl | disambiguate |
| referer | digest |
| refererType | campaign |
+| replyStatus | voxelize |
+| requiredHeaders | remap |
| resolution | booking |
+| resolution480p | reverify |
+| resolution720p | preprocess |
+| resulotion | theorize |
+| rewardCredits | represent |
+| rewardRatio | render |
+| role | evaluate |
+| searchCount | suspend |
+| selected | deploy |
| serviceAccountEmail | alert |
| sharedSecret | comment |
+| showName | mold |
| sign | resolution |
| signature | sample |
| size | heatmap |
+| sort | invent |
| srcFaceImgBase64 | attachment |
| srcFaceIndex | stadium |
| srcImg | refuge |
@@ -2109,188 +7332,72 @@
| srcImgBase64 | profit |
| srcImgUrl | statute |
| srcVideo | compendium |
+| state | listing |
| status | line |
| style | webinar |
+| subBusinessType | tailor |
| subPaymentMethod | ceremony |
+| subScribeValidTime | tokenize |
+| subscriptionActivitys | cleanse |
+| subscriptionPeriod | distribute |
+| sumCredits | emit |
+| sys | associate |
+| t2IConfig | regulate |
+| tag | constrain |
+| tags | rally |
| targetId | node |
+| targetInvitedCnt | authorize |
+| taskId | tree |
| taskIds | privilege |
| taskType | cipher |
| taskTypes | platoon |
+| templateFaceUrl | simulate |
+| templateFifCredits | pause |
+| templateFifDuration | decommission |
+| templateFifUrl | acknowledge |
| templateName | congregation |
+| templateTfCredits | pipe |
+| templateTfDuration | unwrap |
+| templateTfUrl | extend |
+| templateType | recharge |
| templateTypes | endowment |
+| templateUrl | inject |
| tgId | concession |
+| tgName | defer |
| tgOrderId | insurer |
+| theme | parallelize |
+| title | glossary |
| token | thesis |
+| total | weigh |
+| totalUnreadCount | defragment |
| transactionId | chronicle |
| truePrompt | deposition |
| ts | quarto |
| type | accolade |
| types | municipality |
-| userApplePayList | gallery |
-| userId | asset |
-| userInfoType | frame |
-| username | pulse |
-| val | journal |
-| value | schema |
-| verifyCode | supplier |
-| videoFaceIndex | applicant |
-| videoFrameIndex | fragment |
-| videoSize | summary |
-| activitys | summon |
-| addCredits | awaken |
-| appFbConfig | evolve |
-| appraise | unleash |
-| config | charge |
-| countId | command |
-| countryCode | navigate |
-| credit | reveal |
-| creditPromotion | unlock |
-| creditsRecordUrl | conquer |
-| cryptoInvoiceUrl | protect |
-| current | empower |
-| department | inspire |
-| description | pedigree |
-| domains | avatar |
-| duration | cosmos |
-| email | galaxy |
-| enabled | nebula |
-| expiresIn | soar |
-| extConfig | surge |
-| faceInfos | strike |
-| feature | dodge |
-| features | scout |
-| filePath | hunt |
-| filePath1 | recruit |
-| filePath2 | train |
-| firstRegister | equip |
-| forcePayCenter | upgrade |
-| freeBlurTimes | vow |
-| freeTimes | decree |
-| h5UrlConfig | pursue |
-| hasNext | manifest |
-| hint | traverse |
-| imgUrl | reconfigure |
-| invitedCnt | deduce |
-| isBlur | reify |
-| isVip | generate |
-| issuerUrl | merge |
-| lastUpdateTime | probe |
-| maxLimit | architect |
-| methodActivitys | modify |
-| methodChannels | restore |
-| needCredits | deserialize |
-| openType | transplant |
-| optimizeCountSql | harvest |
-| optimizeJoinOfCountSql | seek |
-| orders | identify |
-| pages | coordinate |
-| payCenterUrl | switch |
-| payStatus | destroy |
-| payTypeList | handshake |
-| payUrl | convert |
-| paymentMethods | renew |
-| permissions | sandbox |
-| recent | entrap |
-| records | intensify |
-| redirectUrl | disambiguate |
-| requiredHeaders | remap |
-| role | evaluate |
-| searchCount | suspend |
-| subScribeValidTime | tokenize |
-| subscriptionActivitys | cleanse |
-| sumCredits | emit |
-| sys | associate |
-| t2IConfig | regulate |
-| tags | rally |
-| targetInvitedCnt | authorize |
-| tgName | defer |
-| total | weigh |
-| totalUnreadCount | defragment |
| unreadCountList | footprint |
+| updateTime | fork |
| uploadUrl | shed |
| uploadUrl1 | bolster |
| uploadUrl2 | expound |
+| url | digitize |
+| user | rebalance |
+| userApplePayList | gallery |
+| userId | asset |
+| userInfoType | frame |
| userName | terminal |
| userToken | reevaluate |
| userType | prefetch |
+| username | pulse |
| usign | retrospect |
-| videoUrl | promotion |
-| age | transform |
-| animate | ascend |
-| avatar | realm |
-| baseCredits | wield |
-| bonus | forge |
-| bonusCredits | conjure |
-| bonusRatio | enchant |
-| businessId | vanquish |
-| businessType | defend |
-| categoryId | insignia |
-| categoryName | patrol |
-| content | cloak |
-| creatTime | explore |
-| createTime | discover |
-| createTimeText | uncover |
-| credits | greaves |
-| discountOff | lead |
-| face | dash |
-| faceIndex | leap |
-| face_index | parry |
-| feedbackId | track |
-| fileUrls | inventory |
-| frameIndex | unite |
-| frame_index | pledge |
-| gender | venture |
-| icon | greylist |
-| id | federation |
-| imageCount | simplify |
-| imageInfos | curate |
-| imgList | downsample |
-| imgType | reconnect |
-| index | prewarm |
-| label | subscribe |
-| name | brigade |
-| note | extrapolate |
-| payId | assert |
-| payMethod | intercept |
-| payTime | restart |
-| paylink | unzip |
-| previewImage | extract |
-| previewVideo | preempt |
-| productType | subtract |
-| progress | dice |
-| queueCnt | revert |
-| read | redact |
-| recentlyUsed | finalize |
-| recommend | deny |
-| replyStatus | voxelize |
-| resolution480p | reverify |
-| resolution720p | preprocess |
-| resulotion | theorize |
-| rewardCredits | represent |
-| rewardRatio | render |
-| selected | deploy |
-| showName | mold |
-| sort | invent |
-| state | listing |
-| subBusinessType | tailor |
-| subscriptionPeriod | distribute |
-| tag | constrain |
-| taskId | tree |
-| templateFaceUrl | simulate |
-| templateFifCredits | pause |
-| templateFifDuration | decommission |
-| templateFifUrl | acknowledge |
-| templateTfCredits | pipe |
-| templateTfDuration | unwrap |
-| templateTfUrl | extend |
-| templateType | recharge |
-| templateUrl | inject |
-| theme | parallelize |
-| title | glossary |
-| updateTime | fork |
-| url | digitize |
-| user | rebalance |
+| val | journal |
+| value | schema |
+| verifyCode | supplier |
| videoDuration | demonstrate |
+| videoFaceIndex | applicant |
+| videoFrameIndex | fragment |
+| videoSize | summary |
+| videoUrl | promotion |
| waitTime | flowStep |
| x1 | invoke |
| x2 | sync |
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..af43d70
--- /dev/null
+++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,140 @@
+{
+ "images" : [
+ {
+ "filename" : "Icon-App-20x20@1x.png",
+ "idiom" : "iphone",
+ "scale" : "1x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "Icon-App-20x20@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "Icon-App-20x20@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "Icon-App-29x29@1x.png",
+ "idiom" : "iphone",
+ "scale" : "1x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "Icon-App-29x29@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "Icon-App-29x29@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "Icon-App-40x40@1x.png",
+ "idiom" : "iphone",
+ "scale" : "1x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "Icon-App-40x40@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "Icon-App-40x40@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "Icon-App-60x60@1x.png",
+ "idiom" : "iphone",
+ "scale" : "1x",
+ "size" : "60x60"
+ },
+ {
+ "filename" : "Icon-App-60x60@2x.png",
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "60x60"
+ },
+ {
+ "filename" : "Icon-App-60x60@3x.png",
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "60x60"
+ },
+ {
+ "filename" : "Icon-App-20x20@1x.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "Icon-App-20x20@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "20x20"
+ },
+ {
+ "filename" : "Icon-App-29x29@1x.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "Icon-App-29x29@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "29x29"
+ },
+ {
+ "filename" : "Icon-App-40x40@1x.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "Icon-App-40x40@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "40x40"
+ },
+ {
+ "filename" : "Icon-App-76x76@1x.png",
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "76x76"
+ },
+ {
+ "filename" : "Icon-App-76x76@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "76x76"
+ },
+ {
+ "filename" : "Icon-App-83.5x83.5@2x.png",
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "83.5x83.5"
+ },
+ {
+ "filename" : "Icon-App-1024x1024@1x.png",
+ "idiom" : "ios-marketing",
+ "scale" : "1x",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-1024.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-1024.png
new file mode 100644
index 0000000..3a2e104
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-1024.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png
new file mode 100644
index 0000000..5dbb3da
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png
new file mode 100644
index 0000000..e4b5fa7
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png
new file mode 100644
index 0000000..23fad36
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png
new file mode 100644
index 0000000..726620b
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
new file mode 100644
index 0000000..56dc7b2
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png
new file mode 100644
index 0000000..3310d7a
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
new file mode 100644
index 0000000..3310d7a
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
new file mode 100644
index 0000000..0e0fc0f
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
new file mode 100644
index 0000000..a94168b
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
new file mode 100644
index 0000000..2d02a71
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
new file mode 100644
index 0000000..3a2e104
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
new file mode 100644
index 0000000..09b84ca
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
new file mode 100644
index 0000000..5dbb3da
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
new file mode 100644
index 0000000..e4b5fa7
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
new file mode 100644
index 0000000..80a0daa
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
new file mode 100644
index 0000000..23fad36
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
new file mode 100644
index 0000000..726620b
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
new file mode 100644
index 0000000..5dbb3da
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
new file mode 100644
index 0000000..56dc7b2
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
new file mode 100644
index 0000000..3310d7a
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
new file mode 100644
index 0000000..18ed6e7
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
new file mode 100644
index 0000000..be7a911
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
new file mode 100644
index 0000000..52b4bba
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
new file mode 100644
index 0000000..c64f323
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png
new file mode 100644
index 0000000..e4b5fa7
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
new file mode 100644
index 0000000..3310d7a
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
new file mode 100644
index 0000000..0e0fc0f
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
new file mode 100644
index 0000000..3c1380d
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
new file mode 100644
index 0000000..92b769c
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
new file mode 100644
index 0000000..1c7b1ad
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
new file mode 100644
index 0000000..a94168b
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
new file mode 100644
index 0000000..2d02a71
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83x83@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83x83@1x.png
new file mode 100644
index 0000000..724e958
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83x83@1x.png differ
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index cbc5914..967d025 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -5,7 +5,7 @@
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
- MagiEvery AI
+ PetsHero
NSPhotoLibraryUsageDescription
We need access to your photos to use as reference for AI image generation.
NSPhotoLibraryAddUsageDescription
diff --git a/lib/core/api/api_config.dart b/lib/core/api/api_config.dart
index 038c8f2..c218f87 100644
--- a/lib/core/api/api_config.dart
+++ b/lib/core/api/api_config.dart
@@ -5,8 +5,8 @@ abstract final class ApiConfig {
/// AES 密钥
static const String aesKey = 'liyP4LkMfP68XvCt';
- /// 应用 ID
- static const String appId = 'com.petsheroai.app';
+ /// 应用标识 (sentinel)
+ static const String appId = 'HAndroid';
/// 应用包名
static const String packageName = 'com.petsheroai.app';
diff --git a/lib/core/api/services/payment_api.dart b/lib/core/api/services/payment_api.dart
index 9a547fc..0017f4b 100644
--- a/lib/core/api/services/payment_api.dart
+++ b/lib/core/api/services/payment_api.dart
@@ -1,13 +1,14 @@
import '../api_client.dart';
+import '../api_config.dart';
import '../proxy_client.dart';
/// 支付相关 API
abstract final class PaymentApi {
static final _client = ApiClient.instance.proxy;
- /// 获取 Google 商品列表
+ /// 获取 Google 商品列表(Android)
static Future getGooglePayActivities({
- required String sentinel,
+ String? sentinel,
String? shield,
String? vambrace,
String? portal,
@@ -16,17 +17,17 @@ abstract final class PaymentApi {
path: '/v1/payment/getGooglePayActivities',
method: 'GET',
queryParams: {
- 'sentinel': sentinel,
+ 'sentinel': sentinel ?? ApiConfig.appId,
+ 'portal': portal ?? ApiConfig.packageName,
if (shield != null) 'shield': shield,
if (vambrace != null) 'vambrace': vambrace,
- if (portal != null) 'portal': portal,
},
);
}
- /// 获取 Apple 商品列表
+ /// 获取 Apple 商品列表(iOS)
static Future getApplePayActivities({
- required String sentinel,
+ String? sentinel,
String? shield,
String? vambrace,
String? portal,
@@ -35,10 +36,10 @@ abstract final class PaymentApi {
path: '/v1/payment/getApplePayActivities',
method: 'GET',
queryParams: {
- 'sentinel': sentinel,
+ 'sentinel': sentinel ?? 'HAndroid',
+ 'portal': portal ?? ApiConfig.packageName,
if (shield != null) 'shield': shield,
if (vambrace != null) 'vambrace': vambrace,
- if (portal != null) 'portal': portal,
},
);
}
diff --git a/lib/core/auth/auth_service.dart b/lib/core/auth/auth_service.dart
index e397f42..8d82646 100644
--- a/lib/core/auth/auth_service.dart
+++ b/lib/core/auth/auth_service.dart
@@ -126,6 +126,10 @@ class AuthService {
if (name != null && name.isNotEmpty) {
UserState.setUserName(name);
}
+ final countryCode = data?['navigate'] as String?;
+ if (countryCode != null) {
+ UserState.setNavigate(countryCode);
+ }
} else {
_log('init: 登录失败');
}
diff --git a/lib/core/user/user_state.dart b/lib/core/user/user_state.dart
index 768fc5d..bcc9a81 100644
--- a/lib/core/user/user_state.dart
+++ b/lib/core/user/user_state.dart
@@ -8,6 +8,8 @@ class UserState {
static final ValueNotifier userId = ValueNotifier(null);
static final ValueNotifier avatar = ValueNotifier(null);
static final ValueNotifier userName = ValueNotifier(null);
+ /// 国家码 (navigate / countryCode)
+ static final ValueNotifier navigate = ValueNotifier(null);
static void setCredits(int? value) {
credits.value = value;
@@ -25,6 +27,10 @@ class UserState {
userName.value = value;
}
+ static void setNavigate(String? value) {
+ navigate.value = value;
+ }
+
static String formatCredits(int? value) {
if (value == null) return '--';
return value.toString().replaceAllMapped(
diff --git a/lib/features/recharge/models/activity_item.dart b/lib/features/recharge/models/activity_item.dart
new file mode 100644
index 0000000..f98c8a1
--- /dev/null
+++ b/lib/features/recharge/models/activity_item.dart
@@ -0,0 +1,69 @@
+/// 商品/活动项(V2 字段映射)- getGooglePayActivities / getApplePayActivities
+class ActivityItem {
+ const ActivityItem({
+ required this.code,
+ required this.title,
+ required this.credits,
+ required this.actualAmount,
+ this.originAmount,
+ this.discountOff,
+ this.bonus = 0,
+ this.activityId,
+ this.currency,
+ });
+
+ final String code; // helm 产品代码
+ final String title; // glossary 标题
+ final int credits; // greaves 积分数
+ final String actualAmount; // guardian 实际金额
+ final String? originAmount; // curriculum 原价
+ final String? discountOff; // lead 折扣
+ final int bonus; // forge 赠送积分
+ final String? activityId; // warrior 活动ID
+ final String? currency; // familiar 货币
+
+ factory ActivityItem.fromJson(Map json) {
+ return ActivityItem(
+ code: json['helm']?.toString() ?? '',
+ title: json['glossary']?.toString() ?? '',
+ credits: (json['greaves'] as num?)?.toInt() ?? 0,
+ actualAmount: json['guardian']?.toString() ?? '',
+ originAmount: json['curriculum']?.toString(),
+ discountOff: json['lead']?.toString(),
+ bonus: (json['forge'] as num?)?.toInt() ?? 0,
+ activityId: json['warrior']?.toString(),
+ currency: json['familiar']?.toString(),
+ );
+ }
+
+ /// 显示积分文案,如 "100 Credits"
+ String get creditsDisplay =>
+ credits > 0 ? '${credits.toString().replaceAllMapped(RegExp(r'(\d{1,3})(?=(\d{3})+(?!\d))'), (m) => '${m[1]},')} Credits' : title;
+
+ /// 显示价格文案,如 "¥6" 或 "¥25 Save ¥5"
+ String get priceDisplay {
+ if (actualAmount.isEmpty) return '';
+ if (discountOff != null && discountOff!.isNotEmpty) {
+ return '$actualAmount $discountOff';
+ }
+ if (originAmount != null &&
+ originAmount!.isNotEmpty &&
+ originAmount != actualAmount) {
+ final diff = _diffAmount(originAmount!, actualAmount);
+ return diff.isNotEmpty ? '$actualAmount Save $diff' : actualAmount;
+ }
+ return actualAmount;
+ }
+
+ String _diffAmount(String origin, String actual) {
+ try {
+ final o = double.tryParse(origin.replaceAll(RegExp(r'[^\d.]'), '')) ?? 0;
+ final a = double.tryParse(actual.replaceAll(RegExp(r'[^\d.]'), '')) ?? 0;
+ final d = (o - a).toStringAsFixed(0);
+ final currencySymbol = RegExp(r'^[^\d]+').stringMatch(actual) ?? '';
+ return '$currencySymbol$d';
+ } catch (_) {
+ return '';
+ }
+ }
+}
diff --git a/lib/features/recharge/recharge_screen.dart b/lib/features/recharge/recharge_screen.dart
index 38914ab..0b7ca15 100644
--- a/lib/features/recharge/recharge_screen.dart
+++ b/lib/features/recharge/recharge_screen.dart
@@ -1,16 +1,88 @@
+import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_lucide/flutter_lucide.dart';
+import '../../core/api/services/payment_api.dart';
+import '../../core/auth/auth_service.dart';
import '../../core/theme/app_colors.dart';
import '../../core/user/user_state.dart';
import '../../core/theme/app_spacing.dart';
import '../../core/theme/app_typography.dart';
import '../../shared/widgets/top_nav_bar.dart';
+import 'models/activity_item.dart';
+
/// Recharge screen - matches Pencil tPjdN
-class RechargeScreen extends StatelessWidget {
+/// Tier cards (DC6NS, YRaOG, QlNz6) 对接 getGooglePayActivities / getApplePayActivities
+class RechargeScreen extends StatefulWidget {
const RechargeScreen({super.key});
+ @override
+ State createState() => _RechargeScreenState();
+}
+
+class _RechargeScreenState extends State {
+ List _activities = [];
+ bool _loadingTiers = true;
+ String? _tierError;
+
+ @override
+ void initState() {
+ super.initState();
+ _fetchActivities();
+ }
+
+ Future _fetchActivities() async {
+ setState(() {
+ _loadingTiers = true;
+ _tierError = null;
+ });
+ try {
+ await AuthService.loginComplete;
+ final country = UserState.navigate.value ?? '';
+
+ final res = defaultTargetPlatform == TargetPlatform.iOS
+ ? await PaymentApi.getApplePayActivities(
+ vambrace: country.isEmpty ? null : country,
+ )
+ : await PaymentApi.getGooglePayActivities(
+ vambrace: country.isEmpty ? null : country,
+ );
+ if (!mounted) return;
+ if (res.isSuccess && res.data != null) {
+ final data = res.data as Map?;
+ final summon = data?['summon'] as List? ?? [];
+ final list = summon
+ .whereType