Skip to content

AK/SK 接口 ​

AK/SK 方式兼容阿里云短信 API 的签名协议,支持 GET 和 POST,适合与现有阿里云兼容工具集成,或用于需要更严格签名校验的服务端环境。

请求方式判定 ​

接口按以下优先级自动识别接入方式:

  1. 请求同时带 u、p、m、c 参数:按 短信宝协议处理。
  2. Version 为 2021-01-11,或请求头带 X-TC-Action / X-TC-Version:按 腾讯云协议处理。
  3. GET 请求且带 Action=SendSms 参数:按 AK/SK 方式处理。
  4. POST 请求:按 AK/SK 方式处理。
  5. GET 请求但不带 Action 参数:按 SysKey 方式处理。
  6. 其他请求方法:返回 405 MethodNotAllowed。

请求格式 ​

http
POST /?AccessKeyId=xxx&Action=SendSms&PhoneNumbers=13800138000&SignName=签名&TemplateCode=模板ID&TemplateParam={"code":"123456"}&Signature=xxx

参数说明 ​

参数必填说明
AccessKeyId是用户的 AccessKeyId。
Action是固定为 SendSms。
PhoneNumbers是手机号码。
SignName否短信签名。可省略,系统自动按账户类型处理:会员可使用管理员配置的签名前缀,免费用户强制使用系统默认签名。
TemplateCode是模板代码,直接使用阿里云模板 ID。特殊模板 SMS_500650100 只校验签名,不校验模板。
TemplateParam是模板参数,JSON 格式字符串,必须是有效 JSON,否则返回 InvalidParameter。
Signature是按照阿里云签名算法计算得到的签名。

提示

参与签名的参数还应包含阿里云协议要求的公共参数,如 Format、RegionId、SignatureMethod、SignatureNonce、SignatureVersion、Timestamp、Version 等,详见下方示例和阿里云官方文档。

通用响应 ​

成功响应(HTTP 200) ​

json
{
  "Code": "OK",
  "Message": "短信已发送",
  "RequestId": "unique_id"
}

失败响应 ​

json
{
  "Code": "SignatureDoesNotMatch",
  "Message": "签名验证失败",
  "RequestId": ""
}

失败时 Code 为对应错误码,详见 错误码。

签名说明 ​

服务端会读取 access_key_id 和 access_key_secret,并使用相同签名算法计算期望的 Signature。请求必须包含 Signature 参数,服务端会校验请求参数和签名。

  • 签名按请求实际使用的方法计算:GET 请求用 GET,POST 请求用 POST,两者结果不同。
  • 签名校验在参数校验之前进行,请确保参数编码和密钥完全一致。

详细签名规则可参考 阿里云官方 API 请求文档。

GET 示例 ​

bash
curl "https://smspanel.szczk.top/?AccessKeyId=ak_xxx&Action=SendSms&PhoneNumbers=13800138000&SignName=starcloud&TemplateCode=SMS_CODE&TemplateParam={\"code\":\"123456\"}&Signature=..."

POST 示例 ​

bash
curl -X POST https://smspanel.szczk.top/ \
  -d "AccessKeyId=ak_xxx" \
  -d "Action=SendSms" \
  -d "PhoneNumbers=13800138000" \
  -d "SignName=starcloud" \
  -d "TemplateCode=SMS_CODE" \
  -d "TemplateParam={\"code\":\"123456\"}" \
  -d "Signature=..."

计费说明 ​

发送成功后按短信实际内容长度扣费:若系统后台存在对应模板内容,按变量替换后的内容每 50 字计 1 条;否则按 1 条计算。发送失败不扣费。