第一步:注册账号
首先注册微信开放平台账户并创建第三方平台 地址

配置公证号权限集

配置开发资料如下图 测试的话可以不用全网发布

第二步: 安装开发依赖包
我用的是EasyWeChat包, 安装 - 按照官网文档配置 官网地址

$ composer require overtrue/wechat:~4.0 -vvv

第三步:开发流程
1、首先启动票据推送服务 文档地址
2、获取验证票据 获取授权码 文档地址
提示:二维码链接必须在配置的域名网站下跳转,不然会限制跳转。
(包含PC端二维码如下图,移动端h5链接快速授权 移动H5链接)


移动端扫码授权界面

3、使用授权码获取授权信息 文档地址
4、自行处理第三方平台推送事件包含 (授权成功事件;授权更新事件;授权取消事件)并根据业务需求自行处理;

具体代码如下:

<?phpnamespace App\Http\Repositories\SmallShop\Store;use Illuminate\Http\Request;
use EasyWeChat\Factory;
use Illuminate\Support\Facades\Log;
use EasyWeChat\OpenPlatform\Server\Guard;
use App\Model\SmallShop\SmallPlatformAccount;class SmallOpenPlatformRepository
{protected $request;protected $account;protected $openPlatform;/*** @param Request $request* @param SmallPlatformAccount $account*/public function __construct(Request $request, SmallPlatformAccount $account){$this->request = $request;$this->account = $account;//$config = config('wechat.open_platform.default');$config = ['app_id'  => 'wx5355*******','secret'  => 'e212abd70b********','token'   => 'wsa2qw86b86k********','aes_key' => 'pak2g7mwgz1stw6********',];$this->openPlatform = Factory::openPlatform($config);}//启动票据推送服务public function ticket(){$post_data = ['component_appid' => 'wx5355cd83e30f****', 'component_secret' => 'e212abd70b0288844db6a**********'];$options = array('http' => array('method' => 'POST','header' => 'Content-type:application/x-www-form-urlencoded','content' => json_encode($post_data),'timeout' => 15 * 60 // 超时时间(单位:s)));$context = stream_context_create($options);$url = 'https://api.weixin.qq.com/cgi-bin/component/api_start_push_ticket';echo file_get_contents($url, false, $context);}//第三方平台推送事件public function index(){// 第三方平台接入处理$server = $this->openPlatform->server;// 处理授权成功事件$server->push(function ($message) {//Log::channel('x_log')->info('微信公众平台授权成功事件' . json_encode($message) . '====');//获取(刷新)授权公众号或小程序的接口调用凭据(令牌)$res = $this->openPlatform->handleAuthorize($message['AuthorizationCode']);$appid = $res['authorization_info']['authorizer_appid'];//获取授权方的帐号基本信息并记录授权的开放平台账户$this->record_account($this->openPlatform->getAuthorizer($appid), $res);}, Guard::EVENT_AUTHORIZED);// 处理授权更新事件$server->push(function ($message) {$res = $this->openPlatform->handleAuthorize($message['AuthorizationCode']);$appid = $res['authorization_info']['authorizer_appid'];//获取授权方的帐号基本信息并记录授权的开放平台账户$remarks = date('Y-m-d H:i:s') . ' 更新了公众号权限集';$this->record_account($this->openPlatform->getAuthorizer($appid), $res, $remarks);}, Guard::EVENT_UPDATE_AUTHORIZED);// 处理授权取消事件$server->push(function ($message) {$data = ['status' => 2, 'cancel_at' => date('Y-m-d H:i:s')];$this->update_account($message['AuthorizerAppid'], $data);}, Guard::EVENT_UNAUTHORIZED);return $server->serve();}//记录授权的公众号信息public function record_account($data, $res, $remarks = ''){$info = $data['authorizer_info'];$auth = $data['authorization_info'];$where = ['appid' => $auth['authorizer_appid']];$account = ['appid' => $auth['authorizer_appid'],'nick_name' => $info['nick_name'],'head_img' => $info['head_img'],'user_name' => $info['user_name'],'principal_name' => $info['principal_name'],'qrcode_url' => $info['qrcode_url'],'service_type_info' => $info['service_type_info']['id'],'verify_type_info' => $info['verify_type_info']['id'],'refresh_token' => $auth['authorizer_refresh_token'],'status' => 1,'remarks' => $remarks,'content' => json_encode($res)];return $this->account->updateOrCreate($where, $account);}//更新授权的公众号信息public function update_account($appid, $data){return $this->account->where('appid', $appid)->update($data);}//获取用户授权页 URLpublic function get_url(){$type = $this->request->get('type');if ($type) {$url = $this->openPlatform->getPreAuthorizationUrl('http://' . $_SERVER['SERVER_NAME'] . '/agent/#/users');//PC端二维码授权} else {$url = $this->openPlatform->getMobilePreAuthorizationUrl('http://' . $_SERVER['SERVER_NAME'] . '/mall/#/invitation/index');//H5链接授权}return ["message" => "获取成功!", "data" => $url];}//根据授权码获取授权信息绑定商家public function authorizer(){$code = request('auth_code');//Log::channel('wx_third')->info('根据授权码绑定商家公众号' . $code);if ($code) {$info = $this->openPlatform->handleAuthorize($code);$appid = $info['authorization_info']['authorizer_appid'];$store_id = get_store_id();$account = $this->account->where(['store_id' => $store_id])->first(['id', 'appid']);if ($account && $account->appid != $appid) {$this->account->where(['store_id' => $store_id])->update(['store_id' => null, 'remarks' => 'H5修改前store_id=' . $store_id]);}if ($this->update_account($appid, ['store_id' => $store_id])) {/*if($this->check_menu($store_id)){$this->smallWechatRepository->create_menu($appid, $store_id);}*/return ["message" => "公众号授权绑定小店成功!"];}Log::channel('wx_third_fail')->info('H5绑定小店失败 APPID:' . $appid . ' store_id:' . $store_id);return ["message" => "绑定小店失败!", "code" => 202];} else {return ["message" => "参数错误auth_code!", "code" => 201];}}//获取授权的公众号列表public function lists(){$lists = $this->openPlatform->getAuthorizers();return ["message" => "获取成功", "data" => $lists];}}

移动端扫码授权后 会跳转一个链接 后面默认给你拼了两个参数(一个是授权码另一个是有效时间)这两个参数可以获取公证号信息 文档地址

 //根据授权码获取授权信息绑定商家public function authorizer(){$code = request('auth_code');//Log::channel('wx_third')->info('根据授权码绑定商家公众号' . $code);if ($code) {$info = $this->openPlatform->handleAuthorize($code);$appid = $info['authorization_info']['authorizer_appid'];$store_id = get_store_id();$account = $this->account->where(['store_id' => $store_id])->first(['id', 'appid']);if ($account && $account->appid != $appid) {$this->account->where(['store_id' => $store_id])->update(['store_id' => null, 'remarks' => 'H5修改前store_id=' . $store_id]);}if ($this->update_account($appid, ['store_id' => $store_id])) {/*if($this->check_menu($store_id)){$this->smallWechatRepository->create_menu($appid, $store_id);}*/return ["message" => "公众号授权绑定小店成功!"];}Log::channel('wx_third_fail')->info('H5绑定小店失败 APPID:' . $appid . ' store_id:' . $store_id);return ["message" => "绑定小店失败!", "code" => 202];} else {return ["message" => "参数错误auth_code!", "code" => 201];}}

目前只能在微信公众号后台取消授权

微信开放平台(第三方平台)代公众号发起网页授权

微信公证号授权给微信开放平台(第三方平台)开发流程 PHP (基于laravel框架开发)相关推荐

  1. RuoYi-App移动版(uni-app)微信公众号授权登录

    前言 略 uni-app 未提供微信公众号授权登录 uni.login是一个客户端API,统一封装了各个平台的各种常见的登录方式,包括App手机号一键登陆.三方登录(微信.微博.QQ.Apple.go ...

  2. 【解决】小程序|微信公众号授权给第三方平台时报“没有绑定公众号”

    如果第三方平台没有全网发布时,要在授权账号公众号列表里面填写的原始ID.如果是测试小程序,也要加上小程序的原始ID. 实操验证的经验. 完整小程序第三方授权操作流程: 1.第三方平台需要设置小程序权限 ...

  3. 获取微信公众号授权失败, 请稍后重试! 公众平台返回原始数据为: 错误代码-40164

    获取微信公众号授权失败, 请稍后重试! 公众平台返回原始数据为: 错误代码-40164,错误信息-invalid ip, not in whitelist hint: [] 通过开发者ID及密码调用获 ...

  4. 微信公众号授权登录(asp.net + angular)

    微信是时下最火的,上面有数以亿计的用户,如果能接入微信将大大减低注册门槛,当然,接入微信登录是有门槛的.微信登录一般有两个,一个是微信开放平台授权登录,一个是微信公众号授权登录,两者都需要认证才可以继 ...

  5. 微信开放平台-第三方平台开发配置及常见的问题

    目录 概述 参考文档 开源项目&工具 第三方平台设置 问题及解决方法 概述 本实例:第三方平台+微信公众号(服务号) 微信开放平台-第三方平台,为广大公众号和小程序提供运营服务和行业解决方案. ...

  6. 微信登录(微信公众号授权)的开发(详解)

    1.UnionId和OpenId 微信登录最重要的两个返回信息,一个是UnionId,一个是OpenId.两者之间有着必然的联系. 首先,先来理一下微信开放平台的架构.开发微信登录,必须有一个开放平台 ...

  7. 微信开放平台-第三方平台-全网发布接入【java版本】

    微信给出的文档 概述 在第三方平台方创建成功并最终开发测试完毕,提交全网发布申请时,微信服务器会通过自动化测试的方式,检测服务的基础逻辑是否可用,在确保基础可用的情况下,才会允许公众号第三方平台提交全 ...

  8. EasyWeChat微信开放平台第三方平台接入流程

    授权流程技术说明: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Authorization_Process ...

  9. 微信登录 sdk 服务器,微信登录(微信公众号授权)的开发(详解)——两三行代码的事,何必呢...

    新版重构的SDK已经开始在写了,具体的使用方法参考 新版重构的SDK已经开始在写了,具体的使用方法参考 新版重构的SDK已经开始在写了,具体的使用方法参考 新版重构的SDK已经开始在写了,具体的使用方 ...

  10. 微信公众号授权步骤详细步骤介绍和整合springboot开发(java版)

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 一.微信公众号授权步骤 首先到微信公众平台注册账号,可以看到有四种类型(服务号,订阅号,小程 ...

最新文章

  1. 2021年大数据Flink(四十二):​​​​​​​BroadcastState
  2. 获取SQLServer数据库中所有表
  3. struct 数组
  4. 设计模式复习-状态模式
  5. java skype 类库_Skype4Java 用 实现的 ,内附具体的开发文档和使用说明 Develop 238万源代码下载- www.pudn.com...
  6. effective c++_【阅读笔记】Effective C++()
  7. 【JavaScript】判断一个字符串是否是数值 / 判断是否包含字母(附常用正则表达式)
  8. 企业生产经营相关英文及缩写之(9)--称号/部门/公司
  9. [蓝桥杯][历届试题]网络寻路(DFS)
  10. redhat6.5手动配置网络
  11. java 多态与重载的区别_java实现多态 方法的重写和重载的区别
  12. 疫情蔓延让这项CV技术突然火了,盘点开源代码
  13. cv resource
  14. ESLint 规则详解(二)
  15. pytorch实现NS方程求解-基础PINN
  16. 飞思卡尔单片机c语言编程详解,主流16位单片机学习详解:飞思卡尔MC9S12G系列...
  17. crackme005
  18. 大数据的一些入门教程
  19. 100% 解决华硕 Armoury Crate 奥创软件安装及更新问题。解决错误码 502 等问题
  20. 利用@media与@media screen进行响应式布局

热门文章

  1. 福昕阅读器注册无法连接服务器,福昕pdf阅读器 10安装使用教程(附注册机)
  2. safri 对于display:block;的元素显示不出来 其他所有浏览器均正常
  3. cmd打开记事本并写字_Windows中的记事本和写字板之间有什么区别?
  4. VC 获取汉字拼音首字母(unicode编码)上
  5. 标书制作,全流程视频教程大全
  6. python软件长什么样子图片_使用Python把多个图片拼接成为长图
  7. mybatis discriminator 鉴定器
  8. 计算机远程终端控制示意图,Windows远程控制完全指南
  9. rust拆除建筑_破败建筑除了拆除或修复,变成废墟花园是更浪漫的一种可能
  10. 微信小程序测试应该注意的事项