找回密码
 立即注册

QQ登录

只需一步,快速开始

微信公众号开发资源

关注:808

所属分类: 微信开发 微信公众号开发资源

本版块为微信公众号开发教程与公众号开发相关技术分享板块,技术提问请到其他对应的问答板块发帖:)

[公众号开发博客] 让公众号无限制推送消息,模板消息实现,附代码

[复制链接]
查看: 17245|回复: 14
最佳答案
0 

7

主题

8

帖子

386

积分

略知一二

积分
386
 楼主| 发表于 2016-6-8 14:04:03 | 显示全部楼层 |阅读模式
本帖最后由 930415915 于 2016-6-8 14:05 编辑

阅读本篇文章你能学到,利用模板消息无限制向用户推送消息。说是无限,模板消息每天只允许发送10万条,不过对于普通公众号也够了。
本篇文章修改自
微信模板消息开发详解。请先阅读此篇文章再看本文,会容易很多。
本文章是以测试号编写的,公众号原理相同
一、上代码
  1. <?php
  2.   //获取微信access_token
  3. function getaccess_token(){
  4.     //appid与appsecret改成你自己的
  5.     $appid = '自己的appid';
  6.     $appsecret = '自己的appsecret';
  7.     $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
  8.     $ch = curl_init();
  9.     curl_setopt($ch, CURLOPT_URL,$url);
  10.     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  11.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
  12.     $data = curl_exec($ch);
  13.     curl_close($ch);
  14.     $data = json_decode($data,true);
  15.     return $data['access_token'];
  16. }
  17.   //设置与发送模板信息
  18. function set_msg($openid){
  19.     //获取access_token
  20.     $access_token = getaccess_token();
  21.     //这里是在模板里修改相应的变量
  22.     $formwork = '{
  23.            "touser":"'.$openid.'",
  24.            "template_id":"oasLSlzdPXF-4U21JRE0lFYLsZWVVFcxY20SC6EAxx4",
  25.            "url":"http://www.wangwenxiao.com",            
  26.            "data":{
  27.                    "title": {
  28.                        "value":"这里是自己定义的标题",
  29.                        "color":"#173177"
  30.                    },
  31.                    "content":{
  32.                        "value":"这里是自定义内容,点击进入王文晓博客,啦啦啦",
  33.                        "color":"#173177"
  34.                    },
  35.                    "time": {
  36.                        "value":"这里填写时间",
  37.                        "color":"#173177"
  38.                    }
  39.            }
  40.        }';
  41.     $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$access_token}";
  42.     $ch = curl_init();
  43.     curl_setopt($ch, CURLOPT_URL,$url);
  44.     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  45.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
  46.     curl_setopt($ch, CURLOPT_POST,1);
  47.     curl_setopt($ch, CURLOPT_POSTFIELDS,$formwork);
  48.     $data = curl_exec($ch);
  49.     curl_close($ch);
  50.     return $data;
  51. }

  52. function sendall(){
  53.         //获取access_token
  54.     $access_token = getaccess_token();
  55.         $url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token={$access_token}&next_openid=";
  56.         $ch = curl_init();
  57.         curl_setopt($ch, CURLOPT_URL,$url);
  58.         curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  59.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
  60.         $data = curl_exec($ch);
  61.         $data = json_decode($data,true);
  62.     return $data['data']['openid'];
  63. }
  64. //'{"total":3,"count":3,"data":{"openid":["oC8xks2kb67MogD8ubzkViHf88x4","oC8xksxbsJMf1FKpr4YEfGsqKHtg","oC8xks4COCfqox1-dXTCsZF_1vIo"]},"next_openid":"oC8xks4COCfqox1-dXTCsZF_1vIo"}'
  65. // array(3) {
  66. //   [0]=>
  67. //   string(28) "oC8xks2kb67MogD8ubzkViHf88x4"
  68. //   [1]=>
  69. //   string(28) "oC8xksxbsJMf1FKpr4YEfGsqKHtg"
  70. //   [2]=>
  71. //   string(28) "oC8xks4COCfqox1-dXTCsZF_1vIo"
  72. // }

  73. //保存所有的openid
  74. $all_openid = sendall();
  75. //把上面设置的信息循环发送到所有的公众号关注的用户手里
  76. foreach ($all_openid as $value) {
  77.         set_msg($value);
  78. }
  79. echo '执行完毕';
