云上畜牧平台提供appid、appsecret 用于后期调用接口加签使用#
测试环境:http://218.17.157.214:57371/animal/api(由于物联网的特性,仅提供接口是否正常响应的联调,不保证响应值符合预期)
生产环境:http://api.xumu360.net/animal/api
您需要在云上畜牧APP上申请企业帐号(规模养殖企业),我司后台审核后,我们会将生产环境的相关请求参数发送给您。sign算法说明
出于安全考虑,所有接口均需要加签名和时间戳
超时限制:生成签名后的5秒内需要调用接口,否则会返回超时提示(若出现该提示,建议先排查本地时间是否同步)
流控限制:针对每个商户,服务端每秒最多响应15次接口请求(个别接口可能会单独流控),超过阈值会返回异常提示
第1步:对参数按照key1=value1&key2=value2的格式,并按照参数名ASCII字典序排序如下:
appid=商户key&noncestr=时间戳毫秒值&xxx=XXXX
第2步:拼接完成后追加 &appsecret=商户秘钥
第3步:md5加密转大写,即可得到sign
即:appsecret固定放最后,其他参数均按照ASCII字典序排序。
示例:
1、拼接基本参数:appid=123456&aParam=11&bParam=22&cParam=33&noncestr=1669859464320
2、拼接appsecret到最后:appid=123456&aParam=11&bParam=22&cParam=33&noncestr=1669859464320&appsecret=222222
3、md5加密上述字符串,并将加密后的结果转成大写,即可得到sign
tips:生成签名用的时间戳须与传参时的时间戳保持一致。若接口无单独声明,则均按照此方式生成签名。
//需要提前导入hutool-all包
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.4</version>
</dependency>
//供参考
public static void main(String[] args) {
String appid = "您的appid";
String appsecret = "您的appsecret";
String noncestr = System.currentTimeMillis() + "";
//省略给labelRegisterDto赋值的步骤
JSONObject jsonObject = JSONUtil.parseObj(labelRegisterDto);
TreeMap treeMap = JSONUtil.toBean(jsonObject, TreeMap.class);
StringBuilder sb = new StringBuilder();
sb.append("appid="+appid+"&");
treeMap.forEach((k, v) -> {
sb.append(k + "=" + v + "&");
});
sb.append("appsecret=" + appsecret);
String sign = SecureUtil.md5(sb.toString()).toUpperCase();
treeMap.put("sign", sign);
System.out.println(sign);
System.out.println(sb);
String post = HttpUtil.post("接口地址", JSONUtil.toJsonStr(treeMap));
System.out.println(post);
}
Modified at 2025-07-02 01:04:42