微信开放平台开发 Tp5 + easyweichat3.X
微信开放平台开发 Tp5 + easyweichat3.X
- 需求
- 总流程
- 授权
- 流程
- 1.公众号管理员登录我们的授权网站
- 2. 进入微信官方授权网站
- 3. 公众号管理员微信扫描二维码。
- 4.点击授权
- 开发
- 1.平台class
- 2.登录授权的发起页
- 3.开放平台信息接收
- 4.回调页面
- 功能开发
需求
单位想完善微信公众号场景二维码的功能,又不想原微信公众平台设置的自动回复失效,只能曲线救国,利用微信第三方平台,实现微信公众号,事件接收。
总流程
整体流程,首先甲方爸爸,微信公众平台(公众号),需要授权给微信开放平台(第三方)。甲方爸爸:嗯。我的用户关注取关事件,你给我处理一下。第三方:好的。达成协议之后,第三方平台拿到公众号的相关权限和参数,就可以进行开发啦,微信也会将事件推送推送给第三方平台服务器。
授权
流程
1.公众号管理员登录我们的授权网站
没错。我的网站就是这么简陋
2. 进入微信官方授权网站
点击链接,进入微信官方授权网站。嗯。
3. 公众号管理员微信扫描二维码。
权限可以自行选择。具体可参照 第三方平台的权限说明
4.点击授权
微信就会变成酱紫。微信还会推送给第三方服务器,公众号的授权信息。
web页就会变成酱紫
嗯。还是一样简陋。
授权流程就走完啦。
开发
开发嘛。首先你需要有一个第三方平台的账号 申请网址。需要填写一些基本信息,还有几个容易蒙蒙的点。
- 登录授权的发起页域名 :就是那两个 简陋 的页面的域名;
- 授权测试公众号列表 :测试用的公众号,可以填在里面。主义是原始 ID喔;
- 授权事件接收url :就是当有甲方爸爸公众号 申请授权(取消授权/更新授权),微信通知你的url。微信每隔10分钟还会推送一次 component_verify_ticket;
- 消息与事件接受url:公众号授权之后,第三方平台代为开发,这是微信推送给原公众号的消息,就会推送到第三方服务器上。为了开放平台区分各个消息的来源,url上需要鞋带公众号的appid,格式为 www.abc.com/aaa/APPID/bbb/cgi,需要用路由处理一下。
1.平台class
这次开发用的EasyWeChat SDK,不需要考虑微信繁琐的 开发流程。一定要看文档哦,这里就不再赘述了。
首先,创建平台。
use EasyWeChat\Foundation\Application;class Platform extends Controller{protected $openPlatform;public function __construct(){$options = ['open_platform' => config('open_platform')];//open_platform 微信开放平台配置 app_id、secret、token、aes_key$app = new Application($options);$this->openPlatform = $app->open_platform;}}
2.登录授权的发起页
//预授权页面 public function auth(){$openPlatform = $this->openPlatform;$response = $openPlatform->pre_auth->redirect(config('open_redirect'));//open_redirect 授权回调url 第二个丑丑的页面url$url = $response->getTargetUrl();//获得授权url echo ' <meta name="referrer" content="origin-when-cross-origin" ><a style="color: inherit" href="'.$url.'"><p>微信平台绑定</p></a>';}
直接用浏览器打开授权url无效喔,会报如下错误。一定要从授权页跳转才行
3.开放平台信息接收
接收授权通知以及component_verify_ticket 的接口了
方法
//微信通知,主要是component_verify_ticket等信息 public function notify(){$openPlatform = $this->openPlatform;$openPlatform->server->setMessageHandler(function($event) use($openPlatform){switch ($event->InfoType) {case Guard::EVENT_AUTHORIZED: // 授权成功 $res = $openPlatform->getAuthorizationInfo($event->AuthorizationCode);//Save to DB$appid = $res->authorization_info['authorizer_appid'];$refresh_token = $res->authorization_info['authorizer_refresh_token'];DB::table("weixin")->insert(['appid' => $appid,'refresh_token' => $refresh_token,'res'=>json_encode($res)]);break;case Guard::EVENT_UPDATE_AUTHORIZED: // 更新授权//todobreak;case Guard::EVENT_UNAUTHORIZED: // 取消授权//删除授权信息Db::table('weixin')->where(['appid'=>$event['AuthorizerAppid']])->delete();break;}});$response = $openPlatform->server->serve();$response->send();}
授权后的appid 和 authorizer_refresh_token 以后还需要用,保存起来
4.回调页面
第二个丑丑的页面
public function callback(){$openPlatform = $this->openPlatform;try{return 'Success';}catch (Exception $ex){abort(404,$ex->getMessage());}}
以上,授权的相关代码,就写完啦,可根据自己需求完善。
功能开发
以用户关注取关公众号为例
首先,需要处理下url,加路由,让 APPID 以id参数 接收
Route::rule('weixin/Platform/openindex/:id','weixin/Platform/openindex');
然后就是代码啦
//公众号消息验证public function openindex($id = 0){//验证是否有该appid 并取出$info = Db::table('weixin')->where(['appid'=>$id])->find();if(!$info){return false;}$openPlatform = $this->openPlatform;$authorizerAppId = $info['appid'];$authorizerRefreshToken = $info['refresh_token'];$app = $openPlatform->createAuthorizerApplication($authorizerAppId, $authorizerRefreshToken);$app->server->setMessageHandler(function($message) use($app){switch($message->ToUserName){//根据不同的appid 写不同的逻辑case 'APPID1':if ($message->MsgType == 'event') {//消息类型 为 事件# code...try{switch ($message->Event) {case 'subscribe'://订阅 带参数订阅 不带参数订阅//todobreak;case 'unsubscribe'://取关//todobreak;case 'SCAN'://扫描二维码 带参//todobreak;}}catch (Exception $ex){Log::debug('try:'.json_encode($ex->getMessage()));}}break;case 'APPID2'://todobreak;}});$response = $app->server->serve();$response->send(); // Laravel 里请使用:return $response;}
至此。就搞定啦!
微信开放平台开发 Tp5 + easyweichat3.X相关推荐
- 微信开放平台开发常见错误(长期更新)
微信开放平台开发常见错误 在开发微信第三方平台的时候,会常见一下错误码 42001: 获取access token超时,一般都是第三方平台的access Token失效导致的 47001: data ...
- 微信开放平台开发第三方授权登陆(三):Android客户端
微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...
- 微信开放平台开发第三方授权登陆(二):PC网页端
微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...
- 微信开放平台开发第三方授权登陆
本文转载自网络,原文链接https://blog.csdn.net/qq_34190023/article/details/81133619 目录 一.前期准备流程 二.具体实现步骤 1.注册邮箱账号 ...
- 微信开放平台开发——网页微信扫码登录(OAuth2.0)
1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...
- 微信开放平台开发(一)
2019独角兽企业重金招聘Python工程师标准>>> 使用背景 我们的客户都有一个公众号,每个公众号对应的都有用户,但我们的业务是想让这些不同公众号下相同的用户关联起来.所以就选择 ...
- 微信开放平台开发第三方授权登陆:微信扫码登录
一.概述 根据需求,需要拥有第三方微信登录功能,并获取到用户信息. 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 二.前期准备工作 1.注册邮箱账号. 2.根 ...
- 微信开放平台开发 微信登录
在这篇微信公众平台开发教程中,我们将介绍如何使用微信开放平台接口实现微信扫码登录的功能. 准备工作 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信O ...
- 微信开放平台开发(3) 移动应用微信登录
原文:http://www.cnblogs.com/txw1958/p/weixin-applogin.html 在这篇微信公众平台开发教程中,我们将介绍如何使用微信开放平台接口实现移动应用微信登录的 ...
最新文章
- 他的车队低调拿掉安全员,现在用10亿新融资惊艳了所有人
- 被程序员忽视的位运算
- Java10-day01【继承(变量-构造方法访问-成员方法 访问)、super内存图、方法重写、继承、包、import、权限修饰符、final、static】
- mysqld与mysqld_safe的区别
- 网络摄像头3 cmos ov9650,plugins/input_s3c2410/
- python编程-迭代器(类,方法,继承),函数,数据结构,
- Python创建并且打开一个mat文件
- 初学者python笔记(迭代器、生成器、三元表达式、列表解析、send()与yield())
- maven本地仓库中存在jar包,但编译不成功,显示jar包不存在
- 深入剖析Java类加载机制
- 送书 | Halcon机器视觉算法原理与编程实战
- JQuery1.4 JQuery1.7 JQuery1.8 JQuery1.11中文帮助文档
- 火狐firefox插件plugin:
- 中国历史上最美的十首古诗词,美到了极致
- canvas轨迹运动, 利用向量实现点匀速运动
- 理解statsmodels中OLS对应基金alpha、beta、R-squared
- APP移动端测试高级
- 虚拟产品哪个平台引流比较好?虚拟产品有哪些平台可以引流
- 人机对话是怎么产生的?
- 在Windows10中对于文件做MD5校验
热门文章
- aix下oracle备份脚本,AIX系统下oracle9i实施RMAN全量备份脚本
- 数据分析真题日刷 | 小红书2019年校园招聘数据分析岗位在线笔试第二批
- arcsde 空间表 oracle,ArcSDE for Oracle中查看空间数据的文本格式
- python批量处理 办公_你们都用Python实现了哪些办公自动化?
- 用C语言实现辅助教学系统,老师无处安放的魅力呀!
- 单精度浮点数与双精度浮点数
- Linux 命令(文件和目录管理 - bzip2/bunzip2)
- 2020TI杯全国大学生电子设计大赛F题解决方案视觉部分
- python根据起始时间和结束时间计算时长
- SSH入门项目-6-Shiro安全框架