复制代码

二、代码使用说明
新建个php文件,把代码复制进去(我新建的是allmsg.php)
1、第5、6行改成自己公众号的appid与appsecret。
2、24行要改成你的模板id,下图中3箭头
3、点击新增测试模板(下图1箭头)添加与图一致的模板标题与内容(内容中的代码一定要与图写的一样)


为了测试是不是每个关注此测试号的微信号都能接收到,我又找了几个人关注了我的测试号,如上图箭头2

访问此代码,当浏览器显示“执行完毕”时,该测试号所有的粉丝都能收到22行所定义的模板消息。如下图,其他两个人的微信确实也收到了,我比较懒,就只截取我自己的微信截图了。



三、代码详解
开头的函数getaccess_token是获取自己公众号的access_token。
22-40行是定义要发送的消息的信息
23行是指明消息发给那个openid ,这里的openid通过参数传进来
24行是指明要用哪个模板。上图箭头3
25行是指点开消息后打开那个地址。(我设置的http://www.wangwenxiao.com
26行data里的值要与模板中的内容相对应。比如上图箭头4.我建立的模板内容中有{{title.DATA}}{{content.DATA}}{{time.DATA}}。data里面就要设置相应的内容来替换掉前面的三个变量。
42-49行把$forwork函数POST到41行的地址中。信息就发送出去了。(这里面的函数为CUEL函数,不清楚可以看之前的基础文章)。
函数sendall是获取此测试号的所有的粉丝的openid,56行是获取所有粉丝的地址。需要拼接上自己公众号的access_token
获取后的json数据如65行,如上上图,我的测试号只有三个粉丝,所以json数据里有三个openid。62行把json转换成数组,63行取出openid的部分。(如67-73行)
78行把数组里面的openid循环发送到set_msg函数中,实现把消息发送给粉丝

四、结束语
测试号比较简单,真正的服务号模板消息还需要选择模板等一些设置,但是懂了本篇文章的原理,正在的服务号模板消息也是好设置的,不懂的欢迎回复交流。

欢迎到访我的博客:王文晓http://www.wangwenxiao.com


评分

参与人数 1肥皂 +100 收起 理由
苦瓜不甜_82 + 100

查看全部评分

回复

使用道具 举报

最佳答案
0 

1

主题

14

帖子

57

积分

新人求带

积分
57
发表于 2016-6-10 22:22:59 | 显示全部楼层
这样都行吗。
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

9

帖子

59

积分

新人求带

积分
59
发表于 2016-6-11 12:53:33 | 显示全部楼层
这个挺厉害的
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

29

帖子

601

积分

专家路上

积分
601
发表于 2016-10-25 11:48:48 | 显示全部楼层
激动人心,无法言表!
不过会被封的把
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

53

帖子

588

积分

略知一二

积分
588
发表于 2016-11-19 18:10:57 | 显示全部楼层
强烈支持楼主ing……
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

53

帖子

588

积分

略知一二

积分
588
发表于 2016-11-22 12:39:58 | 显示全部楼层
发送成功,但是接受的人收到了多条相同的通知,这个应该怎么解决??
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

35

帖子

302

积分

略知一二

积分
302
发表于 2016-11-29 15:22:18 | 显示全部楼层
这样有点危险,小心被封
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

12

帖子

66

积分

新人求带

积分
66
发表于 2016-12-2 14:28:16 | 显示全部楼层
真是被感动的痛哭流涕……
回复 支持 反对

使用道具 举报

最佳答案
0 

0

主题

11

帖子

211

积分

新人求带

积分
211
发表于 2016-12-12 11:05:34 | 显示全部楼层
强烈支持楼主ing……
回复 支持 反对

使用道具 举报

最佳答案
0 

1

主题

12

帖子

140

积分

新人求带

积分
140
发表于 2017-3-15 09:32:49 | 显示全部楼层
66666666  非常66666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


易域网-您身边的域名管家

henkuai.com是专业的第三方微信开发者平台,为生态而生。


本站为第三方微信开发者平台,非腾讯官方网站。

天津市滨海新区
中新生态城中成大道生态建设公寓9号楼3层301

欢迎来这里一起喝喝茶,
聊聊你的产品。

微信公众号gongzhongkaifa

工作日12小时内回复。

网站业务
zhongcong@henkuai.com

工作日12小时内回复。

市场合作
songchang@henkuai.com