一、请求说明
1、接口对大小写敏感
2、接口的请求需要生成正确的 sign 后才能成功调用
二、公共请求参数
1、Headers
参数 | 传值 | 必填 |
Content-Type | application/json | Y |
2、Body
参数 | 类型 | 必填 | 说明 |
client_id | string | Y | 向公司管理员或子管理员获取。请确保已开通Open API权限 |
timestamp | int | Y | 请求时的unix时间戳 |
sign | string | Y | md5(client_secret+timestamp) |
…… | …… | …… | 其他参数 |
3、请求示例
{
"client_id": "xxx",
"timestamp": 1608776690,
"sign": "05d481dc241a7a1daa5b2a7fa2b51dc5",
"...": "..."
}
三、Sign生成逻辑
1、在请求参数中传入 client_id, timestamp, sign 来通过认证,sign 由 client_secret, timestamp 根据加密规则生成
2、加密规则是 md5(client_secret + timestamp)
3、timestamp 有效期默认为30s,超过30s的话会报接口超时
4、上述所提到的 client_id、client_secret 需要向公司管理员或子管理员获取,页面入口在XMP后台右上角的个人信息卡片:
四、Sign生成示例代码
1、java示例
import org.apache.commons.codec.digest.DigestUtils;
public static String getSign(String clientSecret) {
long timestamp = System.currentTimeMillis()/1000;
String oriSign = clientSecret + timestamp;
String sign = DigestUtils.md5Hex(oriSign);
return sign;
}
2、python示例
import hashlib
import time
def get_sign(clientSecret):
timestamp = int(time.time())
oriSign = clientSecret+str(timestamp)
encodeSign = str(oriSign).encode()
sign = hashlib.md5(encodeSign)
return sign.hexdigest()
3、php示例
function getSign($clientSecret)
{
$timestamp = time();
$oriSign = $clientSecret . $timestamp;
$sign = md5($oriSign);
return $sign;
}
4、go示例
import (
"time"
"strconv"
"app/util/encrypt"
)
func getSign(clientSecret string) string {
timestamp := time.Now().Unix()
sign := encrypt.Md5(fmt.Sprintf("%s%s", clientSecret, strconv.FormatInt(timestamp, 10)))
return sign
五、错误码说明
错误码 | 说明 |
0 | success |
-1 | error |
400001 | 请求参数错误 |