公共请求格式
请求域名
测试环境请求域名:
api.pre-qiandun365.com
生产环境请求域名:
api.qiandun365.com
提示
API调用
公共入参
参数名称 | 位置 | 必须 | 描述 |
---|---|---|---|
X-Ca-Key | Header | 是 | Appkey,调用API的身份标识,可以到签盾企业控制台申请 |
X-Ca-Signature | Header | 是 | 通过签名计算规则计算的请求签名串,参照:签名计算规则 |
X-Ca-Timestamp | Header | 否 | API 调用者传递时间戳,值为当前时间的毫秒数,也就是从1970年1月1日起至今的时间转换为毫秒,时间戳有效时间为15分钟 |
X-Ca-Nonce | Header | 否 | API请求的唯一标识符,15分钟内同一X-Ca-Nonce不能重复使用,建议使用 UUID,结合时间戳防重放 |
Content-MD5 | Header | 否 | 当请求 Body 非 Form 表单时,需要计算 Body 的 MD5 值传递给云网关进行 Body MD5 校验 |
X-Ca-Signature-Headers | Header | 否 | 指定哪些Header参与签名,支持多值以","分割,默认只有X-Ca-Key参与签名,为安全需要也请将X-Ca-Timestamp、X-Ca-Nonce进行签名,例如:X-X-Ca-Signature-Headers:Ca-Timestamp,X-Ca-Nonce |
签名计算规则
签名计算流程
1.准备APPKey
2.构造待签名字符串stringToSign
HTTPMethod
为全大写,如 POST。
Accept、Content-MD5、Content-Type、Date 如果为空也需要添加换行符”\n”,Headers如果为空不需要添加”\n”。
Content-MD5
String content-MD5 = Base64.encodeBase64(MD5(bodyStream.getbytes("UTF-8"))); bodyStream 为字节数组。
Headers
Headers 组织方法:
String headers =
HeaderKey1 + ":" + HeaderValue1 + "\n"\+
HeaderKey2 + ":" + HeaderValue2 + "\n"\+
...
HeaderKeyN + ":" + HeaderValueN + "\n"
Url
String url =
Path +
"?" +
Key1 + "=" + Value1 +
"&" + Key2 + "=" + Value2 +
...
"&" + KeyN + "=" + ValueN
3.使用Secret计算签名
Mac hmacSha256 = Mac.getInstance("HmacSHA256");
byte[] keyBytes = secret.getBytes("UTF-8");
hmacSha256.init(new SecretKeySpec(keyBytes, 0, keyBytes.length, "HmacSHA256"));
String sign = new String(Base64.encodeBase64(Sha256.doFinal(stringToSign.getBytes("UTF-8")),"UTF-8"));
公共相应参数格式
参数名称 | 参数类型 | 必选 | 参数说明 |
---|---|---|---|
code | string | 是 | 业务码,200表示成功 |
msg | string | 是 | 业务信息 |
success | boolean | 是 | 请求是否成功true/false 同code=200 |
result | object | 否 | 业务数据 |
注意
DEMO
php-demo.zip
python-demo.zip
java-demo.zip
修改于 2024-12-27 06:58:37