sign签名值用于SAAS平台的机构对接接口,第三方应用平台向SAAS平台(或SAAS平台向第三方应用平台)发起请求,均需要对参数进行签名。请求参数及返回参数,均采用相同机制进行签名。SAAS平台的接口可能增加字段,验证签名时必须支持增加的扩展字段
- 首先,排除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 - 在上述拼装之后的字符串后面直接拼装accesskey的值。
a)比如,上述参数return_code=0&version=1.0.0,假设accesskey是123456789ABCDEF,拼装以后,成为下述字符串:
b)return_code=0&version=1.0.0123456789ABCDEF - 对上述第2步得到的字符串,进行MD5运算(32位大写),得到sign
排序工具类见附件,如果直接使用此工具类,请勿使用自定义对象构造请求数据用作签名,请使用net.sf.json包下相关对象。
文档更新时间: 2020-04-10 11:32 作者:admin