# 查成绩Pro数据同步
# 1 请求方式
成绩接口采用POST
的方式向校方发送数据。
# 2 请求参数
原始数据 R
:
{
"card_number":"3109005843",
"app_key":APP_KEY,
"nonce_str":"",(32位随机字符串)
"timestamp":"",(时间戳)
"sign":"9A0A8659F005D6984697E2CA0A9CF3B7"//签名
}
通过加密R
可以得到R'
:R' = AES_CBC_ENCRYPT(R)
。
{
"raw_data":R',
"app_key":APP_KEY
}
腾讯微卡会把上面的数据以POST
的方式发送到校方提供的成绩接口。
加密算法见附件。
# 3 数据返回
校方接收到请求,对数据进行解密,验证签名,确认请求来源于腾讯微卡,处理后返回成绩数据。
返回数据:
{
"code":0,
"message":"success",
"raw_data":R',
"app_key":APP_KEY
}
关键点:
- 请求成功,需保证返回的
code
为 0。 - 请求失败,需保证返回的
code
不为 0。 message
字段在code
不为 0 时返回错误的信息。app_key
跟请求时的app_key
保持一致。raw_data
对应的R'
为加密后的数据。 通过解密R'
可得到R
:R = AES_CBC_DECRYPT(R·)
{
"card_number":"07302590", // 校园账号,一般是学号
"result": { // 每个学期的数据
"201501": [ // 表示2015~2016年度第一学期
{
"course_id":"672364823", // 课程编号
"course_name":"1", // 课程名称
"score":"90", // 成绩
"gpa":"4.0" // 绩点
},
{
"course_id":"672364823",
...
},
...
],
"201502":[
{
"course_id":"672364823", // 课程编号
"course_name":"1", // 课程名称
"score":"90", // 成绩
"gpa":"4.0" // 绩点
},
{
"course_id":"672364823",
...
},
...
]
}
}
注意: 返回的数据为在校所有学期的成绩
# 附件
# 1. 签名算法
签名采用微信支付 (opens new window)后端签名算法,具体算法见签名算法 (opens new window)。
# 2 数据加密
采用AES对称加密算法(AES/CBC/ZeroPadding 128位模式),具体算法见加解密demo (opens new window)。
KEY = APP_KEY
IV = APP_SECRET 前16位。
APP_KEY和APP_SECRET的获取见接口对接指引 (opens new window)。