diff --git a/common/request.js b/common/request.js
index 290d385..f5952e3 100644
--- a/common/request.js
+++ b/common/request.js
@@ -5,7 +5,7 @@
import EnvConfig from '@/common/env.js'
import md5 from 'js-md5'
-
+import CryptoJS from 'crypto-js';
import { apiWhiteList } from '@/common/config.js'
import RouterManager from '@/common/router.js'
import { platform } from '@/common/platform/PlatformFactory'
@@ -193,10 +193,9 @@ class RequestManager {
header = {
'content-type': 'application/x-www-form-urlencoded',
- client: client,
+ platform: client,
token: token,
- adid: uni.getStorageSync('_ad_id'),
- clickid: uni.getStorageSync('_click_id')
+ version: "1.0.0"
}
} else {
// GET请求,添加签名
@@ -229,7 +228,8 @@ class RequestManager {
header = {
'content-type': 'application/json',
token: token,
- client: client,
+ platform: client,
+ version: "1.0.0"
}
}
@@ -247,6 +247,7 @@ class RequestManager {
header: header,
data: data,
success: res => {
+ res = RequestManager.normalizeResponseKeys(res);
console.log("res.data.status", res.data.status)
var pages = getCurrentPages()
if (res.data.status == 1) {
@@ -396,6 +397,72 @@ class RequestManager {
Loading: !showLoading
})
}
+ /**
+ * 转换接口返回的字段名为统一结构
+ * 支持安卓特有字段 => 通用字段
+ *
+ * @param {Object} res 接口返回的数据对象
+ * @returns {Object} 处理后的对象(直接修改原对象)
+ */
+ static normalizeResponseKeys(res) {
+ if (!res || typeof res !== 'object') return res;
+
+ // 安全处理 res.data
+ if (!res.data || typeof res.data !== 'object') {
+ res.data = {};
+ }
+
+ // 将安卓专属字段映射为通用字段
+ if (res.data.ret != null) {
+ res.data.status = res.data.ret;
+ }
+
+ if (res.data.note != null) {
+ res.data.msg = res.data.note;
+ }
+
+ // 解密 payload 字段(如果存在)
+ if (res.data.payload != null && typeof res.data.payload === 'string') {
+ try {
+ const base64EncryptedData = res.data.payload;
+
+ // 先 base64 解码(CryptoJS 需要的是 WordArray)
+ const encryptedHexStr = CryptoJS.enc.Base64.parse(base64EncryptedData);
+
+ // 解密 key 和 iv
+ const secretKey = 'g6R@9!zB2fL#1cVm';
+ const key = CryptoJS.enc.Utf8.parse(secretKey);
+ const iv = CryptoJS.enc.Utf8.parse(CryptoJS.MD5(secretKey).toString().substring(0, 16));
+
+ // 进行解密
+ const decrypted = CryptoJS.AES.decrypt(
+ { ciphertext: encryptedHexStr },
+ key,
+ {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ }
+ );
+
+ const decryptedText = decrypted.toString(CryptoJS.enc.Utf8);
+ try {
+ res.data.data = JSON.parse(decryptedText);
+ } catch (e) {
+ res.data.data = decryptedText;
+ }
+ } catch (e) {
+ console.error('解密 payload 失败:', res.data.payload, e);
+ res.data.data = null; // 解密失败时给 null 或原值
+ }
+ }
+
+ if (res.data.ts != null) {
+ res.data.timestamp = res.data.ts;
+ }
+
+ return res;
+ }
}
export default RequestManager;
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 36a4d40..7406faf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,6 +6,7 @@
"": {
"dependencies": {
"@lucky-canvas/uni": "^0.0.14",
+ "crypto-js": "^4.2.0",
"eruda": "^3.4.1",
"js-md5": "^0.8.3",
"uqrcodejs": "^4.0.7"
@@ -19,6 +20,12 @@
"lucky-canvas": "~1.7.19"
}
},
+ "node_modules/crypto-js": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
+ "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
+ "license": "MIT"
+ },
"node_modules/eruda": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/eruda/-/eruda-3.4.1.tgz",
diff --git a/package.json b/package.json
index 5302444..9b553e7 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,7 @@
{
"dependencies": {
"@lucky-canvas/uni": "^0.0.14",
+ "crypto-js": "^4.2.0",
"eruda": "^3.4.1",
"js-md5": "^0.8.3",
"uqrcodejs": "^4.0.7"
diff --git a/pages/guize/guize.vue b/pages/guize/guize.vue
index b2743f6..743a16c 100644
--- a/pages/guize/guize.vue
+++ b/pages/guize/guize.vue
@@ -1,119 +1,302 @@
+
-
+
+
+
+
+
+ 这段内容永远不会显示
+
+ {{ item }}
+
+
+
+
+
+
+ 隐藏内容
+
+
+
+
+
+
+
+ 这永远不会显示
+ 随机隐藏(实际总是隐藏)
\ No newline at end of file