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语法速查表
Dec 06 PHP
PHP爆绝对路径方法收集整理
Sep 17 PHP
基于PHP静态类的原罪详解
May 06 PHP
php_screw 1.5:php加密: 安装与使用详解
Jun 20 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
php构造方法中析构方法在继承中的表现
Apr 12 PHP
[原创]PHP字符串中插入子字符串方法总结
May 06 PHP
CodeIgniter记录错误日志的方法全面总结
May 17 PHP
jQuery+php简单实现全选删除的方法
Nov 28 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
Jul 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绘制饼状图的实现代码
2013/06/07 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
python快速查找算法应用实例
2014/09/26 Python
Python递归函数定义与用法示例
2017/06/02 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
国际贸易专业个人求职信格式
2014/02/02 职场文书
派出所所长先进事迹
2014/05/19 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
党员个人剖析材料
2014/09/30 职场文书
李白故里导游词
2015/02/12 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
Python中相见恨晚的技巧
2021/04/13 Python
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
mysql 索引合并的使用
2021/08/30 MySQL