Appearance
短信宝协议接口
短信宝协议兼容短信宝(smsbao)网关的请求格式,使用系统用户名 + SysKey 鉴权,适合对接已支持短信宝通道的第三方系统(如各类建站程序、Discuz、WHMCS 插件等)。
请求方式
- 支持 GET 和 POST(POST 也支持 JSON 请求体)。
- 只要请求中同时带有
u、p、m、c四个参数,即按短信宝协议处理(优先级最高)。
响应格式不同
短信宝协议返回的是 text/plain 纯文本状态码(如 0、30、40),不是 JSON。请勿按 JSON 解析。
请求 URL
http
GET /?u=用户名&p=sk_xxx&m=13800138000&c=【签名】您的验证码为123456,请不要告诉其他人哟!参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
u | 是 | 系统用户名(登录短信面板的用户名)。 |
p | 是 | 该用户的 SysKey(在短信后台获取)。 |
m | 是 | 11 位手机号码。 |
c | 是 | 带签名的完整短信正文,必须以 【签名】 或 [签名] 开头。支持一次或两次 URL 编码。 |
正文与模板匹配规则
系统会从正文 c 中解析签名和正文内容,再自动匹配发送模板:
- 验证码正文:正文为
您的验证码为{数字},请不要告诉其他人哟!时,使用系统内置验证码模板(SMS_500650100)发送,无需提前申请模板。 - 其他正文:自动与你在后台已审核通过的模板逐一匹配,正文中的变量部分按模板占位符
{变量}的位置自动还原为模板参数。匹配失败返回InvalidTemplate。
签名要求
- 正文开头的
【签名】必须与解析出的 106 签名完全一致:- 会员用户:需与管理员为你配置的签名前缀一致。
- 免费用户:只能使用系统默认签名,填写其他签名返回
InvalidSignName。
返回码(纯文本)
| 返回值 | HTTP 状态码 | 说明 |
|---|---|---|
0 | 200 | 发送成功。 |
-1 | 400/403/500 | 参数缺失、IP 不在白名单或服务器内部错误。 |
30 | 401 | 用户名或 SysKey 错误(鉴权失败)。 |
40 | 429 | 短信包余额不足。 |
41 | 429 | 超过速率限制。 |
43 | 400 | 手机号格式不正确,或被真实性检测/虚拟号段/第三方运营商拦截。 |
InvalidContent | 400 | 正文格式错误,缺少 【签名】 前缀。 |
InvalidSignName | 400 | 签名与账户允许的签名不一致。 |
InvalidTemplate | 400 | 正文无法匹配任何已审核模板。 |
调用示例
bash
curl "https://smspanel.szczk.top/?u=myuser&p=sk_xxx&m=13800138000&c=$(python3 -c "import urllib.parse;print(urllib.parse.quote('【starcloud】您的验证码为123456,请不要告诉其他人哟!'))")"提示
c 参数包含中文和特殊符号,务必进行 URL 编码。