serverHost . "oauth2/access_token?app_id={$this->appKey}&app_secret={$this->appSecret}&code={$code}&grant_type=authorization_code"; $url = $this->serverHost . "oauth2/access_token?app_id={$this->appKey}&app_secret={$this->appSecret}&grant_type=client_credentials"; $Alibabahelper = new Alibabahelper(); $s = $Alibabahelper->curl_https_get($url); $s = json_decode($s, true); return $s['access_token']; } // api请求 public function apiSend() { $apiType = "open.order.detail"; $method = 'get'; $param = ['oid'=>'2315900153213958']; $arr['appkey'] = $this->appKey; $arr['version'] = '1'; $arr['access_token'] = $this->getAccessToken(); $arr['timestamp'] = $this->getMillisecond(); $arr['method'] = trim($apiType); $arr['param'] = $param ? json_encode($param) : '{}'; $arr['signMethod'] = 'MD5'; ksort($arr); // 排序 $arr['sign'] = $this->getSign($arr, $this->signSecret); $apiInfo = str_replace('.', '/', $arr['method']); $url = $this->serverHost . $apiInfo; $Alibabahelper = new Alibabahelper(); var_dump($arr); if ($method == 'get') { $s = $Alibabahelper->curl_https_get($url. '?' . http_build_query($arr, '', '&'), array()); } else { $s = $Alibabahelper->curl_https_post($url, $arr); } $s = json_decode($s, true); $this->success('ok',$s); } public function getSign($params, $key) { $unSignParaString = $this->formatQueryParaMap($params, false); $signStr = (md5($unSignParaString . "&signSecret=" . $this->signSecret)); return $signStr; } public function formatQueryParaMap(array $paraMap, $urlEncode = false) { $buff = ""; ksort($paraMap); foreach ($paraMap as $k => $v) { if (null != $v && "null" != $v) { if ($urlEncode) { $v = urlencode($v); } $buff.= $k . "=" . $v . "&"; } } $reqPar = ''; if (strlen($buff) > 0) { $reqPar = substr($buff, 0, strlen($buff) - 1); } return $reqPar; } /*获取13位时间戳*/ private static function getMillisecond() { list($t1, $t2) = explode(' ', microtime()); return sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000); } } class Alibabahelper { function __construct() { } private function curl_get_contents($url, $data = array(), $https = false) { $results['error'] = ''; $results['status'] = 0; $results['data'] = array(); $user_agent = $_SERVER['HTTP_USER_AGENT']; $curl = curl_init(); // 启动一个CURL会话 if (!empty($data) && is_array($data)) { curl_setopt($curl, CURLOPT_POST, TRUE); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); } if ($https) { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 } curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 curl_setopt($curl, CURLOPT_USERAGENT, $user_agent); // 模拟用户使用的浏览器 curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer $results['data'] = curl_exec($curl); // 执行操作 if (curl_errno($curl)) { $results['error'] = curl_error($curl); //捕抓异常 } curl_close($curl); // 关闭CURL会话 return $results['data']; // 返回数据 } public function curl_https_post($url, $data) { return $this->curl_get_contents($url, $data, true); } public function curl_https_get($url) { return $this->curl_get_contents($url, array(), true); } }