云上畜牧开放api
    云上畜牧开放api
    • 1.文档说明
    • 2.接口对接说明
    • 3.消费者接入说明
    • 4.未对接数据而直接出货的处理方案
    • 接口列表
      • 1.创建养殖场
        POST
      • 2.获取牲畜类别列表
        POST
      • 3.获取牲畜品种列表
        POST
      • 4.牲畜绑定智能耳标
        POST
      • 5.设备绑定养殖场
        POST
      • 6.获取网关设备列表
        POST
      • 7.获取AI摄像机视频直播地址
        POST
      • 8_1.获取AI摄像机视频回放地址1
        POST
      • 8_2.获取AI摄像机视频回放地址2
        POST
      • 9.获取商户名下所有养殖场
        POST
      • 10.根据养殖场获取养殖栋舍
        POST
      • 11.根据栋舍id获取栏号列表
        POST
      • 12.根据条件查询牲畜基本信息(电子档案)
        POST
      • 获取牲畜发情时间段
        POST
      • 获取牲畜配种记录
        POST
      • 获取牲畜检疫记录
        POST
      • 13.替换新耳标
        POST
      • 14.触发耳标告警灯(点亮耳标)
        POST

    2.接口对接说明

    云上畜牧平台提供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:生成签名用的时间戳须与传参时的时间戳保持一致。若接口无单独声明,则接口均按照此方式生成签名。
    java示例:
           //需要提前导入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);
        }
    修改于 2024-12-05 07:04:04
    上一页
    1.文档说明
    下一页
    3.消费者接入说明
    Built with