微信公众平台接口怎么微信主动推送消息息给用户

php实现微信公众号主动推送消息
作者:wander112900
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了php实现微信公众号主动推送消息的方法,PHP版微信公共平台消息主动推送,突破订阅号一天只能发送一条信息限制,需要的朋友可以参考下
通过学习借鉴朋友的实现方法进行整理,实现了PHP版的微信公共平台消息主动推送,分享给大家供大家参考,具体内容如下
此方法是通过模拟登录微信公共平台的方法来实现的。
代码如下:
一、登录接口部分代码
private function login(){
$url = 'https://mp./cgi-bin/login?lang=zh_CN';
$this-&send_data = array(
'username' =& $this-&_account,
'pwd' =& md5($this-&_password),
'f' =& 'json'
$this-&referer = "https://mp./";
$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]) {
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"系统错误")));
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"帐号或密码错误")));
die(urldecode(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&urlencode("密码错误")))));
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"不存在该帐户")));
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"访问受限")));
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"需要输入验证码")));
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"此帐号已绑定私人微信号,不可用于公众平台登录")));
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"邮箱已存在")));
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"验证码输入错误")));
case -200:
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"因频繁提交虚假资料,该帐号被拒绝登录")));
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"请使用邮箱登陆")));
die(json_encode(array('status'=&1,'errCode'=&$match[1],'msg'=&"该公众会议号已经过期,无法再登录使用")));
$this-&userFakeid = $this-&getUserFakeid();
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./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./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;
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-$errC
$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']);
//获取用户信息
public function getUserInfo($groupId,$fakeId){
$url = "https://mp./cgi-bin/getcontactinfo?t=ajax-getcontactinfo&lang=zh_CN&fakeid={$fakeId}";
$this-&getHeader = 0;
$this-&referer = 'https://mp./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,
$message_opt = $this-&curlPost($url);
return $message_
//获取所有用户fakeid
private function getUserFakeid(){
ini_set('max_execution_time',600);
$pageSize = 1000000;
$this-&referer = "https://mp./cgi-bin/home?t=home/index&lang=zh_CN&token={$_SESSION['token']}";
$url = "https://mp./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);
foreach($b[1] as $v){
$url = 'https://mp./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'] = $
$arr[$i]['groupid'] = $v;
希望本文所述对大家学习php程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具微信公众平台微信消息推送实现方案 - 推酷
微信公众平台微信消息推送实现方案
微信公众平台作为客户关系管理平台、服务平台,必须能够对用户的投诉申告、咨询、购买订单等消息及时响应和反馈,以便在第一时间服务好客户。因此在微信公众平台管理系统中有诸多场景需要及时获取用户互动消息,例如有新的订单产生、新的用户申诉等等。
但目前微信公众平台对消息推送有诸多的限制:
1、公众平台并没有提供主动推送消息到指定微信号的接口,无法推送消息到微信号
2、微信公众平台管理后台能够点对点向在24小时内与公众号互动过的微信号推送消息。注意:如果超过24小时,公众平台再也无法主动推送消息给粉丝。
早期并没有24小时限制,于是有诸多人通过对所有粉丝点对点推送消息的方式来模拟消息群发的效果,从而规避订阅号每天只能群发一次的限制,后来被腾讯封杀掉了。
1、微信公众平台的消息通知方式
因此目前要实现及时获取用户互动消息,除了在后台派专人刷屏外,只能通过邮件通知、短信通知两种方式。
与短信通知先比,邮件通知及时性并不高,且由于国人的使用习惯,较少使用push mail之类的服务,因此邮件通知适合非紧急消息的延迟处理。
短信通知倒是比较及时,但考虑到短信发送成本、短信通道的稳定性等因素后,还是存在较大局限性。
处于移动互联网时代,最合理的消息通知方式莫过于主动推送微信消息给指定的公众号,但正如上面描述,目前并没有直接推送消息给微信号的接口和服务可用。
& 有么有靠谱可用的微信消息推送的解决方案啊?
2、实现微信消息推送的思路
既然在微信公众平台后台可以主动推送消息给24小时内互动过的粉丝,那么,我们可以利用此规则,让微信公众平台的管理员(或运营人员)每天至少主动上行一 条消息给自己的公众平台,那么我们就可以借助程序来自动化往此微信号主动推送消息。剩下的问题就是:
1、怎样让消息推送过程自动化。也即:有符合业务规则的消息产生时,由程序主动自动化推送对应格式的消息给管理人员或运营人员的微信号
2、怎样保证数据安全,只将消息推送给有权限的微信号
当然在具体的技术实现上还有诸多问题需要考虑的,例如:
用户在微信上行消息的标识是openid:fromusername,而在公众平台的标识是fakeid,这两者的对应关系怎样匹配建立;
在技术实现上,强烈建议由兴趣的同学看看casperjs+phantomjs,简直是自动化模拟的神器,尤其是结合xpath之类,比正则表达式解析页面等方式方便多了。
3、游迹天下解决方案
基于以上思路,游迹天下微信公众平台管理系统提供了对诸如新订单、新预约等重要消息多种渠道推送支持,包括短信、邮件、微信号。
这里主要说一下微信号消息推送的功能使用。
&& 使用用法:
&& 1、公众号的运营人员在微信中关注公众号,上行:bangding 到公众号,即可完成绑定操作,由于数据安全原因,缺省状态为:绑定但未生效,此时候运营人员还不能接受消息通知
2、公众号的管理员在游迹天下管理后台的“会员账户管理-&微信号绑定管理”中审核对应的微信号,将状态设置为1,将对应微信号纳入到通知列表中。
3、运营人员每天至少在微信中主动上行一条消息给公众号。
&& 4、系统在有订单、预约等需要通知的地方,会主动推送消息给所有已经成功绑定的微信号。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 微信主动推送消息 的文章

 

随机推荐