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,不用COM,生成excel文件
Oct 09 PHP
聊天室php&amp;mysql(一)
Oct 09 PHP
PHP下几种删除目录的方法总结
Aug 19 PHP
php购物网站支付paypal使用方法
Nov 28 PHP
PHP 验证码的实现代码
Jul 17 PHP
使用php 获取时间今天明天昨天时间戳的详解
Jun 20 PHP
PHP Session机制简介及用法
Aug 19 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
PHP数据库连接mysql与mysqli对比分析
Jan 04 PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
php防止sql注入的方法详解
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项目开发中最常用的自定义函数整理
2010/12/02 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
如何快速上手Vuex
2017/02/14 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
[01:03:31]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第二局
2016/02/26 DOTA
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
Python批量更改文件名的实现方法
2017/10/29 Python
Python实现购物车购物小程序
2018/04/18 Python
python2与python3共存问题的解决方法
2018/09/18 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
python飞机大战游戏实例讲解
2020/12/04 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
自我工作评价范文
2015/03/06 职场文书
何玥事迹观后感
2015/06/16 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
Python中如何处理常见报错
2022/01/18 Python