WeChat 공개 플랫폼 개발 시 사용자 정의 메뉴 생성 및 삭제에 대한 자세한 소개
메뉴 생성 시 JSON 기반으로 데이터가 전송되므로 해당 패키지를 다운로드하세요.
공개 플랫폼 개발 문서에 지침이 있습니다.
참고하세요. :
1. 사용자 정의 메뉴에는 1차 메뉴가 최대 3개까지 포함될 수 있으며, 각 1차 메뉴에는 2차 메뉴가 최대 5개까지 포함될 수 있습니다.
2. 1단계 메뉴에는 최대 4개의 한자가 포함될 수 있으며, 2단계 메뉴에는 최대 7개의 한자가 포함될 수 있습니다.
3. 사용자 정의 메뉴를 생성한 후 WeChat 클라이언트 캐싱으로 인해 표시되기까지 24시간이 소요됩니다. 테스트할 때 공개 계정을 언팔로우했다가 다시 팔로우를 시도해보면 생성 후 효과를 확인할 수 있습니다.
사용자 정의 메뉴 인터페이스는 다음과 같이 여러 유형의 버튼을 구현할 수 있습니다.
1. 클릭: 클릭 푸시 이벤트 사용자가 클릭 유형 버튼을 클릭하면 WeChat 서버가 푸시됩니다. 메시지 인터페이스를 통한 메시지 이벤트
유형의 구조가 개발자에게 제공되며(메시지 인터페이스 가이드 참조), 개발자는 버튼에 키 값을 입력하여 사용자와 상호 작용할 수 있습니다. of
; 2. 보기: 점프 URL 사용자가 보기 유형 버튼을 클릭하면 WeChat 클라이언트는 개발자가
버튼에 입력한 웹페이지 URL과 결합될 수 있습니다. 사용자의 기본 정보를 얻기 위한 웹 페이지 인증 인터페이스.
3. scancode_push: 사용자가 스캔 코드 푸시 이벤트에서 버튼을 클릭하면 WeChat 클라이언트가 스캔 코드 작업을 완료한 후 스캔 결과가 표시됩니다
URL을 입력하면 해당 URL이 입력됩니다. QR 코드 스캔 결과는 메시지를 보낼 수 있는 개발자에게 전송됩니다.
4. scancode_waitmsg: 코드를 스캔하여 이벤트를 푸시하고 "메시지 수신" 프롬프트 상자를 표시합니다. 사용자가 버튼을 클릭하면 WeChat 클라이언트가 코드 스캔 작업 후
스캔 도구를 호출합니다. 완료되면 스캔 코드 결과가 표시됩니다. 개발자에게 전달하고 동시에 스캔 도구를 치우면 "메시지
수신" 프롬프트 상자가 팝업되고 메시지를 받을 수 있습니다. 개발자의 메시지.
5. pic_sysphoto: 사진을 찍고 사진을 보내는 시스템이 나타난 후, 사용자가 버튼을 클릭하면 WeChat 클라이언트가 사진 작업을 완료한 후 촬영한 사진을 보냅니다. 개발자에게 이벤트를 푸시하고 동시에 시스템 카메라를 치워두면 개발자로부터 메시지를 받을 수 있습니다
.
6. pic_photo_or_album: 사용자가 사진을 찍거나 사진을 앨범으로 보내기 위해 버튼을 클릭하면 WeChat 클라이언트는 사용자가 "사진 찍기" 또는 "다음에서 선택"을 선택할 수 있는 선택기를 팝업으로 표시합니다. 휴대폰 앨범". 사용자가 선택한 후에는 다른 두 가지 프로세스를 거치게 됩니다.
7. pic_weixin: WeChat 사진 앨범 발신자가 팝업되고 사용자가 버튼을 클릭하면 WeChat 클라이언트가 선택 작업을 완료한 후
선택한 사진이 다음으로 전송됩니다. 개발자 서버와 이벤트가 개발자에게 푸시되며, 동시에 사진 앨범을 닫으면 나중에
보낸 사람으로부터 메시지를 받을 수 있습니다.
8. location_select: 사용자가 팝업 지리적 위치 선택기 버튼을 클릭하면 WeChat 클라이언트가 위치
위치 선택 도구를 호출합니다. 선택 작업이 완료되면 선택한 지리적 위치가 전송됩니다. 동시에 위치를 숨기고
도구를 선택하면 개발자로부터 메시지를 받을 수 있습니다.
9. media_id: 사용자가
media_id 유형 버튼을 클릭하여 메시지(문자 메시지 제외)를 전송하면 WeChat 서버는 개발자가 입력한 영구 자료 ID에 해당하는 자료를 사용자에게 전달합니다. 영구 자료 유형
유형은 사진, 오디오, 비디오, 그래픽 메시지가 될 수 있습니다. 참고: 영구 자료 ID는 "재료 관리/영구 자료 추가"
인터페이스를 통해 업로드한 후 얻은 법적 ID여야 합니다. 10. view_limited: 사용자가 view_limited 유형 버튼을 클릭하면
WeChat 클라이언트는 개발자가 버튼에 입력한 영구 자료 ID에 해당하는 이미지 및 문자 메시지 URL을 엽니다. . 영구 소재 유형은 이미지와 텍스트
메시지만 지원합니다. 참고: 영구 자료 ID는 "재료 관리/영구 자료 추가" 인터페이스를 통해 업로드한 후 얻은 법적 ID여야 합니다.
3~8까지의 모든 이벤트는 위챗 아이폰 5.4.1 이상, 안드로이드 5.4 이상 위챗 이용자만 지원하므로, 이전 버전의 위챗 클릭 시 응답이 없으므로 주의하시기 바랍니다. 개발자 이벤트 푸시가 정상적으로 수신되지 않습니다. 9번과 10번은 위챗 인증을 받지 못한 제3자 플랫폼의 구독 계정(구체적으로 자격 인증을 통과하지 못한 계정)을 위해 특별히 준비한 이벤트 유형으로, 이벤트 푸시 기능이 없고 기능이 상대적으로 제한되어 있습니다. 다른 유형의 공개 계정을 사용할 필요가 없습니다.
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(); } }
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; } }
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; } }
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; } }
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; } }
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; } }
---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 ) ); } }
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); } }
위 내용은 WeChat 공개 플랫폼 개발 시 사용자 정의 메뉴 생성 및 삭제에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP는 웹 개발 및 서버 측 프로그래밍, 특히 WeChat 개발에 널리 사용되는 오픈 소스 스크립팅 언어입니다. 오늘날 점점 더 많은 회사와 개발자가 WeChat 개발에 PHP를 사용하기 시작하고 있습니다. PHP는 배우기 쉽고 사용하기 쉬운 개발 언어이기 때문입니다. WeChat 개발에서 메시지 암호화 및 복호화는 데이터 보안과 관련되어 있기 때문에 매우 중요한 문제입니다. 암호화 및 복호화 방법이 없는 메시지의 경우 해커가 쉽게 데이터를 획득할 수 있어 사용자에게 위협이 될 수 있습니다.

