public function getuserinfo(){ header("Content-type:text/html;charset=utf-8"); ini_set('date.timezone', 'Asia/Shanghai'); //引入封裝的類 // import('Common.Lib.WxPayPubHelper.WxPayPubHelper'); //使用jsapi接口 //$jsApi = new \JsApi_pub(); /* 經過code得到openid*/ if (!isset($_GET['code'])) { //觸發微信返回code碼 $url = $this->createOauthUrlForCode("http://" . $_SERVER['HTTP_HOST'] . "/Web/Index/index.html"); header("Location: $url"); } else { //獲取code碼,以獲取openid $code = I('get.code'); if (!empty($code)) { $this->setCode($code); $result_wechat = $this->getWxInfomation(); if ($result_wechat) { if (!M('web_user')->where(array('openid' => $result_wechat['openid']))->find()) M('web_user')->add($result_wechat); cookie('openid', $result_wechat['openid']); cookie('nickname', $result_wechat['nickname']); cookie('wechatinfo', $result_wechat); } } } } *** > //其實須要一個包,可是我不知道怎麼傳文件,我只能複製一些能用的函數了 /** * 做用:生成能夠得到code的url */ function createOauthUrlForCode($redirectUrl) { $urlObj["appid"] = WxPayConf_pub::APPID; $urlObj["redirect_uri"] = "$redirectUrl"; $urlObj["response_type"] = "code"; $urlObj["scope"] = "snsapi_userinfo"; $urlObj["state"] = "STATE" . "#wechat_redirect"; $bizString = $this->formatBizQueryParaMap($urlObj, false); return "https://open.weixin.qq.com/connect/oauth2/authorize?" . $bizString; } /** * 做用:格式化參數,簽名過程須要使用 */ function formatBizQueryParaMap($paraMap, $urlencode) { $buff = ""; ksort($paraMap); foreach ($paraMap as $k => $v) { if ($urlencode) { $v = urlencode($v); } //$buff .= strtolower($k) . "=" . $v . "&"; $buff .= $k . "=" . $v . "&"; } $reqPar; if (strlen($buff) > 0) { $reqPar = substr($buff, 0, strlen($buff) - 1); } return $reqPar; } /** * 做用:設置code */ function setCode($code_) { $this->code = $code_; } /** * 獲取微信用戶數據 * @return mixed */ function getWxInfomation() { $url = $this->createOauthUrlForOpenid(); //初始化curl $ch = curl_init(); //設置超時 curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //運行curl,結果以jason形式返回 $res = curl_exec($ch); curl_close($ch); //取出openid $data = json_decode($res, true); if ($data) { $url = $this->createOauthUrlForUserInfo($data['access_token'], $data['openid']); //初始化curl $ch = curl_init(); //設置超時 curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //運行curl,結果以jason形式返回 $res = curl_exec($ch); curl_close($ch); //取出openid $data = json_decode($res, true); return $data; } }