|  | @@ -7,58 +7,26 @@ class Model_apittv1 extends Lin_Model {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private function sign($url,$header,$body,$secret){
 | 
	
		
			
				|  |  | -        //解析URL
 | 
	
		
			
				|  |  | -        $urlParts = parse_url($url);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        //获取路径
 | 
	
		
			
				|  |  | -        $path = $urlParts['path']??'';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        //解析查询参数
 | 
	
		
			
				|  |  | -        $queryParams = [];
 | 
	
		
			
				|  |  | -        if(isset($urlParts['query'])){
 | 
	
		
			
				|  |  | -            parse_str($urlParts['query'],$queryParams);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        // 移除sign和access_token参数
 | 
	
		
			
				|  |  | -        unset($queryParams['sign']);
 | 
	
		
			
				|  |  | -        unset($queryParams['access_token']);
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        // 按参数名排序
 | 
	
		
			
				|  |  | -        ksort($queryParams);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // 构建参数字符串
 | 
	
		
			
				|  |  | -        $parameterStr = $path;
 | 
	
		
			
				|  |  | -        foreach ($queryParams as $key => $value) {
 | 
	
		
			
				|  |  | -            $parameterStr .= $key . $value;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +    private function sign($method,$query,$body,$secret){
 | 
	
		
			
				|  |  | +       
 | 
	
		
			
				|  |  | +        unset($query['sign']);
 | 
	
		
			
				|  |  | +        unset($query['access_token']);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // 检查Content-Type,如果不是multipart/form-data,则追加body
 | 
	
		
			
				|  |  | -        $contentType = $this->getHeader($header, 'Content-Type');
 | 
	
		
			
				|  |  | -        if (stripos($contentType, 'multipart/form-data') === false && !empty($body)) {
 | 
	
		
			
				|  |  | -            $parameterStr .= $body;
 | 
	
		
			
				|  |  | +        $input = $method;
 | 
	
		
			
				|  |  | +        ksort($query);
 | 
	
		
			
				|  |  | +        foreach ($query as $key => $value) {
 | 
	
		
			
				|  |  | +            $input.= $key.$value;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        // 用secret包裹参数字符串
 | 
	
		
			
				|  |  | -        $signatureParams = $secret . $parameterStr . $secret;
 | 
	
		
			
				|  |  | -        
 | 
	
		
			
				|  |  | -        // 使用HMAC-SHA256生成签名
 | 
	
		
			
				|  |  | -        return $this->generateSHA256($signatureParams, $secret);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    private function getHeader($header,$name){
 | 
	
		
			
				|  |  | -        $lowerName = strtolower($name);
 | 
	
		
			
				|  |  | -        foreach ($header as $key => $value) {
 | 
	
		
			
				|  |  | -            if (strtolower($key) === $lowerName) {
 | 
	
		
			
				|  |  | -                return $value;
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +        if(!empty($body)){
 | 
	
		
			
				|  |  | +            $input.= json_encode($body);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        return '';
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    private function generateSHA256($signatureParams, $secret){
 | 
	
		
			
				|  |  | -        return hash_hmac('sha256', $signatureParams, $secret);
 | 
	
		
			
				|  |  | +        $input = $secret . $input . $secret;
 | 
	
		
			
				|  |  | +		// 生成签名
 | 
	
		
			
				|  |  | +		$sign = hash_hmac('sha256', $input,$secret);
 | 
	
		
			
				|  |  | +        return $sign;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +   
 | 
	
		
			
				|  |  |       private function reqGet($url,$headers){
 | 
	
		
			
				|  |  |         
 | 
	
		
			
				|  |  |          // 初始化cURL
 |