sign签名值用于SAAS平台的机构对接接口,第三方应用平台向SAAS平台(或SAAS平台向第三方应用平台)发起请求,均需要对参数进行签名。请求参数及返回参数,均采用相同机制进行签名。SAAS平台的接口可能增加字段,验证签名时必须支持增加的扩展字段

  1. 首先,排除sign参数之外,将其它参数(空值除外)按名称进行字母排序,并和它的取值一起组成name=value样式的字符串,然后用&把它们拼装为一个大字符串,对于嵌套的参数,嵌套的参数列表也需按照字母排序进行拼装。
    a) 比如,要传递下列参数
      i.version=1.0.0
      ii.return_code=0
      iii.拼装之后的字符串为:return_code=0&version=1.0.0
    b) 比如,要传递下列参数
      i.a=1
      ii.b={“d”:”3”,”c”:”2”}
      iii.拼装之后的字符串为:a=1&b=c=2&d=3
    c)比如,要传递下列参数
      i.a=1
      ii.b=[{“d”:”3”,”c”:”2”},{“d”:”5”,”c”:”4”}]
      iii.拼装之后的字符串为:a=1&b=c=2&d=3&c=4&d=5
    d)比如,要传递下列参数
      i.a=1
      ii.b=[“2”,”3”]
      iii.拼装之后的字符串为:a=1&b=2&3
    e)比如,要传递下列参数
      i.a=1
      ii.b=[[{“d1”:”1”,”c1”:”2”},{“d2”:”3”,”c2”:”4”}],[{“d3”:”5”,”c3”:”6”},{“d4”:”7”,”c4”:”8”}]]
      iii.拼装之后的字符串为:a=1&b=c1=2&d1=1&c2=4&d2=3&c3=6&d3=5&c4=8&d4=7
  2. 在上述拼装之后的字符串后面直接拼装accesskey的值。
     a)比如,上述参数return_code=0&version=1.0.0,假设accesskey是123456789ABCDEF,拼装以后,成为下述字符串:
     b)return_code=0&version=1.0.0123456789ABCDEF
  3. 对上述第2步得到的字符串,进行MD5运算(32位大写),得到sign

排序工具类见附件,如果直接使用此工具类,请勿使用自定义对象构造请求数据用作签名,请使用net.sf.json包下相关对象。

报文字符串排序在线测试

文档更新时间: 2023-12-11 16:44   作者:admin