一:准备工作.
1.将需要使用到的微信配置放在config.php配置文件中方便获取.(我使用的是微信测试号)
return array(//'配置项'=>'配置值''appID'=>'wxaf7d6c*******e6','appSecret'=>'0bc58d56476*********546ab81d5e2');
二:获取使用微信公众号基本接口所需要的access_token,并全局缓存.
我在tp框架Application/Home/Common/function.php中定义公共方法getAccessToken方法获取access_token并全局缓存.
//该公共方法获取和全局缓存基本接口需要使用的access_token(该access_token为基本接口使用的access_token)function getAccessToken(){//我们将access_token全局缓存在文件中,每次获取的时候,先判断是否过期,如果过期重新获取再全局缓存//我们缓存的在文件中的数据,包括access_token和该access_token的过期时间戳.//获取缓存的access_token$access_token_data = json_decode(F('access_token'),true);//判断缓存的access_token是否存在和过期,如果不存在和过期则重新获取.if($access_token_data !== null && $access_token_data['access_token'] && $access_token_data['expires_in'] > time()){return $access_token_data['access_token'];}else{//重新获取access_token,并全局缓存$curl = curl_init();var_dump($curl);curl_setopt($curl,CURLOPT_URL,'https://api./cgi-bin/token?grant_type=client_credential&appid='.C('appID').'&secret='.C('appSecret'));curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);//获取access_token$data = json_decode(curl_exec($curl),true);var_dump($data);if($data != null && $data['access_token']){//设置access_token的过期时间,有效期是7200s$data['expires_in'] = $data['expires_in'] + time();//将access_token全局缓存,快速缓存到文件中.F('access_token',json_encode($data));//返回access_tokenreturn $data['access_token'];}else{exit('微信获取access_token失败');}}}
三:发送模板消息.
1.发送模版消息需要以post的方式请求url。
我在tp框架Application/Home/Common/function.php中定义公共方法curl_post方法发送模版消息.
//curl使用post方式请求url,参数为$arr是post方式传送的数据,为数组类型,$url为需要请求的urlfunction curl_post($arr,$url){//初始化$curl = curl_init();//设置抓取的urlcurl_setopt($curl, CURLOPT_URL, $url);//设置头文件的信息作为数据流输出curl_setopt($curl, CURLOPT_HEADER, 1);//设置获取的信息以文件流的形式返回,而不是直接输出。curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//设置post方式提交curl_setopt($curl, CURLOPT_POST, 1);//设置post数据curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($arr));//执行命令$data = curl_exec($curl);//关闭URL请求curl_close($curl);//显示获得的数据print_r($data);}
2.在类中定义POST数据,并请求,成功发送模板消息.
//发送模版消息public function sendTemplateMessage(){//接受模板消息的用户openid$openid = 'oGRO5wHvvpLXxTu0-9p0WalaQauo';//模板消息id$template_id = 'yb2etwrd8GJ-n5zxTaRuyPWcUOSCFB7-hdtUYlNax4M';//获取access_token,该access_token为基本接口使用的access_token$access_token_arr = getAccessToken();//设置模板消息$array = array();//设置接受消息用户的openid$array['touser'] = $openid;//设置模板消息id$array['template_id'] = $template_id;//设置点击模板消息跳转的url,因为我是测试,所以写的是百度$array['url'] = '';//设置模板消息$data = array();$data['first'] = array();$data['first']['value'] = '恭喜你测试成功';$data['first']['color'] = '#173177';$array['data'] = $data;//调用公共方法curl_post,发送模板消息curl_post($array,'https://api./cgi-bin/message/template/send?access_token='.$access_token_arr);}
这就是发送模板消息的过程,如果有错误,请大家指出