优化Token验证接口
This commit is contained in:
@@ -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 相同) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user