appId = $appId; $this->appSecret = $appSecret; } private function getAccessToken() { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret"; $res = json_decode($this->httpGet($url)); $access_token = $res->access_token; return $access_token; } /** * 获取用户的openid * @param string $openid [description] * @return [type] [description] */ public function baseAuth() { if (!isset($_GET['code'])){ //触发微信返回code码 $baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING']); $url = $this->createCode($baseUrl); Header("Location: $url"); exit(); } //2.静默授权,获取code //页面跳转至redirect_uri/?code=CODE&state=STATE $code = $_GET['code']; //3.通过code换取网页授权access_token和openid $curl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->appId . '&secret=' . $this->appSecret . '&code=' . $code . '&grant_type=authorization_code'; $content = $this->httpGet($curl); $result = json_decode($content, true); return $result; } //关注公众号 public function wxinterest(){ $wxInfo = $this->baseAuth(); $accessToken = $this->getAccessToken(); $url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$accessToken.'&openid='.$wxInfo['openid']; $res = json_decode($this->httpGet($url)); return $res; } //判断是否关注公众号 public function isWx(){ $gzxx = $this->wxinterest(); $gzxx = $gzxx->subscribe; return $gzxx; } private function httpGet($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 500); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_URL, $url); $res = curl_exec($curl); curl_close($curl); return $res; } /** * * 拼接签名字符串 * @param array $urlObj * * @return 返回已经拼接好的字符串 */ private function ToUrlParams($urlObj) { $buff = ""; foreach ($urlObj as $k => $v) { if($k != "sign"){ $buff .= $k . "=" . $v . "&"; } } $buff = trim($buff, "&"); return $buff; } //获取code public function createCode($url){ $urlObj["appid"] = $this->appId; $urlObj["redirect_uri"] = "$url"; $urlObj["response_type"] = "code"; $urlObj["scope"] = "snsapi_userinfo"; $urlObj["state"] = "STATE"."#wechat_redirect"; $bizString = $this->ToUrlParams($urlObj); return "https://open.weixin.qq.com/connect/oauth2/authorize?".$bizString; } }