logo
logo
请输入关键词搜索产品或者文档
中国

中国站

创蓝云智

国际站

Innopaas

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-TypeString固定值:application/json;charset=utf-8
AppIDString应用 ID,由控制台分配
NonceString随机字符串,长度≤128,防重放
CurTimeString当前 UTC 秒级时间戳
CheckSumStringSHA1 签名结果,转大写十六进制
X-Custom-TraceIdString自定义链路追踪 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;
    }
}
24小时热线 400-9669-253