위챗 공중번호 테스트 계정 사용자 정의 메뉴의 실례 코드

사용자 정의 메뉴 인터페이스는 다음과 같은 다양한 유형의 단추를 사용할 수 있습니다.
1,click:클릭 이벤트
사용자가 클릭 형식 단추를 누르면 위챗 서버는 메시지 인터페이스를 통해 메시지 형식이 이벤트인 구조를 개발자에게 전송하고 (메시지 인터페이스 안내서 참조) 단추에 개발자가 작성한 키 값을 가지고 개발자는 사용자 정의 키 값을 통해 사용자와 상호작용을 할 수 있다.
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의 모든 이벤트는 위챗 iPhone 5.4.1 이상 버전과 Android 5.4 이상 버전의 위챗 사용자만 지원합니다. 이전 버전의 위챗 사용자는 클릭 후 응답이 없고 개발자도 이벤트 전송을 정상적으로 받을 수 없습니다.9와 10은 제3자 플랫폼 산하에 위챗 인증(구체적으로 말하면 자질 인증이 통과되지 않은 것)을 하지 않은 구독 번호에 대한 이벤트 유형으로 이벤트가 전송되지 않고 능력이 상대적으로 제한되며 다른 유형의 공중 번호는 사용할 필요가 없다.
인터페이스 호출 요청 설명
http 요청 방식: POST(https 프로토콜 사용)https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
클릭과view의 요청 예시

{ 
“button”:[ 
{ 
“type”:”click”, 
“name”:” ”, 
“key”:”V1001_TODAY_MUSIC” 
}, 
{ 
“name”:” ”, 
“sub_button”:[ 
{ 
“type”:”view”, 
“name”:” ”, 
“url”:”http://www.soso.com/” 
}, 
{ 
“type”:”view”, 
“name”:” ”, 
“url”:”http://v.qq.com/” 
}, 
{ 
“type”:”click”, 
“name”:” ”, 
“key”:”V1001_GOOD” 
}] 
}] 
}
추가 버튼 유형에 대한 요청 예제

{ 
“button”: [ 
{ 
“name”: “ ”, 
“sub_button”: [ 
{ 
“type”: “scancode_waitmsg”, 
“name”: “ ”, 
“key”: “rselfmenu_0_0”, 
“sub_button”: [ ] 
}, 
{ 
“type”: “scancode_push”, 
“name”: “ ”, 
“key”: “rselfmenu_0_1”, 
“sub_button”: [ ] 
} 
] 
}, 
{ 
“name”: “ ”, 
“sub_button”: [ 
{ 
“type”: “pic_sysphoto”, 
“name”: “ ”, 
“key”: “rselfmenu_1_0”, 
“sub_button”: [ ] 
}, 
{ 
“type”: “pic_photo_or_album”, 
“name”: “ ”, 
“key”: “rselfmenu_1_1”, 
“sub_button”: [ ] 
}, 
{ 
“type”: “pic_weixin”, 
“name”: “ ”, 
“key”: “rselfmenu_1_2”, 
“sub_button”: [ ] 
} 
] 
}, 
{ 
“name”: “ ”, 
“type”: “location_select”, 
“key”: “rselfmenu_2_0” 
}, 
{ 
“type”: “media_id”, 
“name”: “ ”, 
“media_id”: “MEDIA_ID1” 
}, 
{ 
“type”: “view_limited”, 
“name”: “ ”, 
“media_id”: “MEDIA_ID2” 
} 
] 
}
매개변수 설명
매개변수를 설명해야 하는지 여부
button은 1급 메뉴 그룹입니다. 개수는 1~3개여야 합니다.
sub_button 아니오 2급 메뉴 그룹, 개수는 1~5개
type은 메뉴의 응답 동작 형식입니다.
name 은 메뉴 제목 입니다. 16 바이트 를 넘지 않고, 하위 메뉴 는 40 바이트 를 넘지 않습니다.
키 클릭 등 클릭 유형 필수 메뉴 KEY 값, 메시지 인터페이스 전송에 사용, 128바이트를 초과하지 않음
urlview 형식은 웹 링크가 필요합니다. 사용자가 메뉴를 클릭하면 1024 바이트를 넘지 않고 링크를 열 수 있습니다.
media_id media_id 유형 및view_limited 형식은 영구 소재 인터페이스가 추가된 합법적인 미디어를 호출해야 합니다_id
결과 반환
올바른 경우 JSON 패킷으로 돌아갑니다.

