|
|
@@ -5,88 +5,61 @@ class Model_apittv1 extends Lin_Model {
|
|
|
$this->load->_model("Model_logic_ding","logic_ding");
|
|
|
}
|
|
|
|
|
|
- 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']);
|
|
|
+
|
|
|
+
|
|
|
+ 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);
|
|
|
- // }
|
|
|
-
|
|
|
- private function reqGet($url,$headers){
|
|
|
+ // 使用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){
|
|
|
|
|
|
// 初始化cURL
|
|
|
$ch = curl_init();
|