上周部门老大安排了一个新任务,需求是在公司机器人上打完卡后给打卡人绑定的微信推送打卡信息。
虽然之前没开发过,但不妨碍我接收到各种消息推送啊(譬如招行还款啊,拼多多拼单提醒啊~~),所以我知道这个肯定是可以做的,并且开发文档应该也是很成熟的。果然到网上一搜,结果很让人欣喜 ^ ^ 接下来就开始正文啦啦啦
需要的数据微信公众号的开发者 ID(AppID)、开发者密码(AppSecret) & 模板消息id
AppID和AppSecret的获取可以参考我另外一篇文章,我们主要说的是模板消息id的获取
没有开发过模板消息的人可能会一脸懵:模板消息是什么玩意?它不是玩意~它就是你接下来要开发的啊(~ ̄▽ ̄)~
首先要开通模板消息功能
1 >> 在微信公众平台的后台,依次进入“功能->添加功能插件->模板消息”,即可申请模板消息(模板消息的申请需账号已经开通微信支付权限)
2 >> 点击申请
3 >> 申请时,选择2个和自己相关的行业即可
4 >> 提交并且申请通过后,可以在模板库中看到模板消息列表,选择一个匹配自己的模板消息点击详情添加(微信提供的模板消息里面基本已经涵盖的很全了,如果没有找到合适自己的也可以自己申请创建一个新的模板消息,我这里用的是一个现成的模板消息)
5 >> 申请完后就可以在自己的模板消息查看你要用的模板消息的id
现在所有的数据都拿到了,接下来就是开发正题了~
public function signPush(){
//获取token值
$appid = '';
$appsec = '';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsec}";
$data = json_decode(file_get_contents($url),1);
$access_token = $data['access_token'];
// 构造推送信息数组
$data = array(
'touser' => '',
'template_id' => '',
'url' => 'http://wx.avatarmind.com', //详情的跳转链接
'topcolor' => "#FF0000",
'data' => array(
'first' => array(
"value" => '签到成功',
"color" => "#008000"
),
'keyword1' => array(//keyword1、keyword2、keyword3是模板消息里定义的变量名
"value" => 'suosi',
"color" => "#173177"
),
'keyword2' => array(
"value" => date("Y-m-d H:i:s",time()),
"color" => "#173177"
),
'keyword3' => array(
"value" => '正常',
"color" => "#173177"
),
'remark' => array(
"value" => '今天又是活力满满的一天~',
"color" => "#008000"
),
),
);
// 发布推送消息
$result = $this->curl_post_send_information($access_token,json_encode($data));
Returndata(1,$result,'获取成功!');
}
public function curl_post_send_information( $token,$vars,$second=120,$aHeader=array())
{
$ch = curl_init();
//超时时间
curl_setopt($ch,CURLOPT_TIMEOUT,$second);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
//这里设置代理,如果有的话
curl_setopt($ch,CURLOPT_URL,'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token='.$token);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
if( count($aHeader) >= 1 ){
curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
}
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
$data = curl_exec($ch);
if($data){
curl_close($ch);
return $data;
}
else {
$error = curl_errno($ch);
curl_close($ch);
return $error;
}
}
效果展示: