成绩云接口开发文档

来自成绩云帮助中心
Bolun讨论 | 贡献2019年1月10日 (四) 17:21的版本 查询所有用户列表:

跳转至: 导航搜索

前言

本文档针对需要对接成绩云系统的平台而编写。

接入成绩云的平台需要先联系知未科技研发,获取2个基本参数:平台ID[platform],平台密钥[key]。这两个参数也可以反过来向知未科技提供。

然后提供一个接口URL前缀[apiBaseUrl],后面所有的接口都基于这个前缀。

为每一所接入学校向知未提供一个[orgId]

单点登录

Login.png


单点登录流程说明:


1. 第三方平台内添加成绩云访问单点登录链接,点击链接访问成绩云。
2. 成绩云接收来自第三方的的访问参数,查询站点信息。(成绩云是分学段建立站点的;如果一个学校包含了小学、初中、高中,那么成绩云中将分别建立小学、初中、高中三个站点。成绩云分学段建立的站点将使用第三方平台给定的学校唯一标识建立站点关联关系)。
3. 第三方平台给定的学校没有包含多个学段,则开始验证用户信息。
4. 第三方平台给定的学校包含多个学段,成绩云将会显示选择站点页面。选择站点页面将列举出访问用户可选择的站点。用户选择对应的站点后,则开始验证用户信息。

接口说明:


请求方法:GET
接口方向:第三方成绩云
接口API:[apiBaseUrl]?orgId=[学校ID]&account=[账号]&type=[角色]&timestamp=[当前时间戳]&sign=[签名]
访问参数:

参数 类型 是否必填 描述
orgId string 学校ID
account string 账号
type string 角色
timestamp int 时间戳time()
sign string 签名, 详见附录签名参数sign生成说明

查询用户

查询所有用户列表:

成绩云仅需要4种用户角色:学生,教师,管理员,家长。
此接口是下面其它接口的超集,后面的接口通过role参数查询子集。

接口说明:

请求方式:POST
请求url: [apiBaseUrl]/queryUsers 请求参数:

参数 类型 是否必填 描述
orgId string 学校的唯一 id
timestamp int 时间戳time()
sign string 签名。详见附录签名参数sign生成说明

返回参数:

参数 类型 描述
id string 用户的唯一 id
name string 姓名
roleList array 角色数组

返回样例

{
    "code": 0,
    "msg": "成功",
    "data": [
        {
            "id": "zhiwei_01",
            "name": "刘备",
            "roleList": [
                "学生"
            ]
        },
        {
            "id": "zhiwei_06",
            "name": "单福",
            "roleList": [
                "管理员",
                "教师"
            ]
        },
        {
            "id": "parent_01",
            "name": "费曼",
            "roleList": [
                "家长"
            ]
        },
    ]
}


查询学生列表:

接口说明:

请求方式:POST
请求url: [apiBaseUrl]/queryStudents
请求参数:

参数 类型 是否必填 描述
orgId string 学校的唯一 id
timestamp int 时间戳time()
sign string 签名。详见附录签名参数sign生成说明

返回参数:

参数 类型 描述
id string 学生的唯一 id
schoolId string 学号。要求同一个学校内唯一
name string 姓名
gender enum ("男", "女") 性别
grade int 年级
class int 班级。必须为纯整数,不能含有其他字符

返回样例

{
    "code": 0,
    "msg": "成功",
    "data": [
        {
            "id": "zhiwei_01",
            "schoolId": "20190101",
            "name": "刘备",
            "gender": "男",
            "grade": 10,
            "class": 1
        },
        {
            "id": "zhiwei_02",
            "schoolId": "20190102",
            "name": "关羽",
            "gender": "男",
            "grade": 11,
            "class": 2
        },
        {
            "id": "zhiwei_03",
            "schoolId": "20190103",
            "name": "张飞",
            "gender": "男",
            "grade": 12,
            "class": 3
        }
    ]
}

查询管理员列表:

接口说明:

请求方式:POST
请求url: [apiBaseUrl]/queryAdmins
请求参数:

