EdulineV5接口签名算法

API 接口签名算法

第一步: 取得APP_KEY

APP_KEY为每个客户应用APP_ID对应的密钥,该密钥私有需内置到APP中

测试阶段可以使用如下信息

  • APP_ID:aCzYY7atTK

  • APP_KEY:GNZHisOx6aTkn7IL

第二步:取得当前请求参数

需要将body参数(GET请求时取query参数)储存到一个集合,并对该集合中非空参数值的参数值按照参数名ASCII码从小到大排序(字典序)使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA,如果值是数组时,使用/a代替该数组值。最后再将stringA字符串进行urlencode编码

第三步:取得当前时间戳

把当前时间戳记录为timestamp,各语言获取当前时间戳方法参考 时间戳

第四步:生成随机字符串

随机字符串主要用来防止重复请求

可以随便取随机字符串,建议长度为4-32位之间。记录该值为 nonce_str

第五步:拼接签名字符串

将以上4步得到的字符串进行如下格式拼接,需要注意的是每种类型的字符串之间,使用竖线分割

APP_KEY | stringA | timestamp|nonce

第六步:签名

将第五步取得的字符串进行MD5编码,并对其结果转为大写即可得到sign的参数值

签名信息的传递

  • 完成签名后,需要将以上第三步第四步第六步 取得的参数值传递到header请求头中

    参数 类型 是否必须 含义 说明
    E-APP-TIMESTAMP string 参与加密的时间戳 时间戳以秒未单位,第三步得到的值
    E-APP-NONCE string 参与加密的随机字符串 第四步得到的值
    E-APP-SIGN string 签名字符串 第五步得到的值
  • 每个签名生成后,有效期120秒,且在120秒签名不可重复,重发服务器将判定为非法的请求
Posted on Categories php Tags