优化Token验证接口

This commit is contained in:
2026-05-06 10:18:26 +08:00
parent 05f2d6f084
commit 04680408e6
11 changed files with 59 additions and 31 deletions

View File

@@ -297,12 +297,14 @@ curl -X POST 'https://{商城域名}/api/v1/mall/dailyPush' \
### 5.1 `POST /api/v1/mall/verifyToken`
**用途**:把 playX token 换成商城 `session_id`
**语言 `lang`(响应 `msg` 等多语言)**
- **默认中文**`zh-cn`)。
- 可通过 **请求头 `lang`**、**Query `lang`** 或 **表单/JSON 字段 `lang`** 指定:`zh` / `ZH` / `zh-cn` → 中文,`en` / `EN` → 英文(与 `LoadLangPack` 规则一致)。
**前端入参约定(重要)**
- 前端/客户端调用本接口时,**只需要传 `token`**(或兼容 `session`)。
- 商城后端调用 playX 校验时:
- **`PLAYX_TOKEN_VERIFY_URL` 为完整 `https://` URL**(回调网关):**`X-Request-Signature` 生成方式与 angpow-imports`PLAYX_ANGPOW_IMPORT_PATH`)一致**`HMAC-SHA1``Base64`,密钥 `PLAYX_ANGPOW_IMPORT_AUTH_KEY`Body 含 **`merchant_code``report_date``request_id``token`**canonical 为 `merchant_code=...&report_date=...&request_id=...&token=...`
- 若为**相对路径**:后端会拼 **`PLAYX_ANGPOW_IMPORT_BASE_URL`**Body 使用 **`request_date`**,并生成 **`merchant_code` / `request_date` / `request_id` / `X-Request-Signature`** 等,前端仍不参与签名。
- 若仅传 `token` 仍校验失败,多为 token 无效/过期或上游 URL 未放通,并非前端少传字段。
- 调用本接口时 **仅需 `token`**(或兼容 `session`**不要**传 `request_id` / `request_date` / 商户字段(均由商城后端生成后请求上游)
- 建议 **`Content-Type: application/json`**Body`{"token":"..."}`。若使用 **form-data**(如图二),请同样只传 `token`(及可选 `lang`);避免缺少 `token` 键名。
- 商城请求上游回调地址时Body 为 **`request_id``request_date``token`**`X-Request-Signature` 与 angpow-imports 同源canonical 为 `merchant_code=...&request_date=...&request_id=...&token=...``merchant_code` 来自配置,仅用于签名)
**请求示例:**
```json
@@ -311,6 +313,15 @@ curl -X POST 'https://{商城域名}/api/v1/mall/dailyPush' \
}
```
带英文响应示例Query
```http
POST /api/v1/mall/verifyToken?lang=en
Content-Type: application/json
{"token":"eyJhbGciOi..."}
```
**成功响应示例:**
```json
{
@@ -633,9 +644,9 @@ GET /api/v1/mall/addressList?session_id=fc7f3e3f0d0f4cb29f66e4c8fbab4f66
| `PLAYX_DAILY_PUSH_SECRET` | 非空则 Daily Push 必须带合法 HMAC 头 |
| `PLAYX_VERIFY_TOKEN_LOCAL_ONLY` | 为 true 时 verifyToken 不请求 playX 远程 |
| `PLAYX_ANGPOW_IMPORT_BASE_URL` | Angpow 推送等接口基地址;**相对路径** `verify-token` 时亦作其基地址 |
| `PLAYX_TOKEN_VERIFY_URL` | **完整 `https://` URL**:回调校验,签名与 angpow-imports 同源;**相对路径**:拼基地址 + `request_date` 商户体 |
| `PLAYX_ANGPOW_MERCHANT_CODE` | 回调与相对路径 `verify-token` 均需 |
| `PLAYX_ANGPOW_IMPORT_AUTH_KEY` | 回调与相对路径 `verify-token` 的 HMAC 密钥(与 angpow-imports 相同) |
| `PLAYX_TOKEN_VERIFY_URL` | **完整 `https://` URL**:回调 Body 为 `request_id`/`request_date`/`token`,签名 canonical 含配置项 `merchant_code`**相对路径**:拼基地址 + 商户四字段 |
| `PLAYX_ANGPOW_MERCHANT_CODE` | 回调仅写入签名字符串;相对路径同时进 Body |
| `PLAYX_ANGPOW_IMPORT_AUTH_KEY` | 回调与相对路径的 HMAC 密钥(与 angpow-imports 相同) |
---