“纪律星接口开发文档”的版本间的差异

来自成绩云帮助中心
跳转至: 导航搜索
附录
 
(未显示同一用户的12个中间版本)
第12行: 第12行:
 
;<span style="font-size:15px;">接口说明</span>
 
;<span style="font-size:15px;">接口说明</span>
 
请求方式:<code>POST</code>  <br/>
 
请求方式:<code>POST</code>  <br/>
接口方向:<code>第三方</code>→<code>成绩云</code><br/>
 
 
请求URL: '''[serverBaseUrl]'''/good-class/api/import?platform='''[platform]'''&timestamp='''[timestamp]'''&sign='''[sign]'''<br/>
 
请求URL: '''[serverBaseUrl]'''/good-class/api/import?platform='''[platform]'''&timestamp='''[timestamp]'''&sign='''[sign]'''<br/>
 
URL参数说明:<br/>
 
URL参数说明:<br/>
第35行: 第34行:
 
|string
 
|string
 
|是
 
|是
|签名,只对platform和timestamp签名,不用对POST数据内容签名。详见附录[https://chengjiyun.com/wiki/index.php?title=%E6%88%90%E7%BB%A9%E4%BA%91%E6%8E%A5%E5%8F%A3%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3#.E7.AD.BE.E5.90.8D.E5.8F.82.E6.95.B0sign.E7.94.9F.E6.88.90.E8.AF.B4.E6.98.8E 签名参数sign生成说明]
+
|签名,只对platform和timestamp签名,不用对POST数据内容签名。详见[https://chengjiyun.com/wiki/index.php?title=%E7%BA%AA%E5%BE%8B%E6%98%9F%E6%8E%A5%E5%8F%A3%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3#.E7.AD.BE.E5.90.8D.E5.8F.82.E6.95.B0sign.E7.94.9F.E6.88.90.E8.AF.B4.E6.98.8E 签名参数sign生成说明]
 
|}
 
|}
  
第53行: 第52行:
 
|年级
 
|年级
 
|-
 
|-
|class
+
|className
 
|string
 
|string
 
|班别
 
|班别
第78行: 第77行:
 
             "id": 100231,
 
             "id": 100231,
 
             "grade": "高一",
 
             "grade": "高一",
             "class": "1",
+
             "className": "1",
 
             "name": "张三",
 
             "name": "张三",
 
             "time": 1639016550,
 
             "time": 1639016550,
第86行: 第85行:
 
             "id": 100234,
 
             "id": 100234,
 
             "grade": "高一",
 
             "grade": "高一",
             "class": "2",
+
             "className": "2",
 
             "name": "李四",
 
             "name": "李四",
 
             "time": 1639016555,
 
             "time": 1639016555,
第100行: 第99行:
 
{
 
{
 
     "code": 200,
 
     "code": 200,
     "msg": "ok",
+
     "msg": "ok"
 +
}
 +
</pre>
 +
 
 +
<pre>
 +
{
 +
    "code": 403,
 +
    "msg": "未找到高二3班王武同学"
 
}
 
}
 
</pre>
 
</pre>
第107行: 第113行:
 
== <p style="background:#6a9ee4;padding:8px 12px;color:#ffffff;">查询考勤异常记录</p> ==
 
== <p style="background:#6a9ee4;padding:8px 12px;color:#ffffff;">查询考勤异常记录</p> ==
  
此接口由成绩云向第三方发起请求,获取考勤异常记录。此接口是对推送接口的一个补充,以防因为网络原因丢失推送记录,可以通过反向查询的方式确认。
+
此接口由纪律星向第三方发起请求,获取考勤异常记录。此接口是对推送接口的一个补充,以防因为网络原因丢失推送记录,可以通过反向查询的方式确认。
  
 
;<span style="font-size:15px;">接口说明</span>
 
;<span style="font-size:15px;">接口说明</span>
请求方式:<code>POST</code>  <br/>
+
请求方式:<code>GET</code>  <br/>
请求URL:'''[platformBaseUrl]'''/query<br/>
+
请求URL:'''[platformBaseUrl]'''/query?platform='''[platform]'''&begintime='''[begintime]'''&endtime='''[endtime]'''&timestamp='''[timestamp]'''&sign='''[sign]'''<br/>
 
