微信开放平台开发 Tp5 + easyweichat3.X

  • 需求
  • 总流程
  • 授权
    • 流程
      • 1.公众号管理员登录我们的授权网站
      • 2. 进入微信官方授权网站
      • 3. 公众号管理员微信扫描二维码。
      • 4.点击授权
    • 开发
      • 1.平台class
      • 2.登录授权的发起页
      • 3.开放平台信息接收
      • 4.回调页面
  • 功能开发

需求

单位想完善微信公众号场景二维码的功能,又不想原微信公众平台设置的自动回复失效,只能曲线救国,利用微信第三方平台,实现微信公众号,事件接收。

总流程

整体流程,首先甲方爸爸,微信公众平台(公众号),需要授权给微信开放平台(第三方)。甲方爸爸:嗯。我的用户关注取关事件,你给我处理一下。第三方:好的。达成协议之后,第三方平台拿到公众号的相关权限和参数,就可以进行开发啦,微信也会将事件推送推送给第三方平台服务器。

授权

流程

1.公众号管理员登录我们的授权网站


没错。我的网站就是这么简陋

2. 进入微信官方授权网站

点击链接,进入微信官方授权网站。嗯。

3. 公众号管理员微信扫描二维码。


权限可以自行选择。具体可参照 第三方平台的权限说明

4.点击授权

微信就会变成酱紫。微信还会推送给第三方服务器,公众号的授权信息。

web页就会变成酱紫

嗯。还是一样简陋。

授权流程就走完啦。

开发

开发嘛。首先你需要有一个第三方平台的账号 申请网址。需要填写一些基本信息,还有几个容易蒙蒙的点。

  1. 登录授权的发起页域名 :就是那两个 简陋 的页面的域名;
  2. 授权测试公众号列表 :测试用的公众号,可以填在里面。主义是原始 ID喔;
  3. 授权事件接收url :就是当有甲方爸爸公众号 申请授权(取消授权/更新授权),微信通知你的url。微信每隔10分钟还会推送一次 component_verify_ticket
  4. 消息与事件接受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();}

授权后的appidauthorizer_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相关推荐

  1. 微信开放平台开发常见错误(长期更新)

    微信开放平台开发常见错误 在开发微信第三方平台的时候,会常见一下错误码 42001: 获取access token超时,一般都是第三方平台的access Token失效导致的 47001: data ...

  2. 微信开放平台开发第三方授权登陆(三):Android客户端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

  3. 微信开放平台开发第三方授权登陆(二):PC网页端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

  4. 微信开放平台开发第三方授权登陆

    本文转载自网络,原文链接https://blog.csdn.net/qq_34190023/article/details/81133619 目录 一.前期准备流程 二.具体实现步骤 1.注册邮箱账号 ...

  5. 微信开放平台开发——网页微信扫码登录(OAuth2.0)

    1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...

  6. 微信开放平台开发(一)

    2019独角兽企业重金招聘Python工程师标准>>> 使用背景 我们的客户都有一个公众号,每个公众号对应的都有用户,但我们的业务是想让这些不同公众号下相同的用户关联起来.所以就选择 ...

  7. 微信开放平台开发第三方授权登陆:微信扫码登录

    一.概述 根据需求,需要拥有第三方微信登录功能,并获取到用户信息. 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 二.前期准备工作 1.注册邮箱账号. 2.根 ...

  8. 微信开放平台开发 微信登录

    在这篇微信公众平台开发教程中,我们将介绍如何使用微信开放平台接口实现微信扫码登录的功能. 准备工作 网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信O ...

  9. 微信开放平台开发(3) 移动应用微信登录

    原文:http://www.cnblogs.com/txw1958/p/weixin-applogin.html 在这篇微信公众平台开发教程中,我们将介绍如何使用微信开放平台接口实现移动应用微信登录的 ...

最新文章

  1. 他的车队低调拿掉安全员,现在用10亿新融资惊艳了所有人
  2. 被程序员忽视的位运算
  3. Java10-day01【继承(变量-构造方法访问-成员方法 访问)、super内存图、方法重写、继承、包、import、权限修饰符、final、static】
  4. mysqld与mysqld_safe的区别
  5. 网络摄像头3 cmos ov9650,plugins/input_s3c2410/
  6. python编程-迭代器(类,方法,继承),函数,数据结构,
  7. Python创建并且打开一个mat文件
  8. 初学者python笔记(迭代器、生成器、三元表达式、列表解析、send()与yield())
  9. maven本地仓库中存在jar包,但编译不成功,显示jar包不存在
  10. 深入剖析Java类加载机制
  11. 送书 | Halcon机器视觉算法原理与编程实战
  12. JQuery1.4 JQuery1.7 JQuery1.8 JQuery1.11中文帮助文档
  13. 火狐firefox插件plugin:
  14. 中国历史上最美的十首古诗词,美到了极致
  15. canvas轨迹运动, 利用向量实现点匀速运动
  16. 理解statsmodels中OLS对应基金alpha、beta、R-squared
  17. APP移动端测试高级
  18. 虚拟产品哪个平台引流比较好?虚拟产品有哪些平台可以引流
  19. 人机对话是怎么产生的?
  20. 在Windows10中对于文件做MD5校验

热门文章

  1. aix下oracle备份脚本,AIX系统下oracle9i实施RMAN全量备份脚本
  2. 数据分析真题日刷 | 小红书2019年校园招聘数据分析岗位在线笔试第二批
  3. arcsde 空间表 oracle,ArcSDE for Oracle中查看空间数据的文本格式
  4. python批量处理 办公_你们都用Python实现了哪些办公自动化?
  5. 用C语言实现辅助教学系统,老师无处安放的魅力呀!
  6. 单精度浮点数与双精度浮点数
  7. Linux 命令(文件和目录管理 - bzip2/bunzip2)
  8. 2020TI杯全国大学生电子设计大赛F题解决方案视觉部分
  9. python根据起始时间和结束时间计算时长
  10. SSH入门项目-6-Shiro安全框架