签名规则
<h4>签名规则</h4>
<ul>
<li>珊瑚与开发者之间进行接口交互请求,都会包含签名参数,链接中签名参数的生成,都是通过MD5生成的签名参数,以确保请求安全。
<h4>MD5签名原理</h4></li>
<li>签名md5(32位小写)签名原理如下:</li>
</ul>
<p>将请求参数和appSecret封装成Map集合,将Map集合的参数值(value)拼装成字符串进行MD5签名。排序顺序{requestBody}{appSecret}{timestamp},参数之间用分号;隔开,但{appSecret}和{timestamp}不隔开。<strong>其中loginkey,token,appid不参与签名</strong>
<strong>注意,时间戳是毫秒单位</strong>
例如</p>
<pre><code>例:
appSecret:testsecretm, appId=5667
参数列表:{accountId:"testaccountid", deviceId: "testdeviceId"}
签名原串:accountId=testaccountid;deviceId=testdeviceId;testsecretm1405495206727
({appSecret}和{timestamp}直接相连不隔开)
签名后字符串:0b81dc7c45aeb72fc783d830c1ba6b9d
</code></pre>
<p>这里值得注意的是,<strong>h5商城</strong>下的接口,<strong>requestBody的拼接排序不是按照字典排序,是按请求参数顺序</strong>。
签名url示例:<a href="https://gmall.m.qq.com/autoLogin/autologin?appId=5667&sign=0b81dc7c45aeb72fc783d830c1ba6b9d&_timestamp=1405495206727">https://gmall.m.qq.com/autoLogin/autologin?appId=5667&sign=0b81dc7c45aeb72fc783d830c1ba6b9d&_timestamp=1405495206727</a>
注意:<strong><em>包含中文的值需要encode</em></strong>
注意:<strong><em>包含中文的值需要encode</em></strong>
注意:<strong><em>包含中文的值需要encode</em></strong></p>
<h4>请求示例</h4>
<p>appSecret:testsecretm, appId=5667</p>
<ul>
<li>
<p>GET方式
假设参数为{a:12, b:”test”}, sign=md5(a=12;b=test;testsecretm1405495206727), 请求方式应该为
<img src="https://www.showdoc.cc/server/api/common/visitfile/sign/859a1b3aaaa3cb17a912448d2b67402a?showdoc=.jpg" alt="" /></p>
</li>
<li>POST
假设参数为{a:12, b:”test”}, sign=md5(a=12;b=test;testsecretm1405495206727), 请求方式应该为
<img src="https://www.showdoc.cc/server/api/common/visitfile/sign/0f181ad4d522b65a3036133a3ce9e776?showdoc=.jpg" alt="" /></li>
</ul>