首先我们需要申请一个公众号

登录到后台以后按照下列操作执行

1.添加功能插件

2.找到模板消息

3.好了,接下来你可以申请了,随便选两个行业就可以了,审核通过以后进去就可以添加模板了
4.添加好模板以后看格式

箭头指向的地方是我们需要用的,方框的东西就是参数!
详细看代码(这里使用yii做的)

<?phpnamespace backend\modules\api\controllers;use common\models\SmsReport;
use common\models\Aes;
use common\models\Counter;
use common\models\Phone;
use common\models\City;
use common\models\oss\oss;use Yii;
use yii\rest\Controller;
use backend\modules\api\common\lib\Helper;
use backend\modules\api\models\User;
use backend\modules\api\models\Register;
use backend\modules\api\common\lib\HttpUploadFile;
use yii\base\Object;
use backend\modules\api\models\Login;
use backend\modules\api\models\Abnormal;header('Access-Control-Allow-origin:*');
header('Access-Control-Allow-Credentials:true');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers:Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With');
header('Content-Type: text/html; charset=utf-8');class WechatController extends Controller {public function actionIndex(){//获取参数signature nonce token timestamp echostr$nonce = Yii::$app->request->get('nonce');$token = 'adshare';$timestamp = Yii::$app->request->get('timestamp');$echostr = Yii::$app->request->get('echostr');$signature = Yii::$app->request->get('signature');//形成数组然后按照字典排序$array = array();$array = array($nonce,$timestamp,$token);sort($array);//拼接字符串、sha1加密,然后与signature进行效验$str = sha1(implode($array));//这里是第一次调用,主要用来在基本设置中开启启用配置if($str == $signature && $echostr){return $echostr;}else{self::actionMessage();}}public function actionMessage(){//获取微信推送的xml$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];$postObj = simplexml_load_string($postArr);if(strtolower($postObj->MsgType) == 'event'){//如果是关注事件if(strtolower($postObj->Event) == 'subscribe'){//多图文 $toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$Msgtype = 'news';
$arr = array(
array(
'Title'=>'欢迎关注AD共享',
'Description'=>'这是一个属于互联网传媒的时代',
'PicUrl'=>'http://peita.oss-cn-beijing.aliyuncs.com/question/546781498411128.jpg',
'Url'=>'http://www.peita.net'
)
);$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>".count($arr)."</ArticleCount>
<Articles>";foreach($arr as $key=>$v){
$template .="<item>
<Title><![CDATA[".$v['Title']."]]></Title>
<Description><![CDATA[".$v['Description']."]]></Description>
<PicUrl><![CDATA[".$v['PicUrl']."]]></PicUrl>
<Url><![CDATA[".$v['Url']."]]></Url>
</item>";
}$template .="</Articles>
</xml>";
$info = sprintf($template,$toUser,$fromUser,$time,$Msgtype);
echo $info;/*文本//回复用户消息$toUser = $postObj->FromUserName;$fromUser = $postObj->ToUserName;$time = time();$Msgtype = 'text';$Content = '欢迎关注AD共享公众号';$template = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>";$info = sprintf($template,$toUser,$fromUser,$time,$Msgtype,$Content);echo $info;*/}}}//发送模版消息public function actionPushMessage(){//获取token$token = self::actionGetToken();//设置url$url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token='.$token;//设置时间$sj = date('Y-m-d H:i:s',time());//设置充值链接$cz_url = 'http://www.peita.net';//设置账户余额$ye = '10元';//设置账户名称$name = '小郭';//设置发送的消息$message = ['touser'=>'这里是用户的openid','template_id'=>'SudqvwsNYy4AFqBO4_KaWklYlhrc69c74jiAF3VBoCU','url'=>$cz_url,'data'=>['first'=>['value'=>'您好,您的账户余额不足。请尽快充值,以免影响您的使用。','color'=>'#173177'],'keyword1'=>['value'=>$name,'color'=>'#173177'],'keyword2'=>['value'=>$ye,'color'=>'#173177'],'keyword3'=>['value'=>$cz_url,'color'=>'#173177'],'keyword4'=>['value'=>$sj,'color'=>'#173177'],'remark'=>['value'=>'如有任何疑问请登录会员系统联系在线客服','color'=>'#173177']]];$data = json_encode($message);//发送$res = self::actionCurlRequest($url,$data);return $res;}//获取tokenpublic function actionGetToken(){$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET';$res = json_decode(self::actionCurlRequest($url));return $res->access_token;}//curl请求,支持post和getpublic function actionCurlRequest($url,$data=null){$curl = curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);if(!empty($data)){curl_setopt($curl,CURLOPT_POST,1);curl_setopt($curl,CURLOPT_POSTFIELDS,$data);}curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);$output = curl_exec($curl);curl_close($curl);return $output;}
}

好了,详细效果就可以出来了
要注意的是提前配置好线上的域名服务器等等,并且在微信的基本配置中启用一下基本配置!
效果图:

