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 和 MySQL 开发的 8 个技巧
Oct 09 PHP
smarty静态实验表明,网络上是错的~呵呵
Nov 25 PHP
谈谈PHP的输入输出流
Feb 14 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
phpmail类发送邮件函数代码
Feb 20 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
PHP小教程之实现链表
Jun 09 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
Apache连接PHP后无法启动问题解决思路
Jun 18 PHP
PHP 类与构造函数解析
Feb 06 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 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原理之异常机制深入分析
2010/08/08 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
JS之小练习代码
2008/10/12 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
Python可跨平台实现获取按键的方法
2015/03/05 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
导致python中import错误的原因是什么
2020/07/01 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
农村婚礼主持词
2014/03/13 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
Python Numpy之linspace用法说明
2021/04/17 Python
详解Python函数print用法
2021/06/18 Python