短信配置
短信渠道、签名、模板与发送记录的维护。
短信服务商配置列表
接口地址
text
GET /admin/sms/config/list接口参数说明
无请求参数。
响应示例
json
{
"code": 0,
"msg": "success",
"data": [
{
"id": 1,
"created_at": "2026-09-25T10:00:00+08:00",
"updated_at": "2026-09-25T10:00:00+08:00",
"name": "",
"provider": 1,
"access_key_id": "",
"endpoint": "dysmsapi.aliyuncs.com",
"is_default": 0,
"status": 1,
"remark": ""
}
]
}响应参数说明
| 响应字段 | 类型 | 说明 |
|---|---|---|
data[].id | integer | 主键ID |
data[].created_at | string | 创建时间 |
data[].updated_at | string | 更新时间 |
data[].name | string | 配置名称 |
data[].provider | integer | 服务商 1阿里云 2腾讯云 3短信宝 4 SMS.cn 5云片 |
data[].access_key_id | string | 渠道账号或访问密钥ID(不返回密钥 Secret) |
data[].endpoint | string | 服务地址 |
data[].is_default | integer | 是否默认渠道 0否 1是;默认渠道必须启用且全局唯一 |
data[].status | integer | 状态 1启用 2禁用 |
data[].remark | string | 备注 |
新增/修改短信服务商配置
接口地址
text
POST /admin/sms/config/save接口说明
传 id 为修改,不传为新增;access_key_secret 为空表示不修改原密钥。允许多个渠道启用,但只能有一个默认渠道,默认渠道必须启用。各渠道字段映射见 docs/sms-providers.md。
接口参数说明
| Body 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | integer | 否 | 主键ID,新增时不传 |
name | string | 是 | 配置名称 |
provider | integer | 是 | 服务商 1阿里云 2腾讯云 3短信宝 4 SMS.cn 5云片 |
access_key_id | string | 是 | 阿里云AccessKey ID、腾讯云SDK AppID、短信宝用户名、SMS.cn uid 或云片API Key |
access_key_secret | string | 否 | 阿里云AccessKey Secret、腾讯云Secret Key、短信宝API Key/MD5密码或SMS.cn接口密码;云片无需填写;修改时留空表示不修改 |
endpoint | string | 否 | 服务地址 |
is_default | integer | 否 | 是否默认渠道 0否 1是;允许多个渠道启用,但只能有一个启用的默认渠道 |
status | integer | 是 | 状态 1启用 2禁用 |
remark | string | 否 | 备注 |
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"id": 1,
"created_at": "2026-09-25T10:00:00+08:00",
"updated_at": "2026-09-25T10:00:00+08:00",
"name": "",
"provider": 1,
"access_key_id": "",
"endpoint": "dysmsapi.aliyuncs.com",
"is_default": 0,
"status": 1,
"remark": ""
}
}响应参数说明
| 响应字段 | 类型 | 说明 |
|---|---|---|
id | integer | 主键ID |
created_at | string | 创建时间 |
updated_at | string | 更新时间 |
name | string | 配置名称 |
provider | integer | 服务商 1阿里云 2腾讯云 3短信宝 4 SMS.cn 5云片 |
access_key_id | string | 渠道账号或访问密钥ID(不返回密钥 Secret) |
endpoint | string | 服务地址 |
is_default | integer | 是否默认渠道 0否 1是;默认渠道必须启用且全局唯一 |
status | integer | 状态 1启用 2禁用 |
remark | string | 备注 |
发送短信渠道测试验证码
接口地址
text
POST /admin/sms/config/test接口说明
使用指定配置及其第一条启用签名和验证码模板发送测试短信;管理端显式测试不要求该渠道为默认或启用。同一配置和手机号每分钟只能测试一次,发送结果写入短信发送记录。
接口参数说明
| Body 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
config_id | integer | 是 | 短信配置ID |
mobile | string | 是 | 接收测试验证码的中国大陆手机号 |
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"provider_message_id": ""
}
}响应参数说明
| 响应字段 | 类型 | 说明 |
|---|---|---|
provider_message_id | string | 短信服务商消息ID |
删除短信服务商配置
接口地址
text
POST /admin/sms/config/delete接口参数说明
| Body 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | integer | 是 | 主键ID |
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"code": 0,
"msg": "success",
"data": null
}
}响应参数说明
成功时 data 为 null。
短信签名列表
接口地址
text
GET /admin/sms/signature/list接口参数说明
无请求参数。
响应示例
json
{
"code": 0,
"msg": "success",
"data": [
{
"id": 1,
"created_at": "2026-09-25T10:00:00+08:00",
"updated_at": "2026-09-25T10:00:00+08:00",
"config_id": 0,
"name": "",
"sign_code": "",
"status": 1,
"remark": ""
}
]
}响应参数说明
| 响应字段 | 类型 | 说明 |
|---|---|---|
data[].id | integer | 主键ID |
data[].created_at | string | 创建时间 |
data[].updated_at | string | 更新时间 |
data[].config_id | integer | 所属短信配置ID |
data[].name | string | 签名名称 |
data[].sign_code | string | 平台签名编码 |
data[].status | integer | 状态 1启用 2禁用 |
data[].remark | string | 备注 |
新增/修改短信签名
接口地址
text
POST /admin/sms/signature/save接口参数说明
| Body 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | integer | 否 | 主键ID,新增时不传 |
config_id | integer | 是 | 短信配置ID |
name | string | 是 | 签名名称 |
sign_code | string | 否 | 平台签名编码 |
status | integer | 是 | 状态 1启用 2禁用 |
remark | string | 否 | 备注 |
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"id": 1,
"created_at": "2026-09-25T10:00:00+08:00",
"updated_at": "2026-09-25T10:00:00+08:00",
"config_id": 0,
"name": "",
"sign_code": "",
"status": 1,
"remark": ""
}
}响应参数说明
| 响应字段 | 类型 | 说明 |
|---|---|---|
id | integer | 主键ID |
created_at | string | 创建时间 |
updated_at | string | 更新时间 |
config_id | integer | 所属短信配置ID |
name | string | 签名名称 |
sign_code | string | 平台签名编码 |
status | integer | 状态 1启用 2禁用 |
remark | string | 备注 |
删除短信签名
接口地址
text
POST /admin/sms/signature/delete接口参数说明
| Body 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | integer | 是 | 主键ID |
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"code": 0,
"msg": "success",
"data": null
}
}响应参数说明
成功时 data 为 null。
短信模板列表
接口地址
text
GET /admin/sms/template/list接口参数说明
无请求参数。
响应示例
json
{
"code": 0,
"msg": "success",
"data": [
{
"id": 1,
"created_at": "2026-09-25T10:00:00+08:00",
"updated_at": "2026-09-25T10:00:00+08:00",
"config_id": 0,
"name": "",
"template_code": "SMS_123456789",
"type": 1,
"content": "",
"status": 1,
"remark": ""
}
]
}响应参数说明
| 响应字段 | 类型 | 说明 |
|---|---|---|
data[].id | integer | 主键ID |
data[].created_at | string | 创建时间 |
data[].updated_at | string | 更新时间 |
data[].config_id | integer | 所属短信配置ID |
data[].name | string | 模板名称 |
data[].template_code | string | 平台模板编码 |
data[].type | integer | 模板类型 1验证码 2通知 3营销 |
data[].content | string | 模板内容 |
data[].status | integer | 状态 1启用 2禁用 |
data[].remark | string | 备注 |
新增/修改短信模板
接口地址
text
POST /admin/sms/template/save接口参数说明
| Body 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | integer | 否 | 主键ID,新增时不传 |
config_id | integer | 是 | 短信配置ID |
name | string | 是 | 模板名称 |
template_code | string | 是 | 平台模板编码;短信宝可填写产品ID,云片可留空 |
type | integer | 是 | 模板类型 1验证码 2通知 3营销 |
content | string | 否 | 模板内容 |
status | integer | 是 | 状态 1启用 2禁用 |
remark | string | 否 | 备注 |
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"id": 1,
"created_at": "2026-09-25T10:00:00+08:00",
"updated_at": "2026-09-25T10:00:00+08:00",
"config_id": 0,
"name": "",
"template_code": "SMS_123456789",
"type": 1,
"content": "",
"status": 1,
"remark": ""
}
}响应参数说明
| 响应字段 | 类型 | 说明 |
|---|---|---|
id | integer | 主键ID |
created_at | string | 创建时间 |
updated_at | string | 更新时间 |
config_id | integer | 所属短信配置ID |
name | string | 模板名称 |
template_code | string | 平台模板编码 |
type | integer | 模板类型 1验证码 2通知 3营销 |
content | string | 模板内容 |
status | integer | 状态 1启用 2禁用 |
remark | string | 备注 |
删除短信模板
接口地址
text
POST /admin/sms/template/delete接口参数说明
| Body 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | integer | 是 | 主键ID |
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"code": 0,
"msg": "success",
"data": null
}
}响应参数说明
成功时 data 为 null。
短信发送记录
接口地址
text
GET /admin/sms/log/list接口参数说明
| Query 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
mobile | string | 否 | 手机号 |
status | integer | 否 | 发送状态 1待发送 2成功 3失败 |
page | integer | 否 | 页码,默认 1 |
page_size | integer | 否 | 每页数量,默认 20,最大 100 |
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"list": [
{
"id": 0,
"created_at": "2026-09-25T10:00:00+08:00",
"config_id": 0,
"signature_id": 0,
"template_id": 0,
"mobile": "",
"content": "",
"status": 1,
"provider_message_id": "",
"error_message": "",
"sent_at": "2026-09-25T10:00:00+08:00"
}
],
"total": 0
}
}响应参数说明
| 响应字段 | 类型 | 说明 |
|---|---|---|
list | array<SMSLogItem> | |
list[].id | integer | 主键ID |
list[].created_at | string | 记录创建时间 |
list[].config_id | integer | 短信配置ID |
list[].signature_id | integer | 签名ID |
list[].template_id | integer | 模板ID |
list[].mobile | string | 手机号(脱敏展示,如 138****8001) |
list[].content | string | 发送内容 |
list[].status | integer | 发送状态 1待发送 2成功 3失败 |
list[].provider_message_id | string | 服务商消息ID |
list[].error_message | string | 失败原因 |
list[].sent_at | string | 发送时间 |
total | integer | 数据总数 |