appSecret = $appSecret; } if (!empty($appKey)) { $this->appKey = $appKey; } if (!empty($callBackUrl)) { $this->callBackUrl = $callBackUrl; } } public function setParam($key, $value) { $this->param = array_merge($this->param, array($key => $value)); } public function getSign() { $param = $this->filtrateParam(); $sortParam = $this->sortParam($param); $sign = $this->createLinkstring($sortParam); $this->sign = $this->md5Sign($sign); return $this->sign; } /** * 过滤空值 * @return array */ private function filtrateParam() { $param = []; foreach ($this->param as $k => $v) { if ("" != $v) { $param[$k] = $v; } } return $param; } /** * 以键的ASCII从小到大排序 * @param $param * @return mixed */ private function sortParam($param) { ksort($param); reset($param); return $param; } /** * 转义 * @param $para * @return bool|string */ private function createLinkstring($para) { $arg = ''; foreach ($para as $key => $val) { $arg .= $key . '=' . $val . '&'; } //去掉最后一个&字符 $arg = substr($arg, 0, count($arg) - 2); //如果存在转义字符,那么去掉转义 if (get_magic_quotes_gpc()) { $arg = stripslashes($arg); } return $arg; } /** * 拼接私钥后加密 * @param $prestr * @return string */ private function md5Sign($prestr) { $prestr = $prestr . '&key=' . $this->appSecret; return strtoupper(md5($prestr)); } public function getAppkey() { return $this->appKey; } }