微信公众号实现消息模板的推送相关推荐

  1. 微信公众号(测试号)消息模板推送

    微信公众号(测试号)消息模板推送 源码地址 https://github.com/panjianlong13/Weixin-PushMessage 微信测试号配置 登录到微信公众平台接口测试账号申请U ...

  2. 微信公众号如何无限制的定向推送消息--模板消息的应用

    微信公众号如何无限制的定向推送消息–模板消息的应用 最近开发的OA平台有一个需求:将待办消息推送到微信公众号的指定用户.但是为了避免用户受到垃圾消息的骚扰,微信对相关的接口做了非常严格的限制. 查阅开 ...

  3. 微信公众号为指定openid用户推送消息

    微信公众号为指定openid用户推送消息 微信提供的开放接口中,有两个给指定openid的用户发送信息的接口,适用场景应该是向 预约用户或者中奖用户发送消息. 第一个接口:客服发送消息 请求方式: P ...

  4. 微信公众号(一)每日推送详细教程(含实时定位,天气预报,每日英语,纪念日等,可快速自定义消息模板并指定订阅者类型发送)

    微信公众号(一)每日推送,天气推送 (含实时定位,天气预报,每日英语,纪念日等,可快速自定义消息模板并指定订阅者类型发送),另有小白网页版配置 版本介绍 1. 相关API接口申请 1.1 微信 1.2 ...

  5. php公众号向多个用户推送消息,如何实现微信公众号给指定互动用户推送多次消息?...

    1.微号帮平台注册账号.登录.授权公众号 2.创建推送信息 进入功能管理后,找到高级功能,选择48小时信息推送,点击添加推送信息,支持微信公众号给指定互动用户推送多次消息. 3.微号帮平台:编辑推送消 ...

  6. 微信公众号(二)每日推送详细教程(AI回复助手)

    微信公众号(二)每日推送详细教程(回复助手) 1.准备阶段 1.1 基础性配置 1.2 账号准备 2. 配置阶段 2.1 配置application.yml文件 2.2 注解 3. 部署 效果图如下 ...

  7. 如何设置微信公众号粉丝关注后自动推送小程序

    关于微信公众号粉丝关注后自动推送小程序实现,第三方工具微号帮提供了功能粉丝关注定时推送实现,支持微信公众号设置粉丝关注后自动推送小程序,小程序可以以卡片.链接的形式展现给关注粉丝;公众号设置关注推送小 ...

  8. 关注微信公众号并接收服务端推送通知

    这是一篇写在公司内网confluence上的文章,今天打开博客发现好久没有更新了,偷个懒直接来个搬运. 1.应用场景 终端用户关注客户微信公众号后,在公众号上可以接收到服务端发来的关联设备的报警信息 ...

  9. 小程序发送订阅消息,微信公众号发送消息模板

    首先讲两个注意事项 1.小程序和微信公众号的用户openid是不同的. 2.小程序需要用户手动授权订阅消息通知(一次性订阅是订阅一次发一次,长期订阅可以多发). 关于小程序和公众号AppID和AppS ...

  10. 微信公众号 java发送消息_微信公众号发送消息模板(java)

    这段时间接触公众号开发,写下向用户发送消息模板的接口调用 先上接口代码 1 public staticJSONObject sendModelMessage(ServletContext contex ...

最新文章

  1. js改变iframe链接
  2. vc关于dialog绘图闪屏和多层覆盖的处理方法
  3. GTK编程——linux下GTK开发环境建立(ubuntu)
  4. Spark查找某个IP的归属地,二分算法,try{}catch{}的使用,将结果存MySQL数据库
  5. python ipaddress_Python3标准库:ipaddress Internet地址
  6. linux重启mysqlsystemctl_解决linux(centos7)重新安装mysql systemctl start mysqld.service时报错...
  7. ecshop各个文件夹作用
  8. linux系统中使用pycharn,在pycharm中使用linux控制台
  9. 中兴通讯首届郑和杯无线应用创作挑战赛正式启动
  10. @Controller深入详解
  11. 史上最详细的F450四轴装机实例(无名官方推荐的)
  12. VS中如何导入wav并且播放音乐
  13. 86版五笔-字根速记
  14. 搜索实现vue+Element-ui仿商城搜索
  15. 康托尔连续统假设(CH)不成立
  16. 在maven中创建jsp依赖
  17. Ubuntu20.04安装MongoDB
  18. 程序员与女朋友相处之道
  19. 新闻稿格式以及新闻稿写作须知
  20. ajax的使用完整步骤,Ajax的使用四大步骤

热门文章

  1. php mysql知识总结_Mysql数据库知识总结(看资料总结出来的)
  2. 浅析局域网聊天软件的能力
  3. 基于java企业人事管理系统mysql
  4. 开源OA系统魔方OA ASP.Net 4.0或4.8
  5. 计算机集成声卡输出通道,电脑集成与独立声卡的差别有哪些?
  6. RapidMiner 数据读写
  7. 获取QQ好友列表接口分析
  8. 【最新】网站下载工具,整站下载工具汇总
  9. python网站下载_python 下载整个网站
  10. Linux基础学习记录