123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <?php
- namespace addons\qingdongams\library\wx;
- class Jscode {
- private $appId;
- private $appSecret;
- public function __construct($appId, $appSecret) {
- $this->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;
- }
- }
|