Files
java-10561/docs/QR_CODE_API_USAGE.md
2025-09-06 11:58:18 +08:00

189 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# QR码API使用说明
## 概述
QR码API已经升级为接收JSON格式的请求数据提供更好的类型安全和扩展性。
## API接口说明
### 1. 生成加密二维码
**接口地址:** `POST /api/qr-code/create-encrypted-qr-code`
**请求格式:** JSON
**请求示例:**
```json
{
"data": "用户ID:12345",
"width": 200,
"height": 200,
"expireMinutes": 30,
"businessType": "LOGIN"
}
```
**参数说明:**
- `data` (必填): 要加密的数据
- `width` (可选): 二维码宽度默认200范围50-1000
- `height` (可选): 二维码高度默认200范围50-1000
- `expireMinutes` (可选): 过期时间分钟默认30范围1-1440
- `businessType` (可选): 业务类型
### 2. 解密二维码数据
**接口地址:** `POST /api/qr-code/decrypt-qr-data`
**请求示例:**
```json
{
"token": "abc123def456",
"encryptedData": "encrypted_data_string"
}
```
### 3. 验证并解密二维码内容
**接口地址:** `POST /api/qr-code/verify-and-decrypt-qr`
**请求示例:**
```json
{
"qrContent": "qr_content_string"
}
```
### 4. 验证并解密二维码内容(返回完整结果)
**接口地址:** `POST /api/qr-code/verify-and-decrypt-qr-with-type`
**请求示例:**
```json
{
"qrContent": "qr_content_string"
}
```
### 5. 生成业务加密二维码
**接口地址:** `POST /api/qr-code/create-business-encrypted-qr-code`
**请求示例:**
```json
{
"data": "订单ID:ORDER123",
"businessKey": "store_key_123",
"width": 200,
"height": 200,
"expireMinutes": 30,
"businessType": "ORDER"
}
```
### 6. 门店核销二维码
**接口地址:** `POST /api/qr-code/verify-business-qr`
**请求示例:**
```json
{
"qrContent": "qr_content_string",
"businessKey": "store_key_123"
}
```
### 7. 使token失效
**接口地址:** `POST /api/qr-code/invalidate-token`
**请求示例:**
```json
{
"token": "abc123def456"
}
```
## GET接口保持不变
以下GET接口保持原有的@RequestParam方式
### 生成普通二维码
`GET /api/qr-code/create-qr-code?data=要编码的数据&size=200x200`
### 生成加密二维码图片流
`GET /api/qr-code/create-encrypted-qr-image?data=要加密的数据&size=200x200&expireMinutes=30&businessType=LOGIN`
**参数说明:**
- `data` (必填): 要加密的数据
- `size` (可选): 二维码尺寸格式宽x高默认200x200
- `expireMinutes` (可选): 过期时间分钟默认30
- `businessType` (可选): 业务类型如LOGIN、ORDER等
### 检查token是否有效
`GET /api/qr-code/check-token?token=abc123def456`
## 错误处理
API现在包含完整的参数验证会返回具体的错误信息
**验证失败示例:**
```json
{
"code": 500,
"message": "数据不能为空",
"data": null
}
```
**常见验证错误:**
- "数据不能为空"
- "宽度不能小于50像素"
- "宽度不能大于1000像素"
- "过期时间不能小于1分钟"
- "过期时间不能大于1440分钟"
- "token不能为空"
- "业务密钥不能为空"
## 前端调用示例
### JavaScript/Axios
```javascript
// 生成加密二维码
const response = await axios.post('/api/qr-code/create-encrypted-qr-code', {
data: '用户ID:12345',
width: 200,
height: 200,
expireMinutes: 30,
businessType: 'LOGIN'
});
console.log(response.data);
```
### jQuery
```javascript
$.ajax({
url: '/api/qr-code/create-encrypted-qr-code',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({
data: '用户ID:12345',
width: 200,
height: 200,
expireMinutes: 30,
businessType: 'LOGIN'
}),
success: function(response) {
console.log(response);
}
});
```
## 升级说明
1. **向下兼容性:** GET接口保持不变现有的GET请求不受影响
2. **类型安全:** JSON格式提供更好的类型检查和验证
3. **扩展性:** 新的DTO结构便于后续添加新字段
4. **错误处理:** 提供更详细和友好的错误信息
5. **功能增强:** `create-encrypted-qr-image`接口现在支持`businessType`参数