签名计算
API接口的签名方案,OTO SaaS平台采用了md5数字摘要,保证数据传输的安全可靠。
签名计算规则
将请求参数按照字母表的顺序(a~z)排序,将参数值进行urlencode(utf-8)编码,并拼接到一起,得到
字符串A
urlencode 我们采用RFC 3986标准(空格编码值为%20),对于— _ . ~四个字符保留,其他的特殊字符,比如:! * ( ) ' 均采用"%"HEX HEX编码,比如 "!"编码值%21,"*"编码值%2A,空格编码%20等 其中时间戳timestamp(当前距离Epoch(1970年1月1日) 以秒计算的时间戳,即unix-timestamp)是必要参数 接口参数 { "customerUserId":"1e17a99d-ca4b-49be-908b-93c8faa20baf" "customerUserPhone":"13309102786" } timestmp=1482399837 排序规则只针对JSON的一级属性,对于嵌套属性(属性值是对象或者数组)不加入字符串A的拼接。 字符串A: 1e17a99d-ca4b-49be-908b-93c8faa20baf133091027861482399837 customerUserId + customerUserPhone + timestamp
计算第一步获取的
字符串A
,appKey +字符串A
+ appSecret的顺序进行拼接,得到字符串B
appKey = "9381936516" appSecret = "D31ba58fd73C71db697ab5E4946D52F" 字符串B: 9381936516e17a99d-ca4b-49be-908b-93c8faa20baf133091027861482399837D31ba58fd73C71db697ab5E4946D52F appKey 和 appSecret 需合作方申请
计算签名,对
字符串B
计算md5哈希,得到签名:1f009b4f1df3f9e90fad9d4f853d5c62
将得到的签名赋给sign作为HTTP请求参数
http://otosaas.com/apiurl/?appKey=9381936516&customerUserId=1e17a99d-ca4b-49be-908b-93c8faa20baf&customerUserPhone=13309102786×tamp=1482399837&sign=1f009b4f1df3f9e90fad9d4f853d5c62