微信公众平台开发之自定义菜单的创建和删除的详细介绍
在创建菜单时,都是基于JSON传输数据,所以要用到JSON,下载相关包 点击下载:
公众平台开发文档上有说明:
请注意:
1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。
3、创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
自定义菜单接口可实现多种类型按钮,如下:
1、click:点击推事件用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event
的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义
的key值与用户进行交互;
2、view:跳转URL用户点击view类型按钮后,微信客户端将会打开开发者在
按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。
3、scancode_push:扫码推事件用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显
示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。
4、scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框用户点击按钮后,微信客户端将调
起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息
接收中”提示框,随后可能会收到开发者下发的消息。
5、pic_sysphoto:弹出系统拍照发图用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,
会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下
发的消息。
6、pic_photo_or_album:弹出拍照或者相册发图用户点击按钮后,微信客户端将弹出选择
器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。
7、pic_weixin:弹出微信相册发图器用户点击按钮后,微信客户端将调起微信相册,完成选择操作
后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开
发者下发的消息。
8、location_select:弹出地理位置选择器用户点击按钮后,微信客户端将调起地
理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择
工具,随后可能会收到开发者下发的消息。
9、media_id:下发消息(除文本消息)用户点击
media_id类型按钮后,微信服务器会将开发者填写的永久素材id对应的素材下发给用户,永久素材类
型可以是图片、音频、视频、图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”
接口上传后获得的合法id。10、view_limited:跳转图文消息URL用户点击view_limited类型按钮后,
微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL,永久素材类型只支持图文
消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。
请注意,3到8的所有事件,仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户,旧版本微信用户点击后将 没有回应,开发者也不能正常接收到事件推送。9和10,是专门给第三方平台旗下未微信认证(具体而言,是资质认证未通过)的订阅号准备的事件类型,它们是 没有事件推送的,能力相对受限,其他类型的公众号不必使用。
一、由于自定义菜单在采用http请求方式,要使用https协议。写一个方法类,处理https和json数据。
在包com.cc.wechat.util下新建类:
---CommonUtil.java:
package com.cc.wechat.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.URL; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; /** * 公众平台通用接口工具类 * @author ICHN * 2015-09-04 */ public class CommonUtil { /** * 发起https请求并获取结果 * @param requestUrl 请求地址 * @param requestMethod 请求方式(GET、POST) * @param outputStr 提交的数据 * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值) */ public static String httpsRequest(String requestUrl, String requestMethod, String outputStr) { StringBuffer sb = new StringBuffer(); // 创建SSLContext对象,并使用我们指定的信任管理器初始化 TrustManager[] tm = {new MyX509TrustManager()}; try { SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); sslContext.init(null, tm, new java.security.SecureRandom()); // 从上述SSLContext对象中得到SSLSocketFactory对象 SSLSocketFactory ssf = sslContext.getSocketFactory(); URL url = new URL(requestUrl); HttpsURLConnection httpsUrlConnection = (HttpsURLConnection)url.openConnection(); httpsUrlConnection.setSSLSocketFactory(ssf); httpsUrlConnection.setDoInput(true); httpsUrlConnection.setDoOutput(true); httpsUrlConnection.setUseCaches(false); // 设置请求方式(GET/POST) httpsUrlConnection.setRequestMethod(requestMethod); //对请求方式进行判断 equalsIgnoreCase不区分大小写 if("GET".equalsIgnoreCase(requestMethod)) { //建立连接 httpsUrlConnection.connect(); } //当有数据需要提交时 if(null != outputStr) { OutputStream os = httpsUrlConnection.getOutputStream(); // 注意编码格式,防止中文乱码 os.write(outputStr.getBytes("UTF-8")); os.close(); } //将返回的输入流转换成字符串 InputStream is = httpsUrlConnection.getInputStream(); InputStreamReader isr = new InputStreamReader(is, "UTF-8"); BufferedReader br = new BufferedReader(isr); String strLine = null; while((strLine = br.readLine()) != null) { sb.append(strLine); } br.close(); isr.close(); //释放资源 is.close(); is = null; } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } }
二、定义各种类型的按钮,把共同的变量抽出来写在一个类中。
在包com.cc.wechat.menu下创建相关的类:
1 ---Button.java:
package com.cc.wechat.menu; /** * 菜单按钮 * @author ICHN */ public class Button { //菜单标题,不超过16个字节,子菜单不超过40个字节 private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
2 ---ClickButton.java:
package com.cc.wechat.menu; /** * click类型按钮 * @author ICHN * */ public class ClickButton extends Button{ //菜单的响应动作类型 private String type; //菜单KEY值,用于消息接口推送,不超过128字节 private String key; public String getType() { return type; } public void setType(String type) { this.type = type; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } }
3 ---ComplexButton.java:
package com.cc.wechat.menu; /** * 二级菜单数组 * 个数应为1~5个 * @author ICHN * */ public class ComplexButton extends Button { //二级菜单数组 private Button[] sub_button; public Button[] getSub_button() { return sub_button; } public void setSub_button(Button[] sub_button) { this.sub_button = sub_button; } }
4 ---Menu.java:
package com.cc.wechat.menu; /** * 菜单 * @author ICHN * */ public class Menu { private Button[] button; public Button[] getButton() { return button; } public void setButton(Button[] button) { this.button = button; } }
5 ---ViewButton.java:
package com.cc.wechat.menu; /** * view类型按钮 * @author ICHN * */ public class ViewButton extends Button { //菜单的响应动作类型 private String type; //网页链接,用户点击菜单可打开链接,不超过256字节 private String url; public String getType() { return type; } public void setType(String type) { this.type = type; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } }
三、新建一个测试的源文件夹test,在里面建一个包com.cc.wechat.test,在此包里写创建菜单的相关类。
写一个获取access_token的类:
---GetAccessToken.java:
package com.cc.wechat.test; import com.cc.wechat.util.CommonUtil; /** * 获取access_token * @author ICHN * 测试账号的appID和appsecret * * access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。 * 开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。 * access_token的有效期目前为2个小时,需定时刷新, * 重复获取将导致上次获取的access_token失效 */ public class GetAccessToken { public static void main(String[] args) { //打印出access_token System.out.println(CommonUtil.httpsRequest( "&secret=此处填写appsecret", "GET", null ) ); } }
2.进行菜单的创建和删除:
---MenuTest.java:
package com.cc.wechat.test; import net.sf.json.JSONObject; import com.cc.wechat.menu.Button; import com.cc.wechat.menu.ClickButton; import com.cc.wechat.menu.ComplexButton; import com.cc.wechat.menu.Menu; import com.cc.wechat.util.CommonUtil; /** * 执行菜单的创建 * @author ICHN * */ public class MenuTest { public static void main(String[] args) { /** * 按钮类型就两种: * click类型 * view类型 */ /** *click类型 * 二级菜单1 * 所包含的二级菜单: * clickButton_11 * ... * 可以定义5个 */ ClickButton clickButton_11 = new ClickButton(); //设置按钮名称 clickButton_11.setName(""); //设置按钮类别 尊照微信开发文档给出的定义 clickButton_11.setType(""); //设置按钮key值 clickButton_11.setKey(""); //.....可以定义5个..... /** * 二级菜单2 * 所包含的二级菜单: * clickButton_21 * ... */ ClickButton clickButton_21 = new ClickButton(); clickButton_21.setName(""); clickButton_21.setType(""); clickButton_21.setKey(""); /** * 定义一个一级菜单数组, * 个数应为1~3个 */ ClickButton button_3 = new ClickButton(); button_3.setName(""); button_3.setType(""); button_3.setKey(""); /** * 上面的二级菜单定义好后, * 用一个带二级菜单的按钮(ComplexButton)装起来 */ //一级菜单1 ComplexButton complexButton1 = new ComplexButton(); complexButton1.setName("一级菜单1"); complexButton1.setSub_button(new Button[] {clickButton_11}); //一级菜单2 ComplexButton complexButton2 = new ComplexButton(); complexButton2.setName(""); complexButton2.setSub_button(new Button[] {clickButton_21}); //一级菜单3定义在上面 //用一个menu(相当于总菜单,在最外层)来把上面的菜单装起来 Menu menu = new Menu(); menu.setButton(new Button[] {complexButton1, complexButton2, button_3}); //把menu转换为json数组 String jsonMenu = JSONObject.fromObject(menu).toString(); /** * 创建和删除都是采用https协议 * http请求方式:POST(请使用https协议) */ //创建菜单接口 //https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN String createRequest = CommonUtil.httpsRequest( //requestUrl "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=此处填写上面GetAccessToken类获取的access_token", //requestMethod "POST", //outputStr jsonMenu ); //打印出创建状态信息(同时执行创建) //System.out.println(createRequest); //删除菜单接口 //https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN String deleteResult = CommonUtil.httpsRequest( "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=此处填写上面GetAccessToken类获取的access_token", "POST", jsonMenu ); //打印出删除状态信息(同时执行删除) System.out.println(deleteResult); } }
Atas ialah kandungan terperinci 微信公众平台开发之自定义菜单的创建和删除的详细介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

PHP ialah bahasa skrip sumber terbuka yang digunakan secara meluas dalam pembangunan web dan pengaturcaraan sisi pelayan, terutamanya dalam pembangunan WeChat. Hari ini, semakin banyak syarikat dan pembangun mula menggunakan PHP untuk pembangunan WeChat kerana ia telah menjadi bahasa pembangunan yang benar-benar mudah dipelajari dan mudah digunakan. Dalam pembangunan WeChat, penyulitan dan penyahsulitan mesej merupakan isu yang sangat penting kerana ia melibatkan keselamatan data. Untuk mesej tanpa kaedah penyulitan dan penyahsulitan, penggodam boleh mendapatkan data dengan mudah, menimbulkan ancaman kepada pengguna.

Dengan populariti WeChat, semakin banyak syarikat mula menggunakannya sebagai alat pemasaran. Fungsi pemesejan kumpulan WeChat ialah salah satu cara penting bagi perusahaan untuk menjalankan pemasaran WeChat. Walau bagaimanapun, jika anda hanya bergantung pada penghantaran manual, ia adalah tugas yang sangat memakan masa dan susah payah untuk pemasar. Oleh itu, adalah amat penting untuk membangunkan alat pemesejan massa WeChat. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan alat penghantaran massa WeChat. 1. Kerja penyediaan Untuk membangunkan alat pemesejan massa WeChat, kita perlu menguasai perkara teknikal berikut: Pengetahuan asas PHP WeChat alat pembangunan platform awam: Sub

Dalam pembangunan akaun awam WeChat, pengurusan tag pengguna ialah fungsi yang sangat penting, yang membolehkan pembangun memahami dan mengurus pengguna mereka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi pengurusan teg pengguna WeChat. 1. Dapatkan openid pengguna WeChat Sebelum menggunakan fungsi pengurusan tag pengguna WeChat, kita perlu mendapatkan openid pengguna terlebih dahulu. Dalam pembangunan akaun awam WeChat, adalah amalan biasa untuk mendapatkan openid melalui kebenaran pengguna. Selepas kebenaran pengguna selesai, kami boleh mendapatkan pengguna melalui kod berikut

Memandangkan WeChat menjadi alat komunikasi yang semakin penting dalam kehidupan orang ramai, fungsi pemesejan tangkasnya digemari oleh sebilangan besar perusahaan dan individu. Bagi perusahaan, membangunkan WeChat menjadi platform pemasaran telah menjadi trend, dan kepentingan pembangunan WeChat secara beransur-ansur menjadi lebih menonjol. Antaranya, fungsi penghantaran kumpulan lebih banyak digunakan Jadi, sebagai pengaturcara PHP, bagaimana untuk melaksanakan rekod penghantaran mesej kumpulan? Berikut akan memberi anda pengenalan ringkas. 1. Memahami pengetahuan pembangunan yang berkaitan dengan akaun awam WeChat Sebelum memahami cara melaksanakan rekod penghantaran mesej kumpulan, I

Dalam pembangunan akaun awam WeChat, fungsi pengundian sering digunakan. Fungsi undian ialah cara yang bagus untuk pengguna mengambil bahagian dalam interaksi dengan pantas, dan ia juga merupakan alat penting untuk mengadakan acara dan meninjau pendapat. Artikel ini akan memperkenalkan anda cara menggunakan PHP untuk melaksanakan fungsi undian WeChat. Dapatkan kebenaran akaun rasmi WeChat Pertama, anda perlu mendapatkan kebenaran akaun rasmi WeChat. Pada platform awam WeChat, anda perlu mengkonfigurasi alamat API akaun awam WeChat, akaun rasmi dan token yang sepadan dengan akaun awam. Dalam proses pembangunan kami menggunakan bahasa PHP, kami perlu menggunakan PH yang disediakan secara rasmi oleh WeChat

WeChat kini merupakan salah satu platform sosial dengan pangkalan pengguna terbesar di dunia Dengan populariti Internet mudah alih, semakin banyak syarikat mula menyedari kepentingan pemasaran WeChat. Apabila menjalankan pemasaran WeChat, perkhidmatan pelanggan adalah bahagian yang penting. Untuk mengurus tetingkap sembang perkhidmatan pelanggan dengan lebih baik, kami boleh menggunakan bahasa PHP untuk pembangunan WeChat. 1. Pengenalan kepada pembangunan PHP WeChat PHP ialah bahasa skrip bahagian pelayan sumber terbuka yang digunakan secara meluas dalam bidang pembangunan Web. Digabungkan dengan antara muka pembangunan yang disediakan oleh platform awam WeChat, kami boleh menggunakan bahasa PHP untuk menjalankan WeChat

Cara menggunakan PHP untuk membangunkan akaun awam WeChat Akaun awam WeChat telah menjadi saluran penting untuk promosi dan interaksi bagi banyak syarikat, dan PHP, sebagai bahasa Web yang biasa digunakan, juga boleh digunakan untuk membangunkan akaun awam WeChat. Artikel ini akan memperkenalkan langkah khusus untuk menggunakan PHP untuk membangunkan akaun awam WeChat. Langkah 1: Dapatkan akaun pembangun akaun rasmi WeChat Sebelum memulakan pembangunan akaun rasmi WeChat, anda perlu memohon akaun pembangun akaun rasmi WeChat. Untuk proses pendaftaran khusus, sila rujuk laman web rasmi platform awam WeChat

Dengan pembangunan Internet dan peranti pintar mudah alih, WeChat telah menjadi bahagian yang amat diperlukan dalam bidang sosial dan pemasaran. Dalam era yang semakin digital ini, cara menggunakan PHP untuk pembangunan WeChat telah menjadi tumpuan ramai pembangun. Artikel ini terutamanya memperkenalkan mata pengetahuan yang berkaitan tentang cara menggunakan PHP untuk pembangunan WeChat, serta beberapa petua dan langkah berjaga-jaga. 1. Persediaan persekitaran pembangunan Sebelum membangunkan WeChat, anda perlu menyediakan persekitaran pembangunan yang sepadan terlebih dahulu. Secara khusus, anda perlu memasang persekitaran operasi PHP dan platform awam WeChat
