最近在做企业微信公众开发,其实是简单的做一个服务号群发和针对性发送消息给关注用户的功能,相对于客服消息和群发消息,模板消息无疑是最符合需求的。
这里直接上代码把:
<?php
header('content-type:text/html;charset=utf-8');
define("TOKEN", "my_weixin"); //define your token
class Oauth {
//获得全局access_token
public function get_token(){//如果已经存在直接返回access_token
$appid = ''; //appid
$appsecret = '';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret;//请求地址
//2初始化curl请求
$ch = curl_init();
//3.配置请求参数
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_URL, $url);//请求
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不直接输出数据
//4.开始请求
$res = curl_exec($ch);//获取请求结果
if (curl_errno($ch)) {
var_dump(curl_error($ch));//打印错误信息
}
//5.关闭curl
curl_close($ch);
$arr = json_decode($res, true);//将结果转为数组
$_SESSION['access_token'] = $arr['access_token'];//将access_token存入session中,可以不存,每次都获得新的token
$_SESSION['expire_time'] = time() + 7200;
return $arr['access_token'];
}
//推送模板信息 参数:发送给谁的openid,客户姓名,客户电话,推荐楼盘(参数自定)
function sendMessage($openid,$customName,$customPhone,$reportBuilding) {
//获取全局token
$token = $this->get_token();
$url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$token;//模板信息请求地址
//发送的模板信息(微信要求json格式,这里为数组(方便添加变量)格式,然后转为json)
$post_data = array(
"touser"=>$openid, //推送给谁,openid
"template_id"=>"DrAuVKmBFSogNRKXXEXsmuXHpM_Tcj1MdN4xj6GsFiE", //微信后台的模板信息id
"url"=>"", //下面为预约看房模板示例
"data"=> array(
"first" => array(
"value"=>"您有新客户,请及时查看!",
"color"=>"#173177"
),
"keyword1"=>array(
"value"=>$customName, //传的变量
"color"=>"#173177"
),
"keyword2"=>array(
"value"=>$customPhone,
"color"=>"#173177"
),
"keyword3"=>array(
"value"=>$reportBuilding,
"color"=>"#173177"
),
"keyword4"=> array(
"value"=>date('Y-m-d H:i:s'),
"color"=>"#173177"
),
"remark"=> array(
"value"=>"请及时联系客户哦!",
"color"=>"#173177"
),
)
);
//将上面的数组数据转为json格式
$post_data = json_encode($post_data);
//发送数据,post方式<br> //配置curl请求
}
}
$send = new Oauth();//实例化类
$send->sendMessage('o9ARg1uVOw0tNpSjhOsxC_ZktAcw','1','肖翔宁','3');//调用方法
?>
代码也是看网上的大佬的分享和接口文档,过程中遇到一个很蠢的问题,就是本来想着执行一次这个方法,但是访问页面的时候一直刷模板消息直到把接口访问次数给刷没了。查了很久发现是把这个代码写在了公众号和服务器配置的url的默认页面,微信发送消息成功时候会把成功的消息返回给url页面,这是一次新的访问,模板消息会重新发送,所以不断执行方法发送消息,把这个代码写在其他页面问题就解决了,相当尴尬