通信协议
1、接口协议是 Http 协议
2、主要以 GET,POST 请求为主
3、接口调用时需要带上公共参数和和公共请求头,详见下方公共参数部分
4、接口调用时需要对请求参数进行加密,获取响应数据时需要对数据进行解密,详见下方加解密方式
5、如无特殊说明,字符编码为 UTF-8
公共参数
1).公共请求参数
参数名称 | 参数名称 | 请求类型 | 是否必填 | 数据类型 |
---|
appKey | 系统授权KEY | header | Y | String |
appSecret | 系统授权密钥 | header | Y | String |
Content-Type | application/json | charset=UTF-8 | Y | String |
appKey | 系统授权KEY | header | Y | String |
2).公共响应参数
名称 | 说明 | 数据类型 | 是否必填 | 名称 |
---|
statusCode | 响应码,当 HTTP 响应状态码为200 时,表明调用成功 | Int | Y | statusCode |
message | 响应描述 | Int | Y | statusCode |
data | 响应数据 | Int | Y | statusCode |
3).加解密方式
算法类型:AES/CBC/PKCS7Padding
秘钥:appSecret
4).请求参数加密
方法示例:
function encrypt(data, key) {
if (data==null||data==undefined){
data={}
}
let str = JSON.stringify(data)
return {
bodyParams: CryptoJS.AES.encrypt(
str,
CryptoJS.enc.Utf8.parse(key.substring(key.length-16,key.length)),
{
iv: CryptoJS.enc.Utf8.parse(key.substring(key.length-16,key.length)),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString()
};
}
5).响应数据解密
方法示例:
function decrypt(data, key) {
if (!data){
return null
}
let decrypt = CryptoJS.AES.decrypt(data, CryptoJS.enc.Utf8.parse(
key.substring(key.length-16,key.length)),
{
iv: CryptoJS.enc.Utf8.parse(key.substring(key.length-16,key.length)),
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
if(decrypt == null) {
return null;
}
let result = hexToStr(CryptoJS.enc.Hex.stringify(decrypt));
return JSON.parse(result)
}