API调用说明
更新时间:2026-09-11 17:30:23
⚠️ 2026年7月前注册的账号不支持统一应用 API Key 模式,请参考 独立产品 API 账号模式
✨ 统一应用 API Key 模式 支持通过 SDK 调用接口,详见 统一SDK使用手册
验签算法
请求头中增加 CheckSum 参数字段,用于标识接口验签。
算法规则
SHA1(AppSecret + Nonce + CurTime),将三个参数拼接的字符串进行 SHA1 哈希计算,生成大写十六进制字符
- CurTime 为秒级时间戳,CheckSum 为大写十六进制
- AppSecret 不通过前端传递,服务端根据 AppID 自动获取参与验签,控制台为该 AppID+smsType 分配的密钥,不参与网络传输
CheckSum = SHA1(AppSecret + Nonce + CurTime).toUpperCase()公共请求头(Header)
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| Content-Type | String | 是 | 固定值:application/json;charset=utf-8 |
| AppID | String | 是 | 应用 ID,由控制台分配 |
| Nonce | String | 是 | 随机字符串,长度≤128,防重放 |
| CurTime | String | 是 | 当前 UTC 秒级时间戳 |
| CheckSum | String | 是 | SHA1 签名结果,转大写十六进制 |
| X-Custom-TraceId | String | 否 | 自定义链路追踪 ID,会透传到响应并写入业务 uid |
代码示例
import org.apache.commons.codec.digest.DigestUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class UnifiedSmsSignUtils {
/**
* 生成完整的请求头签名信息
* @param appSecret 应用密钥(控制台获取)
* @return 包含所有请求头参数的Map
*/
public static Map<String, String> generateRequestHeaders(String appSecret) {
String nonce = UUID.randomUUID().toString().replace("-", "");
String curTime = String.valueOf(System.currentTimeMillis() / 1000); // 秒级时间戳
String checkSum = DigestUtils.sha1Hex(appSecret + nonce + curTime).toUpperCase(); // 大写
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json;charset=utf-8");
headers.put("AppID", "你的AppID");
headers.put("Nonce", nonce);
headers.put("CurTime", curTime);
headers.put("CheckSum", checkSum);
return headers;
}
}这篇文档对您有帮助吗?