{“errcode”:0,”errmsg”:”ok”}
오류가 발생했을 때 반환되는 JSON 패키지는 다음과 같습니다(예: 잘못된 메뉴 이름 길이).

{“errcode”:40018,”errmsg”:”invalid button name size”}
아래의 bean은 json 형식에 따라 조립하여 만들어진다...

package org.ssm.maven.test1.menu;
public class Button {
  private String type;
  private String name;
  private Button[] sub_button;
  public String getType() {
    return type;
  }
  public void setType(String type) {
    this.type = type;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public Button[] getSub_button() {
    return sub_button;
  }
  public void setSub_button(Button[] sub_button) {
    this.sub_button = sub_button;
  }
}

package org.ssm.maven.test1.menu;
public class ClickButton extends Button {
  private String key;
  public String getKey() {
    return key;
  }
  public void setKey(String key) {
    this.key = key;
  }
}
package org.ssm.maven.test1.menu;
public class ViewButton extends Button {
  private String url;
  public String getUrl() {
    return url;
  }
  public void setUrl(String url) {
    this.url = url;
  }
}
메뉴에 따라

package org.ssm.maven.test1.menu;
public class Menu {
  private Button[] button;
  public Button[] getButton() {
    return button;
  }
  public void setButton(Button[] button) {
    this.button = button;
  }
}
초기화 메뉴

public static Menu initMenu(){
    Menu menu = new Menu();
    ClickButton clickButton = new ClickButton();
    clickButton.setKey("clickButton");
    clickButton.setType("click");
    clickButton.setName("clickMenu");
    ViewButton viewButton = new ViewButton();
    viewButton.setName("viewButton");
    viewButton.setType("view");
    viewButton.setUrl("http://www.baidu.com");
    ClickButton clickButton1 = new ClickButton();
    clickButton1.setKey("scanButton");
    clickButton1.setType("scancode_push");
    clickButton1.setName("scanButton");
    ClickButton clickButton2 = new ClickButton();
    clickButton2.setKey("locationButton");
    clickButton2.setType("location_select");
    clickButton2.setName("locationButton");
    Button button = new Button();
    button.setName("Menu");
    button.setSub_button(new Button[]{clickButton1,clickButton2});
    menu.setButton(new Button[]{clickButton,viewButton,button});
    return menu;
  }
  // url 
  public static int createMenu(String menu, String token){
    String url = CREATE_MENU_URL.replace("ACCESS_TOKEN", token);
    int result = 0;
    JSONObject jsonObject = doPostStr(url, menu);
    if(jsonObject != null){
      result = jsonObject.getInt("errcode");
    }
    return result;
  }
  // url 
  public static JSONObject queryMenu(String token){
    String url = QUERY_MENU_URL.replace("ACCESS_TOKEN", token);
    JSONObject jsonObject = doGetUrl(url);
    return jsonObject;
  }

package org.ssm.maven.test1;
import java.sql.Timestamp;
import org.ssm.maven.test1.model.AccessToken;
import org.ssm.maven.test1.util.WechatUtil;
import org.ssm.maven.trans.util.TransUtil;
import net.sf.json.JSONObject;
public class WechatUtilTest {
  public static void main(String[] args) {
    AccessToken accessToken = WechatUtil.getAccessToken();
    System.out.println("accessToken=>" + accessToken.getToken());
    System.out.println("expiresIn=>" + accessToken.getExpiresIn());
    JSONObject fromObject = JSONObject.fromObject(WechatUtil.initMenu());
    int result = WechatUtil.createMenu(fromObject.toString(), accessToken.getToken());
    if (result == 0) {
      System.out.println("create menu success");
    } else {
      System.out.println("error code : " + result);
    }
  }
}
위에서 말한 것은 여러분께 소개해 드린 위챗 공중번호 테스트 계정의 사용자 정의 메뉴의 실례 코드입니다. 여러분께 도움이 되었으면 합니다. 만약에 궁금한 것이 있으면 저에게 메시지를 남겨 주십시오. 편집자는 제때에 여러분에게 답장할 것입니다.여기에서도 저희 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기