以ThinkPHP5为例
/**
* 生成签名
*/
public static function buildSign()
{
$param = input('param.'); // ThinkPHP5获取所有请求参数的助手函数
unset($param['sign']); // sign字段不需要加入签名算法
ksort($param); // 键值对的key按照升序排序
$str = implode('', $param); // 请求参数值拼接成字符串
$signKey = config('sign_key'); // ThinkPHP5获取配置文件中的签名key
$sign = strtoupper(md5($str . $signKey)); // 执行加密
return $sign;
}
签名校验不通过常见问题:
1.键值对的key没有按升序排序。
2.键值对升序后拼接的字符串没有与sign_key拼接。
3.拼接字符串不能有空格