thinkphp 5.0 通过公众号推送消息
微信公众平台获取到AppID,AppSecret
登录到微信公众平台,找到 开发—基本设置,如图1,图2:


获取到AppId和AppSecret,顺手把你服务器的ip添加到白名单,用来获取用户的openid,具体怎么获取用户的openid,可以去网上查一下。
选择模板消息
在微信公众平台首页,上面部分找到 模板消息,会看到自己添加的模板消息列表,如果没有可以去模板库找到相应模板,记下模板ID。如下图:模板消息模板

接下来万事俱备,就差代码了:
// 发送消息方法
public function sendMsg($tem_id,$data,$openid,$return_url='')
{
if($tem_id == ''){
$tem_id = "7wuhorQScRZHbn_NpPWlR4uoCN4CcZKtxEL_hwnNVZI";
}
$appid = config('wx.appid');
$appsecret = config('wx.appsecret');
$return_url = ''; // 你的消息详情页面,如果为空。点进去之后是空白页面
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
if (cookie('access_token')){
$access_token2 =cookie('access_token');
}else{
$json_token=$this->curl_post($url);
$access_token1=json_decode($json_token,true);
$access_token2 = $access_token1['access_token'];
setcookie('access_token',$access_token2,7200);
}//缓存assesstoken
$params1 = json_encode($this->json_tempalte($openid,$return_url,$data,$tem_id),JSON_UNESCAPED_UNICODE);
$url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$access_token2;
$params = $this->curl_post($url,urldecode($params1));
$params = json_decode($params,true);
if ($params['errcode']==0){
return '发送成功';
}else{
return '发送失败';
}
}
/**
* curl请求
* @param $url 请求的目的地址
* @param array $data 请求带的数据
* @return mixed
*
*/
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;
}
/**
* @param $openid 用户的openid
* @param string $url 点击消息详情的链接
* @param array $data 消息配置 具体根据每个模板的要求进行设置
* @param string $template_id 模板id
* @return array
*/
function json_tempalte($openid,$url='',$data,$template_id = ''){
$template=[
'touser'=>$openid,//openID
'template_id'=>$template_id,//模版id
'url'=>$url,
'topcolor'=>"#7B68EE",
'data'=>$data
];//各个参数不明白的就去看文档,很详细。
return $template;
}
发送消息 sendMsg()方法里面的$data 是模板消息需要的参数,如佣金提醒模板
$data = [
‘first’=>[‘value’=>‘test’,‘color’=>"#000"],
‘keyword1’=>[‘value’=>‘test’,‘color’=>’#F70997’],
‘keyword2’=>[‘value’=>‘test’,‘color’=>’#248d24’],
‘keyword3’=>[‘value’=>date(“Y-m-d H:i:s”),‘color’=>’#000’],
‘remark’ =>[‘value’=>‘test’,‘color’=>’#1784e8’]
];
我是直接把appid和appsecret放到配置文件里面了,openid因为用的地方比较多,就直接存数据库了。
就这么多了,写的不那么详细,请大家多多指正哦!