微信公众号自定义菜单


我们自己的服务器与微信公众号服务器沟通方式基本上是:

1.获取access_token

2.指定微信服务器的功能端口

3.准备微信服务器指定样式的数据

4.上传数据到服务器

5.返回成功或错误码

createmenu.php

<?php
//------1.获取access_token------
function getToken(){
$appid='你的微信公众号appid';
$appsecret='你的微信公众号appsecret';

//-------获取access_token的接口------
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;

//------将整个网页文件读入字符串------
$json=file_get_contents($url);

//------然后解码json------
$result=json_decode($json,true);

//------返回其中的access_token------
return $result['access_token'];
}

$access_token=getToken();


//------2.指定微信服务器的功能端口------
//------这里是微信公众号的创建自定义菜单端口-------
$createmenu="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;


//------3.准备微信服务器指定样式的数据------
//------这里是创建自定义菜单json数据------
$menujson = '{"button": [
{"name":"主菜单一",
"sub_button":[
{"type":"click","name":"子菜单1","key":"V0001"},
{"type":"click","name":"子菜单2","key":"V0002"}
]},
{"name":"🔥🔥活动",
"sub_button":[
{"type":"click","name":"子菜单1","key":"V0006"}
]},

{"name":"主菜单三",
"sub_button":[
{"type":"click","name":"子菜单1","key":"V0011"},
{"type":"click","name":"子菜单2","key":"V0012"},
{"type":"click","name":"子菜单3","key":"V0013"},
{"type":"click","name":"子菜单4","key":"V0014"},
{"type":"click","name":"子菜单5","key":"V0015"}
]},
]}';


//------4.上传数据到服务器------
//------自定义一个函数, 用来上传数据------
//参数$url是上面带有access_token的创建自定义菜单的接口url
//参数$data是上面已经准备好的创建自定义菜单的json数据
function https_request($url,$data = null){
$curl = curl_init();

//------curl_setopt函数的作用是模仿用户的一些操作行为, 比如登录、注册等------
//------首先取出网址------
curl_setopt($curl, CURLOPT_URL, $url);

//------是否验证证书-----
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

if (!empty($data)){
//------使用POST方式上传$data数据------
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}

//-----以文件流的形式返回数据, 以便存为变量------
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

//------执行curl------
$output = curl_exec($curl);

//------关闭curl------
curl_close($curl);

return $output;
}
//------使用函数上传数据到微信服务器------
$result=https_request($createmenu,$menujson);


//------5.返回成功或错误码------
var_dump($result);

最后上传文件到我们自己的服务器中, 然后打开页面执行一下
微信公众号菜单是24小时缓存, 如果要测试需要取消并重新关注即可

上面代码中两个自定义的函数, 建议可以放到另外的一个文件中, 微信公众号开发很多地方要用到, 用的使用include即可
posted on 2019-06-08 10:18  新手老猿  阅读(304)  评论(0编辑  收藏  举报