今天thinkphp框架栏目给大家带来的主题就是《thinkphp5.1 easywechat4 微信第三方开放平台》,下面我们来详细介绍~
thinkphp5.1 easywechat4 微信第三方开放平台
需求描述
- 当前商城(uid标识)授权第三方开发平台.
- 网页授权成功后跳转到另一个商城项目链接并带上当前微信用户信息和微信初始化验证签名.
第三方平台授权
安装easywechat4
$ composer require overtrue/wechat:~4.0 -vvv
引用
use EasyWeChat\Factory;
创建一个跳转到微信扫二维码授权页面
/**
* 开发平台授权跳转
*
* @return void
*/
public function accessView(){
//
$uid = Request()->route('uid' , 0);
$url = 'http://qgcloud.capsui.com/public/index/wxopen/config?uid=' . $uid;
$this->assign('url' , $url);
return $this->fetch();
}
跳转方法(为什么我不写到上一个方法呢 因为微信要求同一个地址)
/**
* 开发平台跳转授权扫码页
*
* @return void
*/
public function config(){
$uid = Request()->get('uid' , 0);
$config = [
'app_id' => '开放平台第三方平台 APPID',
'secret' => '开放平台第三方平台 Secret',
'token' => '开放平台第三方平台 Token',
'aes_key' => '开放平台第三方平台 AES Key'
];
$openPlatform = Factory::openPlatform($config);
$url = $openPlatform->getPreAuthorizationUrl('http://qgcloud.capsui.com/public/index/wxopen/wxcallback?uid=' . $uid);
$this->redirect($url);
}
授权回调(注意:扫码确认授权后他第一次回调不会带uid参数,)
引入 use EasyWeChat\OpenPlatform\Server\Guard;
/**
* 开发平台授权回调
*
* @return void
*/
public function wxcallback(){
// 这个表是记录授权成功的
//$Wxpublic = new Wxpublic;
// 这个表是记录授权成功后传过来所属uid商城绑定appid
//$ShopConfig = new ShopConfig;
$get = Request()->param();
$config = [
'app_id' => '开放平台第三方平台 APPID',
'secret' => '开放平台第三方平台 Secret',
'token' => '开放平台第三方平台 Token',
'aes_key' => '开放平台第三方平台 AES Key'
];
$openPlatform = Factory::openPlatform($config);
$server = $openPlatform->server;
// 处理授权成功事件-第一次回调
// 闭包方法!里面调用外面的方法请在use里面填写
$server->push(function ($message) use ($openPlatform /*, $Wxpublic*/) {
$authCode = $message['AuthorizationCode'];
$res = $openPlatform->handleAuthorize($authCode);
if($res['authorization_info']['authorizer_refresh_token']){
//授权成功记录到数据库
//$Wxpublic->insert(['appid' => $res['authorization_info']['authorizer_appid'] , 'createtime' => time()]);
}
}, Guard::EVENT_AUTHORIZED);
// 处理授权取消事件-第一次回调
// 闭包方法!里面调用外面的方法请在use里面填写
$server->push(function ($message) use(/*$Wxpublic , $ShopConfig*/) {
//处理数据库逻辑
//$Wxpublic::appid($message['AppId'])->delete();
//$ShopConfig::appid($message['AppId'])->update(['token' => '']);
}, Guard::EVENT_UNAUTHORIZED);
// 第二次回调会带一个授权code和自定义参数商城id(uid)
if(isset($get['auth_code']) && isset($get['uid'])){
$res = $openPlatform->handleAuthorize($get['auth_code']);
$appid = $res['authorization_info']['authorizer_appid'];
//数据库逻辑
//$isConfig = $Wxpublic::appid($appid)->count();
//if($isConfig){
//$add = $ShopConfig->where('uid' , $get['uid'])->update(['token' => $appid]);
//}
}
return $server->serve();
}
第三方平台 网页授权&微信JSSDK初始化签名生成
/**
* 网页授权调起
*
* @return void
*/
public function htmlAccess(){
$appid = Request()->get('appid' , 0);
$config = [
'app_id' => '开放平台第三方平台 APPID',
'secret' => '开放平台第三方平台 Secret',
'token' => '开放平台第三方平台 Token',
'aes_key' => '开放平台第三方平台 AES Key'
];
$openPlatform = Factory::openPlatform($config);
$data = $openPlatform->getAuthorizer($appid);
$appid = $data['authorization_info']['authorizer_appid'];
$refreshToken = $data['authorization_info']['authorizer_refresh_token'];
$officialAccount = $openPlatform->officialAccount($appid , $refreshToken);
$oauth = $officialAccount->oauth;
// 回调授权地址
$url = "http://qgcloud.capsui.com/public/index/wxopen/callbackOpenid";
$response = $officialAccount->oauth->scopes(['snsapi_userinfo'])->redirect($url)->send();
}
/**
* 网页授权回调
*
* @return void
*/
public function callbackOpenid(){
$appid = Request()->get('appid' , null);
$config = [
'app_id' => '开放平台第三方平台 APPID',
'secret' => '开放平台第三方平台 Secret',
'token' => '开放平台第三方平台 Token',
'aes_key' => '开放平台第三方平台 AES Key'
];
$openPlatform = Factory::openPlatform($config);
$data = $openPlatform->getAuthorizer($appid);
$appid = $data['authorization_info']['authorizer_appid'];
$refreshToken = $data['authorization_info']['authorizer_refresh_token'];
// 获取微信用户信息 如openid nickname等信息
$officialAccount = $openPlatform->officialAccount($appid , $refreshToken);
$oauth = $officialAccount->oauth;
$user = $oauth->user();
// 处理wxconfig初始化JSSDK
$officialAccount->jssdk->setUrl('http://quguoshop.capsui.com/');
$wxconfig = $officialAccount->jssdk->buildConfig(['chooseWXPay'], $debug = true, $beta = false, $json = true);
$ShopConfig = new ShopConfig;
$shopInfo = $ShopConfig::appid($appid)->find();
// 注意 这里我是带参数跳转到其他TP5项目里面再用缓存处理一下
$url = 'http://quguoshop.capsui.com/public/wxoauthCallback?data=' . json_encode($user->toArray()) . '&token=' . $shopInfo['id'] . '&wxconfig=' . $wxconfig;
$this->redirect($url);
}
《相关推荐:最新的10个thinkphp视频教程》
以上就是介绍thinkphp5.1 easywechat4微信第三方开放平台的详细内容,更多请关注亿码酷站其它相关文章!
介绍thinkphp5.1 easywechat4微信第三方开放平台
—–文章转载自PHP中文网如有侵权请联系ymkuzhan@126.com删除
转载请注明来源:介绍thinkphp5.1 easywechat4微信第三方开放平台
本文永久链接地址:https://www.ymkuzhan.com/30729.html
本文永久链接地址:https://www.ymkuzhan.com/30729.html
下载声明:
本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压; 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版! 版权声明:
下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。 免责声明:
您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!



