|
|
@@ -5,59 +5,86 @@ class Model_apittv1 extends Lin_Model {
|
|
|
$this->load->_model("Model_logic_ding","logic_ding");
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- 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']);
|
|
|
+ private function sign($url,$appSecret,$body='')
|
|
|
+ {
|
|
|
+ // 解析URL获取查询参数
|
|
|
+ $queryParams = array();
|
|
|
+ parse_str(parse_url($url, PHP_URL_QUERY), $queryParams);
|
|
|
+ // 排除'sign'和'access_token'
|
|
|
+ unset($queryParams['sign'], $queryParams['access_token']);
|
|
|
+ // 按字典顺序排序查询参数
|
|
|
+ ksort($queryParams);
|
|
|
+ // 拼接参数为{key}{value}格式
|
|
|
+ $input = '';
|
|
|
+ foreach ($queryParams as $key => $value)
|
|
|
+ {
|
|
|
+ $input .= $key . $value;
|
|
|
+ }
|
|
|
+ // 追加请求路径
|
|
|
+ $path = parse_url($url, PHP_URL_PATH);
|
|
|
+ $input = $path . $input;
|
|
|
+ if ($body)
|
|
|
+ {
|
|
|
+ $input .= json_encode($body);
|
|
|
+ }
|
|
|
+ // 使用app_secret包裹生成的字符串
|
|
|
+ $input = $appSecret . $input . $appSecret;
|
|
|
+ // 生成签名
|
|
|
+ $sign = hash_hmac('sha256', $input,$appSecret);
|
|
|
+ return $sign;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 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;
|
|
|
- }
|
|
|
-
|
|
|
- // 检查Content-Type,如果不是multipart/form-data,则追加body
|
|
|
- $contentType = $this->getHeader($header, 'Content-Type');
|
|
|
- if (stripos($contentType, 'multipart/form-data') === false && !empty($body)) {
|
|
|
- $parameterStr .= $body;
|
|
|
- }
|
|
|
+ // // 按参数名排序
|
|
|
+ // ksort($queryParams);
|
|
|
+
|
|
|
+ // // 构建参数字符串
|
|
|
+ // $parameterStr = $path;
|
|
|
+ // foreach ($queryParams as $key => $value) {
|
|
|
+ // $parameterStr .= $key . $value;
|
|
|
+ // }
|
|
|
+
|
|
|
+ // // 检查Content-Type,如果不是multipart/form-data,则追加body
|
|
|
+ // $contentType = $this->getHeader($header, 'Content-Type');
|
|
|
+ // if (stripos($contentType, 'multipart/form-data') === false && !empty($body)) {
|
|
|
+ // $parameterStr .= $body;
|
|
|
+ // }
|
|
|
|
|
|
- // 用secret包裹参数字符串
|
|
|
- $signatureParams = $secret . $parameterStr . $secret;
|
|
|
+ // // 用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;
|
|
|
- }
|
|
|
- }
|
|
|
- return '';
|
|
|
- }
|
|
|
-
|
|
|
- private function generateSHA256($signatureParams, $secret){
|
|
|
- return hash_hmac('sha256', $signatureParams, $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;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // return '';
|
|
|
+ // }
|
|
|
+
|
|
|
+ // private function generateSHA256($signatureParams, $secret){
|
|
|
+ // return hash_hmac('sha256', $signatureParams, $secret);
|
|
|
+ // }
|
|
|
|
|
|
private function reqGet($url,$headers){
|
|
|
|