这篇博客适合看懂了官方文档不知道咋写的,只想接口自定义菜单的请看第34行,祝您生活愉快!
第一步,打开服务器开发配置,试过不开启也可以用接口自定义菜单,不过下一篇微信自动回复也要打开干脆就提前打开吧
启用的时候微信会给服务器地址发送一个验证的请求,验证通过才能正常启用,用户给公众号发送消息的时候也会对这个地址发送请求,和验证的区别是,验证会多一个echostr字段,如果存在这个字段就是验证地址的请求,下面是验证的代码,微信官方文档就有
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
方法返回true则验证通过,直接返回
echo $_GET["echostr"];
exit;
然后就可以正常启用了。下面有71个字的废话,顺便一说我在没有打开服务器配置的情况下用接口自定义了菜单,启用之后菜单就没了,所以只要启用应该是不管在自定菜单设置的菜单还是接口定义的都会消失
下面就是自定义菜单的代码了,这是最近开发的新的项目叫车公众号,发现有很多人照着官方文档写代码不好用,可以直接复制我的修改(((o(゚▽゚)o)))
/**
* 公众号菜单
*/
public function wxMenu()
{
$data = ' {
"button":[
{
"type":"location_select",
"name":"一键叫车",
"key":"rselfmenu_2_0"
},
{
"type":"view",
"name":"语音叫车",
"url":"http://www.baidu.com"
},
{
"name":"我的",
"sub_button":[
{
"type":"view",
"name":"我的信息",
"url":"http://www.baidu.com"
}]
}]
}';
$url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token=' . getAccesstoken() . '';
$res = $this->curl_post($url, $data);
dump($res);
}
直接请求就可以了,祝你成功!