参数 类型 是否必填 描述
orgId string 学校的唯一 id
timestamp int 时间戳time()
sign string 签名。详见附录签名参数sign生成说明

返回参数:

参数 类型 描述
id string 管理员的唯一 id
name string 姓名

返回样例

{
    "code": 0,
    "msg": "成功",
    "data": [
        {
            "id": "zhiwei_07",
            "name": "陈大文"
        },
        {
            "id": "zhiwei_08",
            "name": "张伟"
        },
        {
            "id": "zhiwei_09",
            "name": "杨红"
        }
    ]
}


查询教师列表:

接口说明:

请求方式:POST
请求url: [apiBaseUrl]/queryTeachers
请求参数:

参数 类型 是否必填 描述
orgId string 学校的唯一 id
timestamp int 时间戳time()
sign string 签名。详见附录签名参数sign生成说明

返回参数:

参数 类型 描述
id string 教师的唯一 id
name string 姓名


返回样例

{
    "code": 0,
    "msg": "成功",
    "data": [
        {
            "id": "zhiwei_04",
            "name": "孔明"
        },
        {
            "id": "zhiwei_05",
            "name": "郭嘉"
        },
        {
            "id": "zhiwei_06",
            "name": "单福"
        }
    ]
}

查询家长列表:

接口说明:

请求方式:POST
请求url: [apiBaseUrl]/queryParents
请求参数:

参数 类型 是否必填 描述
orgId string 学校的唯一 id
timestamp int 时间戳time()
sign string 签名。详见附录签名参数sign生成说明

返回参数:

参数 类型 描述
id string 家长的唯一 id
name string 姓名
studentList array 家长关联的学生 id数组


返回样例

{
    "code": 0,
    "msg": "成功",
    "data": [
        {
            "id": "parent_01",
            "name": "费曼",
            "studentList": [
                "stu_01"
            ]
        },
        {
            "id": "parent_02",
            "name": "图灵",
            "studentList": [
                "stu_02",
                "stu_03"
            ]
        },
        {
            "id": "parent_03",
            "name": "香侬",
            "studentList": [
                "stu_04",
                "stu_05",
                "stu_06"
            ]
        }
    ]
}

更新用户

查询班级任教信息列表

更新班级任教信息列表

常见问题

附录

签名参数sign生成说明:

第一步:对传入的参数按照键名排序
第二步:使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
第三步:在stringA最后拼接上“&key=[平台密钥]”得到stringSignTemp字符串,并对stringSignTemp进行MD5运算
第四步:得到最终请求字符串sign

PHP签名算法示例:

//$key 平台密钥
function sign($data, $key) {
  ksort($data);                                    // 正向排序
  $key_str = urldecode(http_build_query($data));  // 连接字符串
  $key_str .= '&key=' . $key;                     // 拼接key
  return md5($key_str);
}

$data = array(
   'orgId'=> 2345,
   'account'=> 4567,
   'type'=> 1,
   'timestamp'  => time(),
);
$sign = sign($data, $key);

返回结果:

参数名称 类型 描述
code int 公共返回码,详见附录公共返回码
msg string 返回信息
data object 返回的查询或操作数据,数据可能是对象或数组。具体根据每个API而定。

返回示例:

{
    "code": "10000",
    "msg": "成功",
    "data": [
        {
            "userName": "成绩云",
            "schoolId": 101,
        }
    ]
}

公共返回码:

开发者每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。 返回码如下:

返回码(code) 消息(msg)
0 成功
10001 未知错误
10002 服务器忙
10003 服务器无响应
10004 操作超时
10005 网络异常
10006 IP地址无效或不匹配
10007 操作异常
10008 操作无效
10009 数据库操作异常
20001 没有匹配的数据
20002 数据无效
30001 接口不存在
30002 参数解析错误
30003 参数格式错误
30004 参数长度超出范围
30005 参数值内容错误
30006 验证失败
40001 用户账号不存在
40002 用户账号已经禁用