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程序的方法
Mar 09 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
php实现可用于mysql,mssql,pg数据库操作类
Dec 13 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
Jan 04 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
PHP在线打包下载功能示例
Oct 15 PHP
PHP自定义多进制的方法
Nov 03 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
yii2利用自带UploadedFile实现上传图片的示例
Feb 16 PHP
Laravel 实现密码重置功能
Feb 23 PHP
php xhprof使用实例详解
Apr 15 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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实现比较两个文件夹异同的方法
2015/06/18 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
jquery验证表单中的单选与多选实例
2013/08/18 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
一个不错的仿携程自定义数据下拉选择select
2014/09/01 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
Async Validator 异步验证使用说明
2017/07/03 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
python判断字符串是否纯数字的方法
2014/11/19 Python
使用FastCGI部署Python的Django应用的教程
2015/07/22 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
对python中的logger模块全面讲解
2018/04/28 Python
Python中GIL的使用详解
2018/10/03 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
中医药大学毕业生自荐信
2013/11/08 职场文书
教师党员思想汇报
2014/01/06 职场文书
高中体育教学反思
2014/01/24 职场文书
小学教师听课制度
2014/02/01 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
应届毕业生自荐信
2014/05/28 职场文书
药品营销策划方案
2014/06/15 职场文书
保密工作整改报告
2014/11/06 职场文书
2014年班务工作总结
2014/12/02 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
质量保证书
2015/01/17 职场文书
英文产品推荐信
2015/03/27 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
争做文明公民倡议书
2019/06/24 职场文书