/** * @description 签名方法实现,并构造一个参数串 * * @access private * @param mixed $params * @return void */ public function signRequest($params) { if ($this->access_token) { $params['access_token'] = $this->access_token; } $keys = open56Client::urlencodeRfc3986(array_keys($params)); $values = open56Client::urlencodeRfc3986(array_values($params)); if ($keys and $values) { $params = array_combine($keys, $values); } else { try { throw new Exception("signRequest need params exits!"); } catch (Exception $e) { echo $e->getMessage(); } } /** * 先去除系统级参数 */ unset($params['appkey']); unset($params['ts']); ksort($params); /** * 第一轮md5字符串 * */ $req = md5(http_build_query($params)); $ts = time(); /**当次请求的时间戳**/ /**第二轮md5字符串,得到最后的签名变量,注意里面的顺序不可以改变否则结果错误!**/ $params['sign'] = md5($req . '#' . $this->appkey . '#' . $this->secret . '#' . $ts); $params['appkey'] = $this->appkey; $params['ts'] = $ts; return http_build_query($params); }