feat(payment): 支持 URL 参数直接传递 JWT 登录
This commit is contained in:
48
AGENTS.md
48
AGENTS.md
@@ -284,6 +284,15 @@ created_at TIMESTAMPTZ(创建时间)
|
||||
| `PUT /api/admin/users/{id}/payment` | 更新用户支付状态 |
|
||||
| `GET /api/admin/users/{id}` | 获取用户信息 |
|
||||
|
||||
### 登录码接口(网页授权)
|
||||
|
||||
| 接口 | 说明 |
|
||||
|------|------|
|
||||
| `POST /api/web-login/code` | 小程序用微信 code 换取 display_code |
|
||||
| `POST /api/web-login/confirm` | 小程序确认登录(需 JWT + code) |
|
||||
| `GET /payment/generate-code` | 网页端生成登录码(已废弃,不建议使用) |
|
||||
| `GET /payment/login-status` | 网页端轮询登录状态 |
|
||||
|
||||
### 支付接口
|
||||
|
||||
| 接口 | 说明 |
|
||||
@@ -436,25 +445,36 @@ ORDER BY "desc"
|
||||
|
||||
## 支付系统
|
||||
|
||||
### 支付流程(真实支付宝)
|
||||
### 支付流程(登录码授权模式)
|
||||
|
||||
小程序内无法直接接入支付宝支付,采用以下方案:
|
||||
小程序内无法直接接入支付宝支付,采用外部浏览器中转方案:
|
||||
|
||||
```
|
||||
小程序 → outter页面 → 外部浏览器 → /payment?jwt=xxx
|
||||
小程序(升级页) → outter页面 → 外部浏览器 → /payment?code=xxx → 支付宝
|
||||
```
|
||||
|
||||
1. 用户在小程序选择套餐 → 点击「立即开通」
|
||||
2. 小程序调用 `POST /api/payment/create-order` 创建订单(需 JWT)
|
||||
3. 小程序跳转 `outter` 页面,URL 指向 `/payment?jwt=xxx&package=xxx`(outter 页面复制链接到剪贴板)
|
||||
4. 用户切换到外部浏览器,打开 `/payment?jwt=xxx`
|
||||
5. 后端验证 JWT,返回套餐选择页(已携带 package 参数则预选套餐)
|
||||
6. 用户选择套餐,点击「去支付」→ 跳转到 `/payment/pay?order_no=xxx&package_type=xxx`
|
||||
7. 后端调用 `alipay.trade.page.pay` API,生成支付表单或跳转 URL
|
||||
8. 支付宝沙箱/正式环境支付页面展示
|
||||
9. 支付完成后,支付宝异步通知 `/payment/notify`
|
||||
10. 后端验证签名,确认订单状态
|
||||
11. 跳转成功页 `/payment/success?order_no=xxx`
|
||||
1. 用户在小程序升级页点击「输入登录码」
|
||||
2. 小程序获取微信 code,换取 display_code
|
||||
3. 小程序自动调用 `POST /api/web-login/confirm` 确认登录(无需用户操作)
|
||||
4. 小程序跳转 `outter` 页面,URL 指向 `/payment?code=xxx`
|
||||
5. outter 页面提示用户在外部浏览器打开
|
||||
6. 用户在手机浏览器打开 `/payment?code=xxx`
|
||||
7. 网页轮询 `/payment/login-status?code=xxx`,检测到已确认后自动登录
|
||||
8. 显示套餐选择页
|
||||
9. 用户选择套餐,点击「去支付」→ 跳转到 `/payment/page?package=xxx&jwt=xxx`
|
||||
10. 后端调用 `alipay.trade.page.pay` API,返回支付跳转
|
||||
11. 支付宝沙箱/正式环境展示支付页面
|
||||
12. 支付完成后,支付宝异步通知 `/payment/notify`
|
||||
13. 跳转成功页 `/payment/success?order_no=xxx`
|
||||
|
||||
### 登录码相关接口
|
||||
|
||||
| 接口 | 说明 |
|
||||
|------|------|
|
||||
| `POST /api/web-login/code` | 小程序用微信 code 换取 display_code |
|
||||
| `POST /api/web-login/confirm` | 小程序确认登录(需 JWT + code) |
|
||||
| `GET /payment/generate-code` | 网页端生成登录码(已废弃,不建议使用) |
|
||||
| `GET /payment/login-status` | 网页端轮询登录状态(返回 token 表示已确认) |
|
||||
|
||||
### Mock 登录(沙箱测试)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user