微信公众平台消息接口开发 自定义菜单
【导语】微信绝对不再只是一款“通信工具”,正在向它擅长且有利可图的领域渗透。8月5日,微信5.0千呼万唤始出来。
这个版本原定于今天下午15:00正式发布。不过由于没能控制住苹果App Store的审核节奏,iOS版在今日上午提前爆出。经过试用,微信5.0虽然不是那么完美和优雅,但依然是一个强大的版本:以前,微信是一款沟通工具。现在,微信俨然自成一体。在携着微信沃卡与联通走到一起在国内找到安全感后,微信从5.0开始探索商业化,前途一片光明,不过依然有几座大山横在路上。
今天9-10点多,微信IOS版就出来了,我们也是立马就开始下载进行体验。
随后又得到消息微信公众平台也开始更新了,微信将公众帐号分为了订阅号和服务号,服务号与订阅号的区别明显在于消息的推送上。
服务号一个月只能推送一条消息,能申请自定义菜单
订阅号不能申请自定义菜单
我立马将足下软件学院的微信公众帐号申请为服务号,为的就是微信的自定义菜单。
好了 废话不多说。马上进入主题,微信自定义菜单的开发。
先看看效果:

具体的代码如下:
http请求方式:POST https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
ACCESS_TOKEN获取方式
http请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
appid 申请自定义菜单的时候给你的
appsecret 同上↑
注access_token对应于公众号是全局唯一的票据,重复获取将导致上次获取的access_token失效,有效期2个小时。
String url = "你的连接";
String responeJsonStr = "{\"button\":[ " +
"{ \"name\":\"足下小V\"," +
"\"sub_button\":[" +
"{" +
"\"type\":\"click\"," +
"\"name\":\"就业学员\"," +
"\"key\":\"sf\"}," +
"{\"type\":\"click\"," +
"\"name\":\"学员作品\"," +
"\"key\":\"bd\"" +
" }," +
" {" +
"\"type\":\"click\"," +
"\"name\":\"来校路线\"," +
"\"key\":\"4ds\"" +
" }]" +
" }," +
"{ \"name\":\"百宝箱\"," +
"\"sub_button\":[" +
"{" +
"\"type\":\"click\"," +
"\"name\":\"足下微网\"," +
"\"key\":\"sdfd\"}," +
"{\"type\":\"click\"," +
"\"name\":\"会员卡\"," +
"\"key\":\"vdf\"" +
" }," +
" {" +
"\"type\":\"click\"," +
"\"name\":\"百宝箱\"," +
"\"key\":\"bbb\"" +
" }]" +
" }," +
"{ \"name\":\"快捷菜单\"," +
"\"sub_button\":[" +
"{" +
"\"type\":\"click\"," +
"\"name\":\"今日课表\"," +
"\"key\":\"dgs\"}," +
"{\"type\":\"click\"," +
"\"name\":\"3G相册\"," +
"\"key\":\"3d\"" +
" }," +
" {" +
"\"type\":\"click\"," +
"\"name\":\"留言墙\"," +
"\"key\":\"dss\"" +
" }]" +
"}]" +
" }";
//对菜单进行编码,UTF-8不会出现乱码问题
UTF8Encoding encoding = new UTF8Encoding();
byte[] data = encoding.GetBytes(responeJsonStr);
HttpWebRequest myRequest =
(HttpWebRequest)WebRequest.Create(url);
//POst 提交方式
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse response;
Stream responseStream;
StreamReader reader;
string srcString;
response = myRequest.GetResponse() as HttpWebResponse;
responseStream = response.GetResponseStream();
reader = new System.IO.StreamReader(responseStream, Encoding.UTF8);
//返回结果 正确的Json返回结果:{"errcode":0,"errmsg":"ok"}
// 错误的Json返回结果:{"errcode":40018,"errmsg":"invalid button name size"}
srcString = reader.ReadToEnd();
reader.Close();
Console.WriteLine(srcString);
Console.Read();

浙公网安备 33010602011771号