$v) { $keysValue[$k] = $v[$keys]; } array_multisort($keysValue, $sort, $array); return $array; } /** 校验sign * @param $data * @return false */ static function checkSign($data) { if (empty($data['sign'])) { return false; } $originalSign = $data['sign']; unset($data['sign']); ksort($data); $params = ''; foreach ($data as $key => $value) { $params .= '&' . $key . '=' . $value; } $params = ltrim($params, '&'); $sign = md5($params . '&signKey=' . self::$signKey); Log::channel("gong")->info("参数sign:" . $originalSign . ',校验生成sign' . $sign); if ($originalSign != $sign) { return false; } return true; } /** 校验sign * @param $data * @return false */ static function thirdCheckSign($data,$header) { if (empty($header['sign'])) { return false; } $originalSign = $header['sign']; $timestamp = $header['timestamp']; if (abs($timestamp - time()) > 10) return false; ksort($data); $params = ''; foreach ($data as $key => $value) { $params .= '&' . $key . '=' . $value; } $params = ltrim($params, '&'); $sign = strtoupper(md5($params . '&signKey=' . self::$thirdsignKey . '×tamp=' . $timestamp)); Log::channel("gong")->info("参数sign:" . $originalSign . ',校验生成sign' . $sign); if ($originalSign != $sign) { return false; } $redis = Cache::store('redis')->handler(); if($redis->get('thirdCheckSign:'.$originalSign)){ return false; } $redis->set('thirdCheckSign:'.$originalSign,3600); return true; } }