|
@@ -1,8 +1,8 @@
|
|
|
# 第三方登录接口文档
|
|
# 第三方登录接口文档
|
|
|
|
|
|
|
|
-> 版本:V1.5
|
|
|
|
|
-> 更新日期:2026-07-09
|
|
|
|
|
-> 变更说明:新增 openId、unionId 参数,第三方可传入小程序 openId/unionId 保存到用户表,后续支付等场景无需重复授权
|
|
|
|
|
|
|
+> 版本:V1.6
|
|
|
|
|
+> 更新日期:2026-07-10
|
|
|
|
|
+> 变更说明:`licenseApproved`(Boolean)改为 `status`(Integer:0-审核中 / 1-审核成功 / 2-审核失败),支持审核失败状态;调用第三方同步接口同步传 `status`
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
|
@@ -16,7 +16,7 @@
|
|
|
- 支持第三方传入入驻信息(资质图片URL等),同步写入 `t_business_license`,免去额外调用入驻接口
|
|
- 支持第三方传入入驻信息(资质图片URL等),同步写入 `t_business_license`,免去额外调用入驻接口
|
|
|
- 不递增 `tokenVersion`,不踢出 PC 端已有会话
|
|
- 不递增 `tokenVersion`,不踢出 PC 端已有会话
|
|
|
- 新用户自动初始化 **PLUS 会员(普通会员)**
|
|
- 新用户自动初始化 **PLUS 会员(普通会员)**
|
|
|
-- 第三方已审核用户(`licenseApproved=true`)自动赠送 **30 天 PRO 高级会员**
|
|
|
|
|
|
|
+- 第三方已审核用户(`status=1`)自动赠送 **30 天 PRO 高级会员**
|
|
|
- 支持传入小程序 `openId` / `unionId`,一次性保存后后续支付等场景直接从用户表读取,**无需重复授权**
|
|
- 支持传入小程序 `openId` / `unionId`,一次性保存后后续支付等场景直接从用户表读取,**无需重复授权**
|
|
|
|
|
|
|
|
---
|
|
---
|
|
@@ -93,16 +93,18 @@ X-Api-Key: {我方提供的API Key}
|
|
|
| `drugLicenseUrl` | String | 否 | 药品经营许可证图片URL | `drug_license_url` |
|
|
| `drugLicenseUrl` | String | 否 | 药品经营许可证图片URL | `drug_license_url` |
|
|
|
| `medicalDeviceClass2Url` | String | 否 | 二类医疗器械备案图片URL | `medical_device_class2_url` |
|
|
| `medicalDeviceClass2Url` | String | 否 | 二类医疗器械备案图片URL | `medical_device_class2_url` |
|
|
|
| `medicalDeviceClass3Url` | String | 否 | 三类医疗器械备案图片URL | `medical_device_class3_url` |
|
|
| `medicalDeviceClass3Url` | String | 否 | 三类医疗器械备案图片URL | `medical_device_class3_url` |
|
|
|
-| `licenseApproved` | Boolean | 否 | **审核状态标记**。`true` = 第三方已审核通过,无需我方再次审核,直接设为 APPROVED 并赠送 30 天高级会员;不传/false = 待审核 PENDING | — |
|
|
|
|
|
|
|
+| `status` | Integer | 否 | **审核状态**:`0`-审核中 / `1`-审核成功 / `2`-审核失败(不传默认`0`)。`1` = 第三方已审核通过,无需我方再次审核,直接设为 APPROVED 并赠送 30 天高级会员 | — |
|
|
|
|
|
|
|
|
> 💡 **审核状态说明**:
|
|
> 💡 **审核状态说明**:
|
|
|
-> - 如果第三方系统已完成资质审核,传 `licenseApproved: true`,我方将直接标记为"审核通过"并赠送 30 天 PRO 高级会员
|
|
|
|
|
-> - 如果第三方尚未审核或不确定,不传该字段(默认 `PENDING`),由我方运营审核
|
|
|
|
|
|
|
+> - 如果第三方系统已完成资质审核,传 `status: 1`,我方将直接标记为"审核通过"并赠送 30 天 PRO 高级会员
|
|
|
|
|
+> - 如果第三方审核失败,传 `status: 2`,我方将标记为"审核失败"
|
|
|
|
|
+> - 如果第三方尚未审核或不确定,传 `status: 0` 或不传(默认 `PENDING`),由我方运营审核
|
|
|
> - 已审核通过的入驻记录不会因后续调用而降级
|
|
> - 已审核通过的入驻记录不会因后续调用而降级
|
|
|
> - 只要请求中包含任一入驻信息字段(storeName / terminalType / businessLicenseUrl / drugLicenseUrl / medicalDeviceClass2Url / medicalDeviceClass3Url),即自动写入 `t_business_license` 表
|
|
> - 只要请求中包含任一入驻信息字段(storeName / terminalType / businessLicenseUrl / drugLicenseUrl / medicalDeviceClass2Url / medicalDeviceClass3Url),即自动写入 `t_business_license` 表
|
|
|
-> - `licenseApproved=true`:审核状态设为 `APPROVED`(审核通过),首次通过赠送 30 天 PRO 高级会员
|
|
|
|
|
-> - 未传 `licenseApproved` 或 `false`:审核状态设为 `PENDING`(待运营审核)
|
|
|
|
|
-> - 已存在入驻记录:已 APPROVED 状态不降级,PENDING/REJECTED 状态可随 `licenseApproved=true` 升级
|
|
|
|
|
|
|
+> - `status=1`:审核状态设为 `APPROVED`(审核通过),首次通过赠送 30 天 PRO 高级会员
|
|
|
|
|
+> - `status=0` 或不传:审核状态设为 `PENDING`(待运营审核)
|
|
|
|
|
+> - `status=2`:审核状态设为 `REJECTED`(审核失败)
|
|
|
|
|
+> - 已存在入驻记录:已 APPROVED 状态不降级,PENDING/REJECTED 状态可随 `status` 更新(含互转、升级到 APPROVED)
|
|
|
> - 省/市/区/地址/联系人/电话等字段会自动从用户信息字段中提取填入
|
|
> - 省/市/区/地址/联系人/电话等字段会自动从用户信息字段中提取填入
|
|
|
>
|
|
>
|
|
|
> 💡 **字段更新规则**:
|
|
> 💡 **字段更新规则**:
|
|
@@ -147,7 +149,7 @@ X-Api-Key: {我方提供的API Key}
|
|
|
"drugLicenseUrl": "https://oss.example.com/ypjy.jpg",
|
|
"drugLicenseUrl": "https://oss.example.com/ypjy.jpg",
|
|
|
"medicalDeviceClass2Url": "https://oss.example.com/elqx.jpg",
|
|
"medicalDeviceClass2Url": "https://oss.example.com/elqx.jpg",
|
|
|
"medicalDeviceClass3Url": "https://oss.example.com/slqx.jpg",
|
|
"medicalDeviceClass3Url": "https://oss.example.com/slqx.jpg",
|
|
|
- "licenseApproved": true
|
|
|
|
|
|
|
+ "status": 1
|
|
|
}
|
|
}
|
|
|
```
|
|
```
|
|
|
|
|
|
|
@@ -307,7 +309,7 @@ Authorization: Bearer {currentAccessToken}
|
|
|
| 7 | 用户信息字段(username、药店信息等)每次调用都会同步更新,建议传入最新数据 |
|
|
| 7 | 用户信息字段(username、药店信息等)每次调用都会同步更新,建议传入最新数据 |
|
|
|
| 8 | `username` 会保存到我方的 `nickname` 字段,不需要额外维护用户名表 |
|
|
| 8 | `username` 会保存到我方的 `nickname` 字段,不需要额外维护用户名表 |
|
|
|
| 9 | 传入入驻信息字段后自动创建/更新入驻记录,无需再调用 `/api/business-license/upload` |
|
|
| 9 | 传入入驻信息字段后自动创建/更新入驻记录,无需再调用 `/api/business-license/upload` |
|
|
|
-| 10 | `licenseApproved=true` 时入驻状态直接审核通过,首次通过赠送 **30 天 PRO 高级会员** |
|
|
|
|
|
|
|
+| 10 | `status=1` 时入驻状态直接审核通过,首次通过赠送 **30 天 PRO 高级会员** |
|
|
|
| 11 | 已审核通过的入驻记录(APPROVED)不会因后续调用而降级 |
|
|
| 11 | 已审核通过的入驻记录(APPROVED)不会因后续调用而降级 |
|
|
|
| 12 | 传入 `openId`/`unionId` 后,小程序支付无需再次 `wx.login` 授权,后端直接从 `t_user.wechat_mini_open_id` 读取 |
|
|
| 12 | 传入 `openId`/`unionId` 后,小程序支付无需再次 `wx.login` 授权,后端直接从 `t_user.wechat_mini_open_id` 读取 |
|
|
|
|
|
|
|
@@ -338,7 +340,7 @@ curl -X POST "https://your-domain.com/api/auth/external/miniapp-token" \
|
|
|
"terminalType": "1",
|
|
"terminalType": "1",
|
|
|
"businessLicenseUrl": "https://oss.example.com/yyzz.jpg",
|
|
"businessLicenseUrl": "https://oss.example.com/yyzz.jpg",
|
|
|
"drugLicenseUrl": "https://oss.example.com/ypjy.jpg",
|
|
"drugLicenseUrl": "https://oss.example.com/ypjy.jpg",
|
|
|
- "licenseApproved": true
|
|
|
|
|
|
|
+ "status": 1
|
|
|
}'
|
|
}'
|
|
|
```
|
|
```
|
|
|
|
|
|
|
@@ -364,7 +366,7 @@ String json = "{"
|
|
|
+ "\"terminalType\": \"1\","
|
|
+ "\"terminalType\": \"1\","
|
|
|
+ "\"businessLicenseUrl\": \"https://oss.example.com/yyzz.jpg\","
|
|
+ "\"businessLicenseUrl\": \"https://oss.example.com/yyzz.jpg\","
|
|
|
+ "\"drugLicenseUrl\": \"https://oss.example.com/ypjy.jpg\","
|
|
+ "\"drugLicenseUrl\": \"https://oss.example.com/ypjy.jpg\","
|
|
|
- + "\"licenseApproved\": true"
|
|
|
|
|
|
|
+ + "\"status\": 1"
|
|
|
+ "}";
|
|
+ "}";
|
|
|
|
|
|
|
|
RequestBody body = RequestBody.create(json, MediaType.parse("application/json"));
|
|
RequestBody body = RequestBody.create(json, MediaType.parse("application/json"));
|
|
@@ -407,7 +409,7 @@ data = {
|
|
|
"terminalType": "1",
|
|
"terminalType": "1",
|
|
|
"businessLicenseUrl": "https://oss.example.com/yyzz.jpg",
|
|
"businessLicenseUrl": "https://oss.example.com/yyzz.jpg",
|
|
|
"drugLicenseUrl": "https://oss.example.com/ypjy.jpg",
|
|
"drugLicenseUrl": "https://oss.example.com/ypjy.jpg",
|
|
|
- "licenseApproved": True
|
|
|
|
|
|
|
+ "status": 1
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
response = requests.post(url, json=data, headers=headers)
|
|
response = requests.post(url, json=data, headers=headers)
|
|
@@ -448,13 +450,13 @@ print(response.json())
|
|
|
| `drugLicenseUrl` | `drug_license_url` | `drugLicenseUrl` | 药品经营许可证图片URL |
|
|
| `drugLicenseUrl` | `drug_license_url` | `drugLicenseUrl` | 药品经营许可证图片URL |
|
|
|
| `medicalDeviceClass2Url` | `medical_device_class2_url` | `medicalDeviceClass2Url` | 二类医疗器械备案图片URL |
|
|
| `medicalDeviceClass2Url` | `medical_device_class2_url` | `medicalDeviceClass2Url` | 二类医疗器械备案图片URL |
|
|
|
| `medicalDeviceClass3Url` | `medical_device_class3_url` | `medicalDeviceClass3Url` | 三类医疗器械备案图片URL |
|
|
| `medicalDeviceClass3Url` | `medical_device_class3_url` | `medicalDeviceClass3Url` | 三类医疗器械备案图片URL |
|
|
|
-| `licenseApproved` | `review_status` | `reviewStatus` | 审核状态标记,`true` → APPROVED / `false` → PENDING |
|
|
|
|
|
|
|
+| `status` | `review_status` | `reviewStatus` | 审核状态:`0`→PENDING / `1`→APPROVED / `2`→REJECTED |
|
|
|
|
|
|
|
|
> 💡 入驻记录保存时,以下字段由系统自动填入(无需第三方传入):
|
|
> 💡 入驻记录保存时,以下字段由系统自动填入(无需第三方传入):
|
|
|
> - `store_address` ← 从 `pharmacyAddress` 提取
|
|
> - `store_address` ← 从 `pharmacyAddress` 提取
|
|
|
> - `credit_code` ← 从 `businessLicenseNo` 提取
|
|
> - `credit_code` ← 从 `businessLicenseNo` 提取
|
|
|
> - `sync_source` ← 固定为 `MINIAPP_SYNC`
|
|
> - `sync_source` ← 固定为 `MINIAPP_SYNC`
|
|
|
-> - `review_status` ← 取决于 `licenseApproved`:`true` → `APPROVED`,`false`/不传 → `PENDING`
|
|
|
|
|
|
|
+> - `review_status` ← 取决于 `status`:`1` → `APPROVED`,`2` → `REJECTED`,`0`/不传 → `PENDING`
|
|
|
> - `show_verified_badge` ← 首次审核通过时设为 `true`
|
|
> - `show_verified_badge` ← 首次审核通过时设为 `true`
|
|
|
|
|
|
|
|
---
|
|
---
|
|
@@ -474,4 +476,5 @@ print(response.json())
|
|
|
| V1.2 | 2026-07-09 | 新增入驻信息字段(storeName / terminalType / businessLicenseUrl / drugLicenseUrl / medicalDeviceClass2Url / medicalDeviceClass3Url),传入后同步写入 t_business_license,无需额外调用入驻接口 |
|
|
| V1.2 | 2026-07-09 | 新增入驻信息字段(storeName / terminalType / businessLicenseUrl / drugLicenseUrl / medicalDeviceClass2Url / medicalDeviceClass3Url),传入后同步写入 t_business_license,无需额外调用入驻接口 |
|
|
|
| V1.3 | 2026-07-09 | 新增 `licenseApproved` 参数支持第三方已审核入驻状态直通;审核通过自动赠送 30 天 PRO 高级会员;已 APPROVED 状态不降级;响应新增 `licenseStatus` 字段 |
|
|
| V1.3 | 2026-07-09 | 新增 `licenseApproved` 参数支持第三方已审核入驻状态直通;审核通过自动赠送 30 天 PRO 高级会员;已 APPROVED 状态不降级;响应新增 `licenseStatus` 字段 |
|
|
|
| V1.4 | 2026-07-09 | 响应 userInfo 补全完整返回字段(userName、pharmacyName、province、city、district、inviterId、inviterNickname、hasBoundInviteCode);修正 nickname 优先级描述(nickname > username) |
|
|
| V1.4 | 2026-07-09 | 响应 userInfo 补全完整返回字段(userName、pharmacyName、province、city、district、inviterId、inviterNickname、hasBoundInviteCode);修正 nickname 优先级描述(nickname > username) |
|
|
|
-| V1.5 | 2026-07-09 | 新增 `openId`、`unionId` 参数,第三方传入后保存到 `wechat_mini_open_id` / `wechat_union_id`;后续小程序支付等场景直接从用户表读取,无需重复 wx.login 授权
|
|
|
|
|
|
|
+| V1.5 | 2026-07-09 | 新增 `openId`、`unionId` 参数,第三方传入后保存到 `wechat_mini_open_id` / `wechat_union_id`;后续小程序支付等场景直接从用户表读取,无需重复 wx.login 授权
|
|
|
|
|
+| V1.6 | 2026-07-10 | `licenseApproved`(Boolean)改为 `status`(Integer:`0`-审核中 / `1`-审核成功 / `2`-审核失败),支持审核失败状态;已 APPROVED 不降级,PENDING/REJECTED 可随 `status` 互转或升级;调用第三方同步接口同步传 `status` |
|