WeChat의 인기로 인해 점점 더 많은 기업이 WeChat을 마케팅 도구로 사용하기 시작했습니다. WeChat 그룹 메시징 기능은 기업이 WeChat 마케팅을 수행하는 중요한 수단 중 하나입니다. 그러나 수동 전송에만 의존한다면 마케팅 담당자에게는 매우 시간이 많이 걸리고 힘든 작업입니다. 따라서 WeChat 대량 메시징 도구를 개발하는 것이 특히 중요합니다. 이 기사에서는 PHP를 사용하여 WeChat 대량 메시징 도구를 개발하는 방법을 소개합니다. 1. 준비 작업 WeChat 대량 메시징 도구를 개발하려면 다음 기술 사항을 숙지해야 합니다. PHP WeChat 공개 플랫폼 개발에 대한 기본 지식 개발 도구: Sub

WeChat 공개 계정 개발에서 사용자 태그 관리는 개발자가 사용자를 더 잘 이해하고 관리할 수 있도록 하는 매우 중요한 기능입니다. 이 기사에서는 PHP를 사용하여 WeChat 사용자 태그 관리 기능을 구현하는 방법을 소개합니다. 1. WeChat 사용자의 openid를 획득합니다. WeChat 사용자 태그 관리 기능을 사용하기 전에 먼저 사용자의 openid를 획득해야 합니다. WeChat 공개 계정을 개발할 때 사용자 인증을 통해 openid를 얻는 것이 일반적인 관행입니다. 사용자 인증이 완료되면 다음 코드를 통해 사용자를 얻을 수 있습니다.

