Laravel+微信公众号实现模板消息推送,模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
一、前提条件
1、服务号:公众号发送模板消息必须是企业服务号
2、设置与开发:进入功能设置,设置业务域名、JS接口安全域名、网页授权域名
3、新增模板消息模板:进入模板消息新增模板。
4、公众号APPID、SECRET、以及用户OPENID
5、获取ACCESS_TOKEN:结合APPID、SECRET获取
二、代码编写
1、发送模板消息方法
<?php public function message(){ $APPID = $config['wx_appid']; $SECRET = $config['wx_secret']; /* * 获取access_token * */ $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$APPID.'&secret='.$SECRET; $res = $this->getCurl($url); //发送模板消息 $tplUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" .$res['access_token']; // 发送模板消息 $data = array( "touser" => 'ofsC_wOcgg_ihhxaHXAFXMMZx', // 接收用户openid "template_id" => "S5F4B_FPidlHuG8jL0TK-_pY99nuhxgvCCVSXMA", // 模板消息ID "url" => "http://weixin.qq.com/download", // 跳转页面路径 "data" => array( "first" => array( "value" => '尊敬的用户你好,你已预约成功!'//标题 ), "keyword1" => array( "value" =>'123456' //预约内容 ), "keyword2" => array( "value" =>'2024-05-25 16:90' //预约时间 ), ) ); $data = json_encode($data); $resTpl = $this->wxTplPost($tplUrl,$data); if($resTpl['errcode']==0){ echo '发送成功!'; }else{ echo '发送失败!'; } } ?>
2、公众号GET请求方法
<?php /* * curl请求 * */ public function getCurl($url){ $curl = curl_init(); //使用curl_setopt() 设置要获得url地址 curl_setopt($curl, CURLOPT_URL, $url); //设置是否输出header curl_setopt($curl, CURLOPT_HEADER, false); //设置是否输出结果 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //设置是否检查服务器端的证书 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //使用curl_exec()将curl返回的结果转换成正常数据并保存到一个变量中 $data = curl_exec($curl); $data =json_decode($data,true); //关闭会话 curl_close($curl); return $data; } ?>
3、公众号POST请求方法
<?php /* * 使用post方式发送请求 * 微信公众号模板消息 * $data json格式 * */ public function wxTplPost($url,$data){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $out = curl_exec($ch); curl_close($ch); $res = json_decode($out, true); return $res; } ?>
文章评论(0)