php实现微信公众号无限群发


Posted in PHP onOctober 11, 2015

利用微信客服接口进行各类消息的无限群发

sendAllMsg.php

<?php
  /*
    Author:yf
    使用说明:微信公众号无限群发接口,使用实例:   
    $test = new SendAllMsg("你的appId","你的appSecret");
    $test->sendMsgToAll(); //调用群发方法
    注:1.使用条件:认证号或测试号
      2.群发消息内容可为图文、文本、音乐等,$data具体内容参照微信开发文档/客服接口
      3.若用户量过万,需修改getUserInfo(),具体参照信开发文档/获取关注者列表
       
    新手上路,大神们多多指点,谢谢
  */
  interface iSendAllMsg{
    function getData($url); //curl 发送get请求
    function postData($url,$data); //curl 发送post请求
    function getAccessToken();  //在构造方法中已调用该方法来获取access_token,注意它在wx服务器的保存时间7200s
    function sendMsgToAll(); //群发消息方法,发送的消息$data 可自行修改
  }
  class SendAllMsg implements iSendAllMsg{
    private $appId; 
    private $appSecret;
    private $access_token;
    //
    public function __construct($appId, $appSecret) {
      $this->appId = $appId;
      $this->appSecret = $appSecret;
      $this->access_token = $this->getAccessToken();
    }
    //
    function getData($url){
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
      curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
      $data = curl_exec($ch);
      curl_close($ch);
      return $data;
    }
    //
    function postData($url,$data){
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $url);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
      curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
      curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
      curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      $tmpInfo = curl_exec($ch);
      if (curl_errno($ch)) {
        return curl_error($ch);
      }
      curl_close($ch);
      return $tmpInfo;
    }
    //
    function getAccessToken(){
      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appId."&secret=".$this->appSecret;
      $res = $this->getData($url);
      $jres = json_decode($res,true);
      $access_token = $jres['access_token'];
      return $access_token;
    }
    //
    private function getUserInfo(){
      $url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=".$this->access_token;
      $res = $this->getData($url);
      $jres = json_decode($res,true);
      //print_r($jres);
      $userInfoList = $jres['data']['openid'];
      return $userInfoList;
    }
    function sendMsgToAll(){
      $userInfoList = $this->getUserInfo();
      $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$this->access_token;
      foreach($userInfoList as $val){
        $data = '{
              "touser":"'.$val.'",
              "msgtype":"text",
              "text":
              {
                "content":"测试一下,抱歉打扰各位"
              }
            }';
        $this->postData($url,$data);
      }
    }
  }
  $test = new SendAllMsg("YOURappId","YOURappSecret");
  $test->sendMsgToall();
   
?>

以上就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
PHP中实现进程间通讯
Oct 09 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
Apr 12 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
php实现httpclient类示例
Apr 08 PHP
教你如何用php实现LOL数据远程获取
Jun 10 PHP
php中eval函数的危害与正确禁用方法
Jun 30 PHP
ThinkPHP查询返回简单字段数组的方法
Aug 25 PHP
php匹配字符中链接地址的方法
Dec 22 PHP
PHP可变函数学习小结
Nov 29 PHP
Thinkphp3.2.3分页使用实例解析
Jul 28 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
Oct 10 #PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 #PHP
刷新PHP缓冲区为你的站点加速
Oct 10 #PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 #PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 #PHP
PHP内存使用情况如何获取
Oct 10 #PHP
PHP中Session和Cookie是如何操作的
Oct 10 #PHP
You might like
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
Python解析xml中dom元素的方法
2015/03/12 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
python新手学习可变和不可变对象
2020/06/11 Python
Python 在函数上添加包装器
2020/07/28 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
python re模块常见用法例举
2021/03/01 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
2014年单位植树节活动方案
2014/03/23 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
民族团结演讲稿范文
2014/08/27 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电