签名规则
橙券与开发者之间进行接口交互请求,都会包含签名参数,链接中签名参数的生成,都是通过 MD5 生成的签名参数,以确保请求安全。
1.MD5签名原理
橙券签名 MD5 签名原理如下:
将请求参数和app_secret
封装成 Map 集合,按照参数名(Key)进行升序排列,将排序后 Map 集合的参数值(value)拼装成字符串进行 MD5 签名。其中app_secret
在签名中的顺序取决于他在所有参数名中的顺序。
例:
app_key: testapp_key, app_secret: testsecret
参数列表:
{ app_key = testapp_key, timestamp = 1405495206727 }
签名原串:
app_key=testapp_key&app_secret=testsecret×tamp=1405495206727
签名后字符串:
39e73663eb1caf2096968e680991ba2c
签名URL示例:
https://jfwechat.chengquan.cn/autoLogin?app_key=testapp_key×tamp=129832323&sign=39e73663eb1caf2096968e680991ba2c
注意:
- 签名验证时,必须遍历
request
请求中的所有参数进行签名验证。 橙券向开发者发起的请求,未来有可能会添加业务参数,开发者在验证请求时,务必对所有参数进行遍历,全部加入签名验证数据中。 - 开发者切勿写死签名验证参数,未来橙券升级参数变更将导致开发者服务不可用,请谨慎。
2.签名规则测试用例
为了方便开发者对签名方法进行测试验证,下面举例说明签名规则和签名方法。
以免登陆地址参数请求签名参数为例:
url="https://jfwechat.chengquan.cn/autoLogin?sign=49b12bc5579a2a2a4652a68cd53c1e5e&uid=test&app_key=testapp_key&credits=100×tamp=1520559858580"
。其中密钥
app_secret
的值为:app_secret = testapp_secret
。获取请求链接中所有请求参数封装成 Map 集合 :
{ app_key = testapp_key; uid = test; credits = 100; timestamp = 1520559858580 }
。把
app_secret
加入参数列表集合后如下:{ app_key = testapp_key, app_secret = testapp_secret, uid = test, credits = 100, timestamp = 1520559858580 }
。把 Map 集合按照参数名升序排序之后如下:
{ app_key = testapp_key, app_secret = testapp_secret, credits = 100, timestamp = 1520559858580, uid = test }
。根据规则,把排序后参数列表的参数值拼装成签名源串如下:
strs=app_key=testapp_key&app_secret=testapp_secret&credits=100×tamp=1520559858580&uid=test
。把上面拼装成的参数源串加密后获得的签名如下:
sign = MD5(strs) = 49b12bc5579a2a2a4652a68cd53c1e5e
。