WeChat이 사람들의 삶에서 점점 더 중요한 커뮤니케이션 도구가 되면서, WeChat의 민첩한 메시징 기능은 많은 기업과 개인의 선호를 빠르게 받고 있습니다. 기업의 경우 WeChat을 마케팅 플랫폼으로 개발하는 것이 하나의 추세가 되었으며 WeChat 개발의 중요성은 점차 더욱 부각되고 있습니다. 그 중 그룹 전송 기능이 더욱 널리 사용됩니다. 그렇다면 PHP 프로그래머로서 그룹 메시지 전송 기록을 어떻게 구현해야 할까요? 다음은 간략한 소개입니다. 1. WeChat 공개 계정과 관련된 개발 지식을 이해합니다. 그룹 메시지 전송 기록을 구현하는 방법을 이해합니다.

WeChat 공개 계정을 개발할 때 투표 기능이 자주 사용됩니다. 투표 기능은 사용자들이 상호 작용에 빠르게 참여할 수 있는 좋은 방법이며, 이벤트 개최 및 의견 조사를 위한 중요한 도구이기도 합니다. 이 기사에서는 PHP를 사용하여 WeChat 투표 기능을 구현하는 방법을 소개합니다. WeChat 공식 계정 승인을 받으려면 먼저 WeChat 공식 계정 승인을 받아야 합니다. WeChat 공개 플랫폼에서는 WeChat 공개 계정, 공식 계정 및 공개 계정에 해당하는 토큰의 API 주소를 구성해야 합니다. PHP 언어를 사용하여 개발하는 과정에서 WeChat에서 공식적으로 제공하는 PH를 사용해야 합니다.

WeChat은 현재 세계에서 가장 큰 사용자 기반을 보유한 소셜 플랫폼 중 하나입니다. 모바일 인터넷의 인기로 인해 점점 더 많은 기업들이 WeChat 마케팅의 중요성을 깨닫기 시작했습니다. WeChat 마케팅을 수행할 때 고객 서비스는 중요한 부분입니다. 고객 서비스 채팅 창을 더 잘 관리하기 위해 WeChat 개발에 PHP 언어를 사용할 수 있습니다. 1. PHP 소개 WeChat 개발 PHP는 웹 개발 분야에서 널리 사용되는 오픈 소스 서버 측 스크립팅 언어입니다. WeChat 공개 플랫폼에서 제공하는 개발 인터페이스와 결합하여 PHP 언어를 사용하여 WeChat을 수행할 수 있습니다.

PHP를 사용하여 WeChat 공개 계정을 개발하는 방법 WeChat 공개 계정은 많은 회사의 홍보 및 상호 작용을 위한 중요한 채널이 되었으며, 일반적으로 사용되는 웹 언어인 PHP를 사용하여 WeChat 공개 계정을 개발할 수도 있습니다. 이 기사에서는 PHP를 사용하여 WeChat 공개 계정을 개발하는 구체적인 단계를 소개합니다. 1단계: WeChat 공식 계정의 개발자 계정을 얻습니다. WeChat 공식 계정 개발을 시작하기 전에 WeChat 공식 계정의 개발자 계정을 신청해야 합니다. 구체적인 등록 절차는 WeChat 공개 플랫폼 공식 웹사이트를 참조하세요.

인터넷과 모바일 스마트 기기의 발전으로 WeChat은 소셜 및 마케팅 분야에서 없어서는 안될 부분이 되었습니다. 점점 더 디지털화되는 시대에 WeChat 개발에 PHP를 사용하는 방법은 많은 개발자의 초점이 되었습니다. 이 기사에서는 주로 WeChat 개발에 PHP를 사용하는 방법에 대한 관련 지식 포인트와 일부 팁 및 주의 사항을 소개합니다. 1. 개발 환경 준비 WeChat을 개발하기 전에 먼저 해당 개발 환경을 준비해야 합니다. 특히, PHP 운영 환경과 WeChat 공개 플랫폼을 설치해야 합니다.