请求参数:<br/>
 
请求参数:<br/>
 
{| class="wikitable"
 
{| class="wikitable"
第119行: 第125行:
 
| style="width:100px; text-align:center;" | 是否必填
 
| style="width:100px; text-align:center;" | 是否必填
 
| style="width:250px; text-align:center;" | 描述
 
| style="width:250px; text-align:center;" | 描述
 +
|-
 +
|platform
 +
|string
 +
|是
 +
|平台ID
 
|-
 
|-
 
|begintime
 
|begintime
第129行: 第140行:
 
|是
 
|是
 
|查询结束时间(Unixtime)
 
|查询结束时间(Unixtime)
 +
|-
 +
|timestamp
 +
|int
 +
|是
 +
|防止重放攻击的时间戳(Unixtime)
 
|-
 
|-
 
|sign
 
|sign
 
|string
 
|string
 
|是
 
|是
|签名。详见附录[https://chengjiyun.com/wiki/index.php?title=%E6%88%90%E7%BB%A9%E4%BA%91%E6%8E%A5%E5%8F%A3%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3#.E7.AD.BE.E5.90.8D.E5.8F.82.E6.95.B0sign.E7.94.9F.E6.88.90.E8.AF.B4.E6.98.8E 签名参数sign生成说明]
+
|签名。详见[https://chengjiyun.com/wiki/index.php?title=%E7%BA%AA%E5%BE%8B%E6%98%9F%E6%8E%A5%E5%8F%A3%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3#.E7.AD.BE.E5.90.8D.E5.8F.82.E6.95.B0sign.E7.94.9F.E6.88.90.E8.AF.B4.E6.98.8E 签名参数sign生成说明]
 
|}
 
|}
  
第151行: 第167行:
 
|年级
 
|年级
 
|-
 
|-
|class
+
|className
 
|string
 
|string
 
|班别
 
|班别
第177行: 第193行:
 
             "id": 100231,
 
             "id": 100231,
 
             "grade": "高一",
 
             "grade": "高一",
             "class": "1",
+
             "className": "1",
 
             "name": "张三",
 
             "name": "张三",
 
             "time": 1639016550,
 
             "time": 1639016550,
第185行: 第201行:
 
             "id": 100234,
 
             "id": 100234,
 
             "grade": "高一",
 
             "grade": "高一",
             "class": "2",
+
             "className": "2",
 
             "name": "李四",
 
             "name": "李四",
 
             "time": 1639016555,
 
             "time": 1639016555,
第194行: 第210行:
 
</pre>
 
</pre>
 
<br/>
 
<br/>
 +
 
== <p style="background:#6a9ee4;padding:8px 12px;color:#ffffff;">签名参数sign生成说明</p> ==
 
== <p style="background:#6a9ee4;padding:8px 12px;color:#ffffff;">签名参数sign生成说明</p> ==
  
第202行: 第219行:
 
<br/><code>PHP签名算法示例:</code><br/>
 
<br/><code>PHP签名算法示例:</code><br/>
 
<pre>
 
<pre>
//$key 平台密钥
+
// $key 平台密钥
 
function sign($data, $key) {
 
function sign($data, $key) {
   ksort($data);                                   // 正向排序
+
   ksort($data);                                   // 正向排序
 
   $key_str = urldecode(http_build_query($data));  // 连接字符串
 
   $key_str = urldecode(http_build_query($data));  // 连接字符串
 
   $key_str .= '&key=' . $key;                    // 拼接key
 
   $key_str .= '&key=' . $key;                    // 拼接key
第211行: 第228行:
  
 
$data = array(
 
$data = array(
   'begintime'=> 1639016550,
+
   'begintime' => 1639016550,
   'endtime'=> 1639016555,
+
   'endtime' => 1639016555,
 +
  'timestamp' => 1639017000
 
);
 
);
 
$sign = sign($data, $key);
 
$sign = sign($data, $key);
 
</pre>
 
</pre>
  
注意:一般接口会有一个timestamp参数,如无特别说明,timestamp的有效时间为600秒(登录接口有效时常为7200秒),超过该时长请求无效,以降低受到重放攻击的风险。此时长在实际使用中可能会做出调整,请尽可能地使用实时时间。
+
注意:一般接口会有一个timestamp参数,如无特别说明,timestamp的有效时间为600秒,超过该时长请求无效,以降低受到重放攻击的风险。此时长在实际使用中可能会做出调整,请尽可能地使用实时时间。

2021年12月20日 (一) 16:27的最后版本

前言

本文档针对需要对接纪律星模块的平台而编写。

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

然后提供一个接口URL前缀[platformBaseUrl],后面所有的接口都基于这个前缀。凡是接口URL是[serverBaseUrl]前缀的,说明这个接口由第三方向纪律星发起请求。而如果接口URL前缀是[platformBaseUrl],说明接口是由纪律星向第三方发起请求。

推送考勤异常记录

第三方平台生成考勤异常记录后,需要主动通知纪律星模块做扣分记录。

接口说明

请求方式:POST
请求URL: [serverBaseUrl]/good-class/api/import?platform=[platform]&timestamp=[timestamp]&sign=[sign]
URL参数说明:

参数 类型 是否必填 描述
platform string 平台ID
timestamp int 时间戳(Unixtime),有效时长600秒
sign string 签名,只对platform和timestamp签名,不用对POST数据内容签名。详见签名参数sign生成说明

POST数据结构参数:

参数 类型 描述
id string 记录ID,用于确认记录是否已经导入过。
grade string 年级
className string 班别
name string 姓名
time int 记录事件发生时间戳(Unixtime),相当于打卡时间。
event string 事件。例如“异常”、“晚归“、“迟到”、“未到寝“。

请求样例

POST数据如下:

    [
        {
            "id": 100231,
            "grade": "高一",
            "className": "1",
            "name": "张三",
            "time": 1639016550,
            "event": “迟到”,
        },
        {
            "id": 100234,
            "grade": "高一",
            "className": "2",
            "name": "李四",
            "time": 1639016555,
            "event": "未到寝",
        },
    ]



返回样例

{
    "code": 200,
    "msg": "ok"
}
{
    "code": 403,
    "msg": "未找到高二3班王武同学"
}


查询考勤异常记录

此接口由纪律星向第三方发起请求,获取考勤异常记录。此接口是对推送接口的一个补充,以防因为网络原因丢失推送记录,可以通过反向查询的方式确认。

接口说明

请求方式:GET
请求URL:[platformBaseUrl]/query?platform=[platform]&begintime=[begintime]&endtime=[endtime]&timestamp=[timestamp]&sign=[sign]
请求参数:

参数 类型 是否必填 描述
platform string 平台ID
begintime int 查询开始时间(Unixtime)
endtime int 查询结束时间(Unixtime)
timestamp int 防止重放攻击的时间戳(Unixtime)
sign string 签名。详见签名参数sign生成说明

返回参数:

参数 类型 描述
id string 记录ID,用于确认记录是否已经导入过。
grade string 年级
className string 班别
name string 姓名
time int 记录事件发生时间戳(Unixtime),相当于打卡时间。
event string 事件。例如“异常”、“晚归“、“迟到”、“未到寝“。

返回样例

{
    "code": 200,
    "msg": "ok",
    "data": [
        {
            "id": 100231,
            "grade": "高一",
            "className": "1",
            "name": "张三",
            "time": 1639016550,
            "event": “迟到”,
        },
        {
            "id": 100234,
            "grade": "高一",
            "className": "2",
            "name": "李四",
            "time": 1639016555,
            "event": "未到寝",
        },
    ]
}


签名参数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(
   'begintime' => 1639016550,
   'endtime' => 1639016555,
   'timestamp' => 1639017000
);
$sign = sign($data, $key);

注意:一般接口会有一个timestamp参数,如无特别说明,timestamp的有效时间为600秒,超过该时长请求无效,以降低受到重放攻击的风险。此时长在实际使用中可能会做出调整,请尽可能地使用实时时间。