900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > php获取公众号微信用户信息

php获取公众号微信用户信息

时间:2024-04-24 12:00:44

相关推荐

php获取公众号微信用户信息

error_reporting(1);header('Content-type:text/html; Charset=utf-8');/* 配置开始 */$appid = ''; //微信公众平台->开发->基本配置->AppID$appKey = ''; //微信公众平台->开发->基本配置->AppSecret/* 配置结束 *///①、获取用户openid$wxPay = new WxService($appid,$appKey);$data = $wxPay->GetOpenid();//获取openidif(!$data['openid']) exit('获取openid失败');//②、获取用户信息$user = $wxPay->getUserInfo($data['openid'],$data['access_token']);?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="renderer" content="webkit" /><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" /><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /><title>微信获取用户信息demo</title><link href="/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"><script src="/jquery/2.1.0/jquery.min.js"></script></head><body><div class="container"><div class="row"><h1>你的基本信息如下:</h1><table class="table table-bordered"><tr><td>openid</td><td><?=$user['openid']?></td></tr><tr><td>unionid</td><td><?=$user['unionid']?></td></tr><tr><td>昵称</td><td><?=$user['nickname']?></td></tr><tr><td>头像</td><td><img src="<?=$user['headimgurl']?>" style="width: 100px;" alt=""></td></tr><tr><td>性别</td><td><?phpswitch (strtoupper($user['sex'])){case 1:echo '男性';break;case 2:echo '女性';break;default:echo '未知';break;}?></td></tr><tr><td>省份 / 城市</td><td><?=$user['province'].' / '.$user['city']?></td></tr><tr><td>language</td><td><?=$user['language']?></td></tr></table></div></div></body></html><?phpclass WxService{protected $appid;protected $appKey;public $data = null;public function __construct($appid, $appKey){$this->appid = $appid; //微信支付申请对应的公众号的APPID$this->appKey = $appKey; //微信支付申请对应的公众号的APP Key}/*** 通过跳转获取用户的openid,跳转流程如下:* 1、设置自己需要调回的url及其其他参数,跳转到微信服务器https://open./connect/oauth2/authorize* 2、微信服务处理完成之后会跳转回用户redirect_uri地址,此时会带上一些参数,如:code** @return 用户的openid*/public function GetOpenid(){//通过code获得openidif (!isset($_GET['code'])){//触发微信返回code码$baseUrl = $this->getCurrentUrl();$url = $this->__CreateOauthUrlForCode($baseUrl);Header("Location: $url");exit();} else {//获取code码,以获取openid$code = $_GET['code'];$openid = $this->getOpenidFromMp($code);return $openid;}}public function getCurrentUrl(){$scheme = $_SERVER['HTTPS']=='on' ? 'https://' : 'http://';$uri = $_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING'];if($_SERVER['REQUEST_URI']) $uri = $_SERVER['REQUEST_URI'];$baseUrl = urlencode($scheme.$_SERVER['HTTP_HOST'].$uri);return $baseUrl;}/*** 通过code从微信公众号平台获取openid及其access_token* @param string $code 微信跳转回来带上的code* @return openid*/public function GetOpenidFromMp($code){$url = $this->__CreateOauthUrlForOpenid($code); $res = self::curlGet($url);$data = json_decode($res,true);$this->data = $data;return $data;}/*** 构造获取openid和access_toke的url地址* @param string $code,微信跳转带回的code* @return 请求的url*/private function __CreateOauthUrlForOpenid($code){$urlObj["appid"] = $this->appid;$urlObj["secret"] = $this->appKey;$urlObj["code"] = $code;$urlObj["grant_type"] = "authorization_code";$bizString = $this->ToUrlParams($urlObj);return "https://api./sns/oauth2/access_token?".$bizString;}/*** 构造获取code的url连接* @param string $redirectUrl 微信服务器回跳的url,需要url编码* @return 返回构造好的url*/private function __CreateOauthUrlForCode($redirectUrl){$urlObj["appid"] = $this->appid;$urlObj["redirect_uri"] = "$redirectUrl";$urlObj["response_type"] = "code";$urlObj["scope"] = "snsapi_userinfo";$urlObj["state"] = "STATE";$bizString = $this->ToUrlParams($urlObj);return "https://open./connect/oauth2/authorize?".$bizString;}/*** 拼接签名字符串* @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;}/*** 获取用户信息* @param string $openid 调用【网页授权获取用户信息】接口获取到用户在该公众号下的Openid* @return string*/public function getUserInfo($openid,$access_token){$response = self::curlGet('https://api./sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN');return json_decode($response,true);}public static function curlGet($url = '', $options = array()){$ch = curl_init($url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_TIMEOUT, 30);if (!empty($options)) {curl_setopt_array($ch, $options);}//https请求 不验证证书和hostcurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);$data = curl_exec($ch);curl_close($ch);return $data;}public static function curlPost($url = '', $postData = '', $options = array()){if (is_array($postData)) {$postData = http_build_query($postData);}$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数if (!empty($options)) {curl_setopt_array($ch, $options);}//https请求 不验证证书和hostcurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);$data = curl_exec($ch);curl_close($ch);return $data;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。