/*

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微信公众号无限制群发,微信公众号无限群发 - viki_php的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. 申请一个Java公众号怎么命名_警惕不规范的变量命名 - Java公众号_Kirito的技术分享的个人空间 - OSCHINA - 中文开源技术交流社区...

    就在最近,项目组开始强调开发规范了,今天分享一个变量名命名不规范的小案例,强调一下规范的重要性. Boolean变量名命名规范 16年底,阿里公开了<Java开发规范手册>,其中有一条便是 ...

  2. 卡券php小程序,微信小程序领取卡券 - osc_88a08cel的个人空间 - OSCHINA - 中文开源技术交流社区...

    微信小程序领取卡券 标签(空格分隔): php 开发前需要准备的工作 1 小程序和公众号要有绑定 2 小程序和该公众号要绑定到同一个开发平台下 [https://open.weixin.qq.com/ ...

  3. php 小程序 运动步数_小程序同步微信步数 - xiangqian1的个人空间 - OSCHINA - 中文开源技术交流社区...

    小程序获取微信运动步数,咱们看文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/werun/wx.getWeRunDat ...

  4. 微信步数C语言程序,获取微信步数 - osc_1v2pb1nt的个人空间 - OSCHINA - 中文开源技术交流社区...

    const util = require('../../utils/util.js') Page({ /** * 页面的初始数据 */ data: { runData:[], }, /** * 生命周 ...

  5. 小微商户申请php,微信小微商户申请入驻 - osc_r8q2esik的个人空间 - OSCHINA - 中文开源技术交流社区...

    public static string ApplyEnter(string Data) { if (string.IsNullOrWhiteSpace(Data)) return ProtocolM ...

  6. 服务器图文消息发送规则,群发图文规则 - CurtainRight的个人空间 - OSCHINA - 中文开源技术交流社区...

    2.上传图文接口 内容信息对比: 注意:除了群发图文之外,其余的图文消息都是没有Content,所以都是自己写页面,然后通过URL打开新的页面,那么你的图片就不能访问微信服务器上的图片.因为现在未经授 ...

  7. linux 输入法框架,常用输入法框架简介 - 微信公众号:算法与编程之美 - OSCHINA - 中文开源技术交流社区...

    前言 之前使用的一直都是ibus-sunpinyin中文输入法,但在使用的过程中发现很多的词组都找不到,比较麻烦,所以打算换一下ibus-googlepinyin输入法,还没用,也不知道具体的效果怎么 ...

  8. php 正则车架号,正则判断工具类 - 我的开源中国 - OSCHINA - 中文开源技术交流社区...

    package com.gulf.utils; import java.text.ParseException; import java.text.SimpleDateFormat; /** * 正则 ...

  9. 微信公众号无限群发消息 v5.7.1 多功能版全开源 + 配置教程

    简介: 公众号无限群发消息模块,为运营而生 1.关于普通版与多功能版区别: 普通版:只能发文字,每次只能发500人,多了会卡死,需要再选下五百人(且不再更新). 多功能版:支持TD退订功能(用户发送t ...

最新文章

  1. SpringBoot 多个src文件夹,入口类的位置
  2. 教程:15、系统日志及日志分析
  3. 检测一组电动车电瓶好坏要多久?
  4. python加密解密库openssl_OpenSSL和Python实现RSA Key公钥加密私钥解密
  5. php asserttrue,PHP8.0的新特性:错误处理方面已经改进
  6. Spring AOP方法分析
  7. 版本为2.5的OpenMP规范中的编译制导指令汇总
  8. mysql 8.0远程连接_mysql8.0 安装 修改密码 允许远程连接
  9. cacti监控Memcached
  10. 三层交换机如何配置?如何实现不同vlan间的通信?
  11. math库是python语言的数学模块_Python入门-函数库(模块)
  12. timesten mysql_timesten:TT0802错误
  13. STM32 SPI 主模式下配置(神州三号开发板spi.c解析上)
  14. SQL server 插入日期处理
  15. 手机和电脑如何连接无线投影仪
  16. 离线安装python包_补充
  17. atlas mysql_使用Atlas配置MySQL读写分离
  18. 如何在 PC 上识别微信二维码
  19. js防抖、节流(立即执行/非立即执行 + 立即取消等待)
  20. 量化分析师的Python日记【Q Quant兵器谱之偏微分方程2】

热门文章

  1. 【学习笔记】云服务器入门教程(搭建云盘、网站,安装anaconda、WinSCP、宝塔面板等)
  2. java value是什么意思_“预期 Value ,发现特质”是什么意思?
  3. 做自媒体新手怎么入门?第一步教你增加短视频流量
  4. SpringBoot重点详解--使用过滤器映射访问路径
  5. CRM销售管理系统能够给企业带来哪些好处?
  6. Typora使用方法
  7. 医学图像分割数据集与制作自己的数据集
  8. 解决:Word 不显示 EndNote 插件(Word 插件不显示问题通用)
  9. cpucores_Steam软件《CPUCores》能最大限度提升游戏帧数 笔记本玩家福利
  10. 智慧水务信息化平台-智慧水务信息化管理系统解决方案