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 相关文章推荐
discuz安全提问算法
Jun 06 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 PHP
destoon实现调用自增数字从1开始的方法
Aug 21 PHP
ThinkPHP实现二级循环读取的方法
Nov 03 PHP
2014最热门的24个php类库汇总
Dec 18 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
PHP限制HTML内容中图片必须是本站的方法
Jun 16 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
php实现大文件断点续传下载实例代码
Oct 01 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 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
Syphon 使用方法
2021/03/03 冲泡冲煮
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
JS中获取函数调用链所有参数的方法
2015/05/07 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
基于jQuery实现Accordion手风琴自定义插件
2020/10/13 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
[02:57]DOTA2亚洲邀请赛小组赛第四日 赛事回顾
2015/02/02 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
python使用arcpy.mapping模块批量出图
2017/03/06 Python
window下eclipse安装python插件教程
2017/04/24 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
了解一下python内建模块collections
2020/09/07 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
车队司机自我鉴定
2014/03/02 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书