PHP的API接口的apiSign生成规则【请求签名参数生成规则】

PHP的API接⼝的apiSign⽣成规则【请求签名参数⽣成规则】PHP后端:
⼀、请求地址⽰例
1、请求地址
/exam/seeTest?timeStamp=1525096310&apiSign=324owefldskfjsdk&userName=luowei
注:timeStamp为当前时间戳
2、参数说明
上述请求地址中附带了三个参数timeStamp、apiSign、userName
⼆、apiSign⽣成规则
1、汇总请求参数(json格式,可以是数组)
{
"timeStamp":1525096310,
"apiSign":"324owefldskfjs",
"userName":"luowe"
}
2、加⼊apiKey
apiKey的值:’3bdb25d93535b66fd13c16379d26f46fgzzzwh’,说明:apiKey的值为服务端开发⼈员提供
加⼊apiKey后的结果如下所⽰
{
"timeStamp":1525096310,
"apiSign":"324owefldskfjs",
"userName":"luowe",
"apiKey":"3bdb25d93535b66fd13c16379d26f46fgzzzwh"
}
3、请求参数排序
排序规则说明:对json中的参数按键名以英⽂字母表先后排序,排序结果如下
{
"apiKey":"3bdb25d93535b66fd13c16379d26f46fgzzzwh",
"apiSign":"324owefldskfjsdk",
"timeStamp":1525096310,
"userName":"luowei"
}
4、删除不参与⽣成apiSign的参数
(1)符合如下任何⼀个条件的参数,都要删除
(a)参数名称为【apiSign】的参数,删除
(2)以上⾯的⽰例来说,请求参数中存在名称为“apiSign”的参数,删除后如下所⽰
{
"apiKey":"3bdb25d93535b66fd13c16379d26f46fgzzzwh",
"timeStamp":1525096310,
"userName":"luowei"
}
5、拼接参数【按键名的顺序对参数列表的值进⾏拼接】
将第4步得到的参数列表的值拼接在⼀起,结果如下所⽰
3bdb25d93535b66fd13c16379d26f46fgzzzwh1525096310luowei
6、⽣成apiSign
将第5步得到的字符串使⽤md5⽅式加密,即可得到请求签名参数apiSign
apiSign = md5(“3bdb25d93535b66fd13c16379d26f46fgzzzwh1525096310luowei”)
7、
8、伪代码⽰例(PHP)
// 1、汇总全部请求参数
$this->params = $request->param();
// 2、加⼊私钥并排序参数
$this->params['apiKey'] = config('API')['APP_SECRET'];// 加⼊私钥
// 3、过滤不需要的参数并拼接需要的参数,将排序好的数组使⽤连接符.链接
例:
ksort($this->params); // 对数组的键(字母)进⾏降序排序
$str = '';
foreach ($this->params as $key => $val)
{
if ($key == 'apiSign')continue;// 符合以下条件的都不进⾏拼接
$str = $str . $val;// 拼接数组的值[数组的键(字母)进⾏降序排序]
}
// 4、⽣成签名
$sign = md5($str);
客户端说明⽣成apiSign参数:
⼀、请求地址⽰例【客户端⼀开始并没有apiSign该参数】
1、⽂档接⼝请求地址
/exam/seeTest?timeStamp=1525096310&apiSign=271ebc2d9db07e5bdb3621d7bc6851b1&userName=luowei
请求地址参数说明:
apiSign:该参数客户端并没有,需⽣成
timeStamp:当前时间戳
userName :⽤户名
⼆、apiSign⽣成规则
1、汇总请求参数(json格式、或数组)
{
"timeStamp":1525096310,
"userName":"luowe"
}
2、加⼊apiKey
apiKey的值:’3bdb25d93535b66fd13c16379d26f46fgzzzwh’,说明:apiKey的值为服务端开发⼈员提供 ,加⼊apiKey后的结果如下所⽰
{
"timeStamp":1525096310,
"userName":"luowe",
"apiKey":"3bdb25d93535b66fd13c16379d26f46fgzzzwh"
}
3、请求参数排序
排序规则说明:对json中的参数按键名以英⽂字母表先后排序,排序结果如下
{
"apiKey":"3bdb25d93535b66fd13c16379d26f46fgzzzwh",
"timeStamp":1525096310,
"userName":"luowei"
}
4、拼接参数【按键名的顺序对参数列表的值进⾏拼接】
将第3步得到的参数列表的值拼接在⼀起,结果如下所⽰
3bdb25d93535b66fd13c16379d26f46fgzzzwh1525096310luowei
5、⽣成apiSign
将第4步得到的字符串使⽤md5⽅式加密,即可得到请求签名参数apiSign
md5(“3bdb25d93535b66fd13c16379d26f46fgzzzwh1525096310luowei”)
apiSign = 271ebc2d9db07e5bdb3621d7bc6851b1
6、删除参数名为apiKey的值,因该参数⽆需 传给后端
7、拼接所有参数,⽣成接⼝地址:
/exam/seeTest?apiSign=271ebc2d9db07e5bdb3621d7bc6851b1&timeStamp=1525096310&userName=luowei 参数有:apiSign、timeStamp、userName

本文发布于:2024-09-22 07:20:43,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/93064.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:参数   请求   排序   拼接   得到   列表
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议