You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.0 KiB
4.0 KiB
QR码API使用说明
概述
QR码API已经升级为接收JSON格式的请求数据,提供更好的类型安全和扩展性。
API接口说明
1. 生成加密二维码
接口地址: POST /api/qr-code/create-encrypted-qr-code
请求格式: JSON
请求示例:
{
"data": "用户ID:12345",
"width": 200,
"height": 200,
"expireMinutes": 30,
"businessType": "LOGIN"
}
参数说明:
data
(必填): 要加密的数据width
(可选): 二维码宽度,默认200,范围50-1000height
(可选): 二维码高度,默认200,范围50-1000expireMinutes
(可选): 过期时间(分钟),默认30,范围1-1440businessType
(可选): 业务类型
2. 解密二维码数据
接口地址: POST /api/qr-code/decrypt-qr-data
请求示例:
{
"token": "abc123def456",
"encryptedData": "encrypted_data_string"
}
3. 验证并解密二维码内容
接口地址: POST /api/qr-code/verify-and-decrypt-qr
请求示例:
{
"qrContent": "qr_content_string"
}
4. 验证并解密二维码内容(返回完整结果)
接口地址: POST /api/qr-code/verify-and-decrypt-qr-with-type
请求示例:
{
"qrContent": "qr_content_string"
}
5. 生成业务加密二维码
接口地址: POST /api/qr-code/create-business-encrypted-qr-code
请求示例:
{
"data": "订单ID:ORDER123",
"businessKey": "store_key_123",
"width": 200,
"height": 200,
"expireMinutes": 30,
"businessType": "ORDER"
}
6. 门店核销二维码
接口地址: POST /api/qr-code/verify-business-qr
请求示例:
{
"qrContent": "qr_content_string",
"businessKey": "store_key_123"
}
7. 使token失效
接口地址: POST /api/qr-code/invalidate-token
请求示例:
{
"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高,默认200x200expireMinutes
(可选): 过期时间(分钟),默认30businessType
(可选): 业务类型,如LOGIN、ORDER等
检查token是否有效
GET /api/qr-code/check-token?token=abc123def456
错误处理
API现在包含完整的参数验证,会返回具体的错误信息:
验证失败示例:
{
"code": 500,
"message": "数据不能为空",
"data": null
}
常见验证错误:
- "数据不能为空"
- "宽度不能小于50像素"
- "宽度不能大于1000像素"
- "过期时间不能小于1分钟"
- "过期时间不能大于1440分钟"
- "token不能为空"
- "业务密钥不能为空"
前端调用示例
JavaScript/Axios
// 生成加密二维码
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
$.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);
}
});
升级说明
- 向下兼容性: GET接口保持不变,现有的GET请求不受影响
- 类型安全: JSON格式提供更好的类型检查和验证
- 扩展性: 新的DTO结构便于后续添加新字段
- 错误处理: 提供更详细和友好的错误信息
- 功能增强:
create-encrypted-qr-image
接口现在支持businessType
参数