通过学习借鉴朋友的实现方法进行整理,实现了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)){//获取token

switch ($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($c {

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;

}

//获取所有用户fakeid

private 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实现微信公众号主动推送消息相关推荐

  1. 微信客服消息html链接,微信公众号利用客服消息和模板消息实现微信群发

    1.关于群发接口和消息接口 关于群发接口 1.订阅号每天可以群发消息一条,服务号每月(自然月)四条的群发权限.开发者模式下,可以通过高级群发接口,实现更灵活的群发能力. 2.注意 ● 对于认证订阅号, ...

  2. php订阅号发送消息,php实现微信公众号主动推送消息

    通过学习借鉴朋友的实现方法进行整理,实现了PHP版的微信公共平台消息主动推送,分享给大家供大家参考,具体内容如下 此方法是通过模拟登录微信公共平台的方法来实现的. 代码如下: 一.登录接口部分代码 / ...

  3. php公众号客服消息图文,微信公众号发送客服消息功能怎么实现?

    1.微号帮平台:免费注册试用7天 根据页面上的提示完成新用户注册操作,>>立即注册 注册成功后,使用用户名.密码登录平台,>>立即登录 3.登录成功后,进入管理中心,选择添加公 ...

  4. PHP实现微信公众号主动推送消息

    这篇文章主要介绍了php实现微信公众号主动推送消息的方法,PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制,需要的朋友可以参考下. 通过学习借鉴朋友的实现方法进行整理,实现了PHP ...

  5. 通过企业微信或者微信公众号发送小程序消息推送功能

    前言 为了解决在管理员端可以主动发起某个指令,可以给用户推送小程序消息需求,共找出两个解决方案: 两个方案均已实现点击调转到对应小程序页面,同时可以主动多次进行发送(暂时公众号模板消息有条数限制). ...

  6. 微信公众号怎么推送消息_微信公众号发送消息

    A.模板消息发送 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息. 备注 ...

  7. php公众号向多个用户推送消息,如何实现微信公众号给指定互动用户推送多次消息?...

    1.微号帮平台注册账号.登录.授权公众号 2.创建推送信息 进入功能管理后,找到高级功能,选择48小时信息推送,点击添加推送信息,支持微信公众号给指定互动用户推送多次消息. 3.微号帮平台:编辑推送消 ...

  8. 用户画像在科技期刊微信公众号精准推送中的应用

    闵甜1,2), 孙涛3),赖富饶1,2), 侯湘4) 1)华南理工大学<现代食品科技>编辑部,广东省广州市天河区五山路381号 510640 2)华南理工大学食品科学与工程学院,广东省广州 ...

  9. python爬虫如何实现每天爬取微信公众号的推送文章

    python爬虫如何实现每天爬取微信公众号的推送文章 上上篇文章爬虫如何爬取微信公众号文章 上篇文章python爬虫如何爬取微信公众号文章(二) 上面的文章分别介绍了如何批量获取公众号的历史文章url ...

最新文章

  1. 计算机图形学曲线生成原理,计算机图形学_曲线及生成.ppt
  2. 【南科大发言】人类赋予人工智能伦理,生物进化方向的突破是关键
  3. 关注WebWork(四)
  4. python库怎么学啊最好_最常用的几个python库--学习引导
  5. java 接口中变量修饰符,Java的访问修饰符与变量的作用域讲解
  6. wpf window 不执行show 就不能load执行_关于机器学习中的Scikit-Learn,你不知道的10个实用功能...
  7. 用python 画炫酷的图并讲解-Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?...
  8. Linux安装wget
  9. 零跑汽车上半年表现亮眼,全域自研能力加持下业绩高速增长
  10. html字体重叠的原因,PPT输入文字的时候字重叠是怎么回事呢?
  11. 在移动硬盘上安装ubuntu18.04过程记录
  12. 山东交通学院院计算机答辩,山东交通学院教务处关于做好2018届本科毕业生毕业设计(论文)工作的通知...
  13. 一个敷衍的开头。。。
  14. win10下深度linux系统怎么安装,u深度win10pe安装win10系统教程
  15. 如何根据vin码查询_vin查配置 车辆VIN码查询车辆基本配置信息 知道车辆vin码怎么查配置...
  16. 华为 matebook D 加装硬盘过程注意事项
  17. Leetcode LCP 17. 速算机器人
  18. android自定义手势,Android编程实现自定义手势的方法详解
  19. 20230209SQL练习题
  20. 用递归算法实现 输出一个整数的逆序(倒序输出)C语言

热门文章

  1. 计算机目标导学方法,计算机编程类课程教学目标细化方法及其实施
  2. SQL Server2016无域群集与高可用性AlwaysON配置新手教程
  3. ORB-SLAM2 编译记录
  4. Steam流-方法引用
  5. 铲屎官们看过来~想做宠物博主不知道怎么做?多种变现途径
  6. 跑步耳机哪款好用,五款适合跑步的排行榜
  7. 需要健康的请关注--茶与健康--我要喝绿茶
  8. NGINX-RTMP直播服务器搭建-OBS录制推流-VLC视频流播放
  9. 研究生SLAM论文阅读汇总(一)
  10. 植物微生物组文章目录(180807)