微信公众号发送模板消息 – PHP后台
注意:这里的用户openid必须是和你的appid,appsecret是一整套的,所谓一整套的意思就是,openid是通过你当前的这个appid获取到的,如果是通过其他appid获取到的用户openid,就会报错openid无效。
直接看代码吧:
/*** 发送模板消息*/public function send_notice(){$appid = '填写你的appid';$appsecret = '填写你的appsecret ';$access_token_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret;//获取access_token$json_token=$this->curl_post($access_token_url);$access_token1=json_decode($json_token,true);$access_token2=$access_token1['access_token'];//模板消息$json_template = $this->json_tempalte();$url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$access_token2;$res = $this->curl_post($url,urldecode($json_template));if ($res['errcode']==0){return '发送成功';}else{return '发送失败';}}/*** 将模板消息json格式化*/public function json_tempalte(){//模板消息$template=['touser' => '填写用户openid', //用户openid'template_id' => "模板id", //在公众号下配置的模板id'url' => "http://baidu.com", //点击模板消息会跳转的链接//如果想要跳转微信小程序,就把上面这个url这一行注释掉,用下面这个`miniprogram`// 'miniprogram' => [// 'appid' => '这里填写要跳转的小程序appid',// 'pagepath' => 'pages/index/index?order_id=205', //这里填写小程序路径,可以拼接参数// ],'topcolor' => "#7B68EE",'data'=>array('first'=>array('value'=>urlencode("您的活动已通过"),'color'=>"#FF0000"),'keyword1'=>array('value'=>urlencode('测试文章标题'),'color'=>'#FF0000'), //keyword需要与配置的模板消息对应'keyword2'=>array('value'=>urlencode(date("Y-m-d H:i:s")),'color'=>'#FF0000'),'keyword3'=>array('value'=>urlencode('测试发布人'),'color'=>'#FF0000'),'keyword4'=>array('value'=>urlencode('测试状态'),'color'=>'#FF0000'),'remark' =>array('value'=>urlencode('备注:这是测试'),'color'=>'#FF0000'), )];$json_template=json_encode($template);return $json_template;}/*** @param $url* @param array $data* @return mixed* curl请求*/function curl_post($url , $data=array()){$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);// POST数据curl_setopt($ch, CURLOPT_POST, 1);// 把post的变量加上curl_setopt($ch, CURLOPT_POSTFIELDS, $data);$output = curl_exec($ch);curl_close($ch);return $output;}