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+java实现自动新闻滚动窗口
Oct 09 PHP
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
php遍历文件夹所有文件子文件夹函数代码
Nov 27 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
PHP设计模式之观察者模式实例
Feb 22 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
基于php编程规范(详解)
Aug 17 PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 PHP
php微信开发之谷歌测距
Jun 14 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 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中的日期处理方法集锦
2007/01/02 PHP
destoon常用的安全设置概述
2014/06/21 PHP
php多任务程序实例解析
2014/07/19 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
jQuery对象[0]是什么含义?
2010/07/31 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
JavaScript和jQuery制作光棒效果
2017/02/24 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
儿童python练习实例
2018/05/27 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
python3实现微型的web服务器
2019/09/03 Python
Pytorch之Variable的用法
2019/12/31 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
《都江堰》教学反思
2014/02/07 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
万能检讨书
2015/01/27 职场文书
长城的导游词
2015/01/30 职场文书
2016教师学习教育法心得体会
2016/01/19 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
六年级作文之预言作文
2019/10/25 职场文书
Node与Python 双向通信的实现代码
2021/07/16 Javascript
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL