概述:
通过get方法调用微信接口,创建菜单,菜单可以响应点击、跳转页面、打开二维码扫描器等。
目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。
结果:
步骤:
1. 调用接口获得通讯Token
2. 调用接口创建自定义菜单
3. 响应自定义菜单操作
实现:
1. 调用接口获得通讯Token
首先从公众平台管理后台得到AppID, AppSecret
其次服务器上创建php文件(menu.php),先编写通过CURL提交请求的函数:
//=>封装的https请求函数
function https_request($url, $data = null, $method = 'GET'){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if($method != 'GET'){
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
//<=封装的https请求函数
//填写自己公众号的appid
$appid="**********";
//填写自己公众号的secret
$secret="******************";
//构造Get请求URL
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
//通过CURL提交GET请求
$result = https_request($url);
//解码JSON数据
$strjson=json_decode($result);
//获得Token
$token = $strjson->access_token;
menu.php中加入创建自定义菜单的代码:
//菜单name数组
$menuName = array('百度', '精彩活动', '扫二维码', '问卷调查');
//URL编码,解决中文在进行JSON转码时出现乱码问题
foreach ( $menuName as $key => $value ) {
$menuName[$key] = urlencode ( $value );
}
//菜单数组
$weixinMenu = array(
'button' => array(
array('type' => 'view', 'name' => $menuName[0], 'url' => 'http://www.baidu.com/'),
array('name' => $menuName[1], 'sub_button' => array(
array('type' => 'scancode_push', 'name' => $menuName[2], 'key' => 'M2001_SM', 'sub_button' => array()),
array('type' => 'view', 'name' => $menuName[3], 'url' => 'http://www.sina.com.cn/')
)
)
)
);
//对菜单数组JSON编码,并进行URL解码
$weixinMenu = urldecode(json_encode($weixinMenu));
//自定义菜单创建接口
$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$token;
//通过CURL提交POST请求
$result = https_request($url, $weixinMenu, 'POST');
3. 执行该PHP代码,创建自定义菜单;
我是直接创建在服务器web目录下,因此直接浏览器访问 http://www.**.com/menu.php
可以最后加上echo $result; 看到返回结果:
注:重新关注公众号可以马上看到结果;自定义菜单的其他类别及参数,请参看微信官网-自定义菜单;以及查看官方返回码说明;
4. 响应微信菜单操作
关于菜单响应,有篇文章写得很好,程序封装也不错,我就不再赘述。
微信菜单响应教程