PHP实现微信公众号主动推送消息
这篇文章主要介绍了php实现微信公众号主动推送消息的方法,PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制,需要的朋友可以参考下。
通过学习借鉴朋友的实现方法进行整理,实现了PHP版的微信公共平台消息主动推送,分享给大家供大家参考,具体内容如下。
此方法是通过模拟登录微信公共平台的方法来实现的。
代码如下:
一、登录接口部分代码
//登录private function login(){$url = 'https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN';$this->send_data = array('username' => $this->_account,'pwd' => md5($this->_password),'f' => 'json');$this->referer = "https://mp.weixin.qq.com/";$this->getHeader = 1;$result = explode("\n",$this->curlPost($url));foreach ($result as $key => $value) {$value = trim($value);if(preg_match('/"ErrCode": (.*)/i', $value,$match)){//获取tokenswitch ($match[1]) {case -1:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"系统错误")));case -2:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"帐号或密码错误")));case -3:die(urldecode(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>urlencode("密码错误")))));case -4:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"不存在该帐户")));case -5:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"访问受限")));case -6:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"需要输入验证码")));case -7:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"此帐号已绑定私人微信号,不可用于公众平台登录")));case -8:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"邮箱已存在")));case -32:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"验证码输入错误")));case -200:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"因频繁提交虚假资料,该帐号被拒绝登录")));case -94:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"请使用邮箱登陆")));case 10:die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"该公众会议号已经过期,无法再登录使用")));case 0:$this->userFakeid = $this->getUserFakeid();break;}}if(preg_match('/^set-cookie:[\s]+([^=]+)=([^;]+)/i', $value,$match)){//获取cookie$this->cookie .=$match[1].'='.$match[2].'; ';}if(preg_match('/"ErrMsg"/i', $value,$match)){//获取token$this->token = rtrim(substr($value,strrpos($value,'=')+1),'",');}}}
二、信息发送部分代码
//单发消息private function send($fakeid,$content){$url = 'https://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN';$this->send_data = array('type' => 1,'content' => $content,'error' => 'false','tofakeid' => $fakeid,'token' => $this->token,'ajax' => 1,);$this->referer = 'https://mp.weixin.qq.com/cgi-bin/singlemsgpage?token='.$this->token.'&fromfakeid='.$fakeid.'&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_CN';return $this->curlPost($url);}
三、群发信息代码
//群发消息public function sendMessage($content='',$userId='') {if(is_array($userId) && !empty($userId)){foreach($userId as $v){$json = json_decode($this->send($v,$content));if($json->ret!=0){$errUser[] = $v;}}}else{foreach($this->userFakeid as $v){$json = json_decode($this->send($v['fakeid'],$content));if($json->ret!=0){$errUser[] = $v['fakeid'];}}}//共发送用户数$count = count($this->userFakeid);//发送失败用户数$errCount = count($errUser);//发送成功用户数$succeCount = $count-$errCount;$data = array('status'=>0,'count'=>$count,'succeCount'=>$succeCount,'errCount'=>$errCount,'errUser'=>$errUser );return json_encode($data);}
四、获取所有用户信息代码片段
//获取所有用户信息public function getAllUserInfo(){foreach($this->userFakeid as $v){$info[] = $this->getUserInfo($v['groupid'],$v['fakeid']);}return $info;}//获取用户信息public function getUserInfo($groupId,$fakeId){$url = "https://mp.weixin.qq.com/cgi-bin/getcontactinfo?t=ajax-getcontactinfo&lang=zh_CN&fakeid={$fakeId}";$this->getHeader = 0;$this->referer = 'https://mp.weixin.qq.com/cgi-bin/contactmanagepage?token='.$this->token.'&t=wxm-friend&lang=zh_CN&pagesize='.$this->pageSize.'&pageidx=0&type=0&groupid='.$groupId;$this->send_data = array('token'=>$this->token,'ajax'=>1);$message_opt = $this->curlPost($url);return $message_opt;}//获取所有用户fakeidprivate function getUserFakeid(){ini_set('max_execution_time',600);$pageSize = 1000000;$this->referer = "https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token={$_SESSION['token']}";$url = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize={$pageSize}&pageidx=0&type=0&groupid=0&token={$this->token}&lang=zh_CN";$user = $this->vget($url);$preg = "/\"id\":(\d+),\"name\"/";preg_match_all($preg,$user,$b);$i = 0;foreach($b[1] as $v){$url = 'https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize='.$pageSize.'&pageidx=0&type=0&groupid='.$v.'&token='.$this->token.'&lang=zh_CN';$user = $this->vget($url);$preg = "/\"id\":(\d+),\"nick_name\"/";preg_match_all($preg,$user,$a);foreach($a[1] as $vv){$arr[$i]['fakeid'] = $vv;$arr[$i]['groupid'] = $v;$i++;}}return $arr;}
PHP实现微信公众号主动推送消息相关推荐
- php 主动推送消息,php实现微信公众号主动推送消息
通过学习借鉴朋友的实现方法进行整理,实现了PHP版的微信公共平台消息主动推送,分享给大家供大家参考,具体内容如下 此方法是通过模拟登录微信公共平台的方法来实现的. 代码如下: 一.登录接口部分代码 / ...
- php订阅号发送消息,php实现微信公众号主动推送消息
通过学习借鉴朋友的实现方法进行整理,实现了PHP版的微信公共平台消息主动推送,分享给大家供大家参考,具体内容如下 此方法是通过模拟登录微信公共平台的方法来实现的. 代码如下: 一.登录接口部分代码 / ...
- php主动推送弹幕_php简陋版实现微信公众号主动推送消息
推荐一个网站 www.itziy.com csdn免积分下载器.pudn免积分下载器.51cto免积分下载器 www.verypan.com 百度网盘搜索引擎 www.94cto.com 编程相关视频 ...
- 微信公众号怎么推送消息_微信公众号发送消息
A.模板消息发送 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息. 备注 ...
- 手把手教你最近很火的 微信公众号测试号推送消息
最近有很多小伙伴在尝试做消息推送,今天详细教程它来啦!!! 过程不太复杂,跟着一步一步做就可以实现. 没时间的话,先收藏,等有时间了慢慢学! 第一步:注册微信公众号测试号 1.利用下面的链接注册一个微 ...
- 微信公众号定时推送消息
先上一波效果图! 一.微信公众号测试平台 地址: http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=san ...
- 微信公众号无限推送消息微信群发微信定时群发微信主动推送微信客服消息
功能介绍:针对微信新关注粉丝的无限推送,在粉丝关注公众号之后,48小时之内,可以定时自动推送文本或者图文给他. 使用说明: 在微信营销系统后台设置好要定时推送的消息,可以设置文本或者图文,先编辑好要推 ...
- 用户画像在科技期刊微信公众号精准推送中的应用
闵甜1,2), 孙涛3),赖富饶1,2), 侯湘4) 1)华南理工大学<现代食品科技>编辑部,广东省广州市天河区五山路381号 510640 2)华南理工大学食品科学与工程学院,广东省广州 ...
- 微信公众号每日推送(小白网页版配置)
微信公众号每日定时推送,天气推送(小白网页版配置) 0.提示 1. 前言 2. API接口申请 2.1 微信 2.2 百度 2.3 地区编码 3. 模板内容编写 4. 功能演示 4.1 创建定时早安推 ...
最新文章
- 程序与进程的区别,并发与并行的区别,多进程的实现原理
- 2017.8.12 联考题
- 七月在线 《关键点检测概览与环境配置》
- 【转】php和java之间rsa加密互通
- 如何复位一个流的failbit和eofbit
- 一个小厂前端 Leader 如何筛选候选人?
- 为什么用redis做缓存而不是mybatis自带的缓存_如何用Java设计一个本地缓存,涨姿势了...
- opensource项目_最佳Opensource.com:开放组织
- 同样是程序员,他转行在新加坡卖鱼走向巅峰!
- 拓端tecdat|R语言画ROC曲线总结
- 一篇述说“山寨”的文章,转过来大家看看。
- ssm框架组件及介绍
- html制作图片幻灯片效果代码,【JS+CSS3】实现带预览图幻灯片效果的示例代码
- 小书MybatisPlus第9篇-常用字段默认值自动填充
- python队列的实现
- iOS 程序员、架构师、技术经理、技术总监和CTO有啥区别?
- android多个下拉控件,Android实现支持所有View的通用的下拉刷新控件
- m4a转如何快速转换为wav格式呢
- 复制粘贴-实现动态爱心 网页版
- 暑假实训-3_Oracle数据库-3_单行函数
热门文章
- 超好用的网页标记插件pagenote
- 华为安卓手机记事本内容导出
- 【模型库】8Gp/10GP/20GP/40GP/45GP标准与高柜型号集装箱 三维模型
- 一套经典的springboot后台多模块管理系统
- 黎明杀机手游注册登陆详解
- c语言出租车计价编程,[C语言][PTA][2019Fall] 7-18 出租车计价 (15 point(s))
- 初创企业墓志铭:创业死亡榜背后的逻辑
- XMOS 开发探索3-麦克风拾音
- x86服务器(HP/DELL/IBM)测试分析(下)
- 服务器Raid级别调整