Wechat 微信常用操作静态封装
Wechat
类:
对微信登录和JS签名等进行快捷封装,只需调用指定的方法,会自动生成和验证。
使用前保证账号具有相应权限,并在微信上正确配置相关域名。
(正确配置后此接口会自动生成验证state和缓存签名授权)
接口和方法列表
方法接口
- Wechat::getAuthUrl() 获取微信内端认证跳转链接
- Wechat::checkCode() 静默认证验证
- Wechat::getUserInfo() 获取用户相信信息
- Wechat::signJs() 对URL进行JS签名数据生成
- Wechat::loginConfig() web端微信登录JS配置生成
- Wechat::state() 设置或者读取state设置
相关配置(secret.*.ini中
[wechat]
相关配置)appid
: 微信开发应用IDsecret
: 微信开发APPKEYstate
: 回调自动验证state方式防止重复 'cookie' 或这 'session',为空['']不进行自动验证redirect_base
: 微信内静默授权回调 snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid)redirect_userinfo
: 微信内授权回调URL ;snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地)redirect_login
: 微信网页登录回调URL 开发者接口 ;snsapi_login (网页端登录)js.*
: 生成签名配置时的附加参数如js.debug=1
开启微信JS调试
微信类接口
getAuthUrl生成
function getAuthUrl($scope = 'userinfo', $redirect = null): string
- 参数 $scope string: 授权类型
userinfo
(获取详细信息,默认)base
(静默授权)
- 参数$redirect string: 回调url,默认读取配置
- 返回:string 重定向URL
- 代码
//根据配置生成获取详细信息url
$url=Wechat::getAuthUrl();
//微信内静默授权
$url=Wechat::getAuthUrl('base');
//在controller中可以直接重定向
$this->redirect($url);
checkCode验证微信返回的code
获取用户openid或者token通常配合静默授权使用
function checkCode($key = 'openid', $code = false): mixed
- 参数$key, string: 指定获取的内容
openid
,默认获取openidaccess_token
,获取授权tokennull
或者false返回整个数组
- 参数$code, string: 验证的code,默认读取
GET
参数 - 返回:
- 验证失败:返回false
- 验证成功返回 对应的值(string或者array)
- 代码
//微信回调操作,配合 Wechat::getAuthUrl('base')使用
$openid=Wechat::checkCode();
getUserInfo微信详细信息回掉
获取用户的详细信息
function getUserInfo($code = false): array
- 参数$code, string: 微信回调code,默认自动读取get参数
- 返回:
- 验证失败:返回false或者null(code无效返回null)
- 验证成功返回 array包括{openid,nickname,headimgurl,sex,language,city,province,country,privilege}
- 代码
//微信回调操作,配合 Wechat::getAuthUrl('userinfo')使用
$info=Wechat::getUserInfo();
signJs JS授权签名
微信分享等接口需要使用JS签名
function signJs($url = false): array
- 参数$url, string: 签名的url,如果未设置默认自动读取请求的refer
- 返回:
- 验证失败:返回null
- 验证成功返回 array包括{appId,timestamp,nonceStr,signature}
- tips: 授权返回数据可直接返回到客户端进行签名验证
- tips: 如果没有此即可任何跨域限制和授权验证,请务必制定url防止接口被其他网站调用
- 代码
$data=Wechat::signJs();//自动获取访问url签名
$data=Wechat::signJs('http://yyf.yunyin.org/h5.html');//对指定url签名
echo json_encode($data);
loginConfig 生成网页端登录的配置
网页端调用微信登录API
function loginConfig($redirect = false): array
- 参数$redirect string: 回调url,默认读取配置
- 返回配置数组:{'appid','scope','redirect_uri'}
- 代码
$config=Wechat::loginConfig();
state 自定义状态设置或者读取
微信验证中,有一个get参数state
供回调验证,默认生成随机字符验证.
也可以通过state()方法动态设置state或获取参数
function state([$state]): mixed
- 无参数时,返回当前设置的state状态
- 有参数时,返回当前实例可继续操作
$state=Wechat::state();//获取当前的state设置
//使用指定的state生成跳转url
$url=Wechat::state('specail_state_string')->getAuthUrl();
//等效操作
Wechat::state('specail_state_string')
$url=Wechat::getAuthUrl()
//使用指定的state进行验证
$info=Wechat::state('specail_state_string')->getUserInfo();
//等效操作
Wechat::state('specail_state_string');
$info=Wechat::getUserInfo();
//临时关闭,验证
$openid=Wechat::state(FALSE)->checkCode();