主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
欢迎留言,转发,
项目源代码参考地址点击我点击我--欢迎开始。
自定义菜单有两种实现方式:1 .编辑模式2。开发模式。
编辑模式很简单,就不赘述了。......
开发模式1下自定义菜单的实现。利用微信公众平台2的接口调试工具实现。使用官方提供的接口实现。
前期准备添加插件
K8WTIEI86W9W5XERD`MRD{6.png
利用微信公众平台接口调试工具实现
自定义菜单-界面调试工具。png
正如您所看到的,两个参数是必需的,并且都是access_token主体所必需的。
有人想问,这两个参数怎么获取?
Body实际上是一个生成菜单的JSON对象。官方提供一个栗子供参考。
{ & quot按钮& quot:
自定义菜单-以获取access_token.png
利用官方提供的接口,我们可以在Jfinal-weixin中创建、查询和删除封装菜单以及创建、查询和删除个性化菜单,并测试个性化菜单的匹配结果。
自定义菜单-菜单封装界面。png
那么问题来了,包装好了怎么用?以下是提供封装的接口
//查询自定义菜单公共静态API结果get menu(){ string JSON result = httputils . get(get menu+accesstokenapi . getaccessstokenstr());返回新的API result(JSON result);}//创建自定义菜单公共静态API结果创建菜单(string JSON str){ string JSON result = httputils . post(Create menu+accesstokenapi . getaccesstokenstr()、JSON str);返回新的API result(JSON result);}//删除自定义菜单公共静态API结果Delete menu(){ string JSON result = httputils . get(deletemenuurl+accesstokenapi . getaccesstokenstr());返回新的API result(JSON result);}//创建个性化定制菜单公共静态API结果添加条件(String JSON STR){ String JSON Result = Httputils。post(AddConditionalURL+AccessorTokenAPI。GetAccessorTokenstr(),JSON STR);返回新的API result(JSON result);}//删除个性化定制菜单公共静态API结果del conditional(string menuid){ hashmap params = new hashmap();params . put(& quot;menuid & quot,menuid);string URL = delConditionalUrl+accesstokenapi . getaccessstokenstr();string JSON result = httputils . post(URL,JSON utils . to JSON(params));返回新的API result(JSON result);}//测试个性化菜单匹配结果公共静态API结果try match(string userid){ hashmap params = new hashmap();params . put(& quot;用户标识& quot,userId);string URL = tryMatchUrl+accesstokenapi . getaccessstokenstr();string JSON result = httputils . post(URL,JSON utils . to JSON(params));返回新的API result(JSON result);}公共静态API result getCurrentSelfMenuInfo(){ String JSON result = httputils . get(getCurrentSelfMenuInfoUrl+accesstokenapi . getaccesstokenstr());返回新的API result(JSON result);}开源项目weixin_guide中的com . javen . weixin . menu . menu manager类中提供了详细的演示。
public static void main(String[]args){//将菜单对象转换为json字符串String JSON Menu = JSON Kit。ToJSON (gettestmenu())。tostring();system . out . println(JSON menu);API config AC = new API config();//要配置微信API相关常量,请使用自己的AC . setappid(& quot;wx 614 c 453 E0 D1 DCD 12 & quot;);AC . setappsecret(& quot;19 a02e 4927d 346484 fc 70327970457 f 9 & quot;);//AC . setappid(prop kit . get(& quot;appId & quot));//AC . setappsecret(prop kit . get(& quot;appSecret"));API config kit . setthreadlocalapiconfig(AC);//创建菜单API结果API result = menuapi。创建菜单(JSON菜单);system . out . println(API result . get JSON());}可以看到main方法中调用了MenuApi.createMenu(jsonMenu)。jsonMenu从何而来?
实际上,自定义菜单的实体对象在这里被转化为JSON。
string JSON menu = JSON kit . to JSON(gettest menu())。toString();
menu/* * *组装菜单数据的包* * @ return */private静态菜单gettest menu(){ clickbutton BTN 11 = new click button();btn11.setName("微信相册发图”);BTN 11 . settype(& quot;pic _ weixin & quot);BTN 11 . setkey(& quot;rselfmenu _ 1 _ 1 & quot);click button BTN 12 = new click button();btn12.setName在相册里拍照或发图”);BTN 12 . settype(& quot;图片_照片_或_相册& quot);BTN 12 . setkey(& quot;rselfmenu _ 1 _ 2 & quot);;click button BTN 13 = new click button();btn13.setName系统拍照发图”);BTN 13 . settype(& quot;pic _ sysphoto & quot);BTN 13 . setkey(& quot;rselfmenu _ 1 _ 3 & quot);click button BTN 21 = new click button();BTN 21 . setname(& quot;带提示的扫码”);BTN 21 . settype(& quot;scancode _ waitmsg & quot);BTN 21 . setkey(& quot;rselfmenu _ 2 _ 1 & quot);;click button BTN 22 = new click button();btn22.setName("扫码推送事件”);BTN 22 . settype(& quot;scancode _ push & quot);BTN 22 . setkey(& quot;rselfmenu _ 2 _ 2 & quot);;view button BTN 23 = new view button();btn23.setName("我的设备”);BTN 23 . settype(& quot;查看& quot);BTN 23 . seturl(& quot;https://HW . weixin . QQ . com/device ctrl/panel/device -list . html?appid = wx 614 c 453 E0 D1 DCD 12 & quot;);view button BTN 31 = new view button();btn31.setName微社区”);BTN 31 . settype(& quot;查看& quot);BTN 31 . seturl(& quot;http://whsf.tunnel.mobi/whsf/msg/wsq");click button BTN 32 = new click button();btn32.setName发送位置”);BTN 32 . settype(& quot;位置选择& quot);BTN 32 . setkey(& quot;rselfmenu _ 3 _ 2 & quot);//http://tencent://message/?uin=572839485。Site=在线咨询&;Menu =是//http://wpa.qq.com/msgrd?v = 3 & ampuin=572839485。site = qq & ampmenu = yes view button BTN 33 = new view button();btn33.setName在线咨询”);BTN 33 . settype(& quot;查看& quot);BTN 33 . seturl(& quot;http://wpa.qq.com/msgrd? v = 3 & amp;uin=572839485。site = qq & ampmenu = yes & quot);view button BTN 34 = new view button();btn34.setName我的博客& quot);BTN 34 . settype(& quot;查看& quot);BTN 34 . seturl(& quot;http://www.cnblogs.com/zyw-205520");click button BTN 35 = new click button();btn35.setName点击事件”);settype(& quot;单击& quot);setkey(& quot;rselfmenu _ 3 _ 5 & quot);ComButton main BTN 1 = new ComButton();main BTN 1 . setname(& quot;发个图”);main BTN 1 . set sub _ Button(new Button[]{ BTN 11,btn12,BTN 13 });ComButton main BTN 2 = new ComButton();main BTN 2 . setname(& quot;扫码”);main BTN 2 . set sub _ Button(new Button[]{ BTN 21,btn22,BTN 23 });ComButton main BTN 3 = new ComButton();main BTN 3 . setname(& quot;个人中心”);main BTN 3 . set sub _ Button(new Button[]{ BTN 31,btn32,btn33,btn34,BTN 35 });/* * *这是目前微信官方账号xiaoqrobot的菜单结构,每个一级菜单都有一个二级菜单项< br & gt* *当一级菜单下没有二级菜单时,如何定义一个菜单?& ltbr & gt*例如,第三个一级菜单项不是“更多体验”,而是直接“幽默笑话”,因此菜单应定义如下:
生成菜单的JSON:{ " button & quot;:[{ & quot;sub _ button & quot:[{ & quot;名称& quot:& quot微信相册发图”,& quot键入& quot:& quotpic _ weixin & quot,& quotkey & quot:& quotrselfmenu _ 1 _ 1 & quot},{ & quot名称& quot:& quot在相册中拍摄照片或发送图片”,& quot键入& quot:& quot图片_照片_或_相册& quot,& quotkey & quot:& quotrselfmenu _ 1 _ 2 & quot},{ & quot名称& quot:& quot系统拍照并发送图片”键入& quot:& quotpic _ sysphoto & quot,& quotkey & quot:& quotrselfmenu _ 1 _ 3 & quot}],& quot名称& quot:& quot发送图片”键入& quot:null}、{ & quotsub _ button & quot:[{ & quot;名称& quot:& quot扫码提示“,& quot键入& quot:& quotscancode _ waitmsg & quot,& quotkey & quot:& quotrselfmenu _ 2 _ 1 & quot},{ & quot名称& quot:& quot扫码推送事件”键入& quot:& quotscancode _ push & quot,& quotkey & quot:& quotrselfmenu _ 2 _ 2 & quot},{ & quot名称& quot:& quot我的设备”键入& quot:& quot查看& quot,& quoturl & quot:& quothttps://HW . weixin . QQ . com/device ctrl/panel/device -list . html?appid = wx 614 c 453 E0 D1 DCD 12 & quot;}],& quot名称& quot:& quot扫码“,& quot键入& quot:null}、{ & quotsub _ button & quot:[{ & quot;名称& quot:& quot微社区",& quot键入& quot:& quot查看& quot,& quoturl & quot:& quothttp://whsf.tunnel.mobi/whsf/msg/wsq" }、{ & quot名称& quot:& quot发送位置“,& quot键入& quot:& quot位置选择& quot,& quotkey & quot:& quotrselfmenu _ 3 _ 2 & quot},{ & quot名称& quot:& quot在线咨询”,& quot键入& quot:& quot查看& quot,& quoturl & quot:& quothttp://wpa.qq.com/msgrd? v = 3 & amp;uin=572839485。site = qq & ampmenu = yes & quot},{ & quot名称& quot:& quot我的博客键入& quot:& quot查看& quot,& quoturl & quot:& quothttp://www.cnblogs.com/zyw-205520" }、{ & quot名称& quot:& quot单击事件”键入& quot:& quot单击& quot,& quotkey & quot:& quotrselfmenu _ 3 _ 5 & quot}],& quot名称& quot:& quot个人中心”键入& quot:null}],& quot匹配规则& quot:null}响应的状态:{ & quot错误代码& quot:0,& quoterrmsg & quot:& quot好的& quot}以上是生成自定义菜单的全过程。
[相关建议]
1.下载微信微信官方账号平台源代码。
2.微智创T+微信机器人源代码
3.微信网王v3.4.5高级商业版微信魔方源代码
这几篇文章你可能也喜欢:
- 暂无相关推荐文章
本文由主机参考刊发,转载请注明:分享微信微信官方账号开发自定义菜单的示例教程(微信微信官方账号中的自定义菜单怎么做) https://zhujicankao.com/114362.html
评论前必须登录!
注册