最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信公眾號(hào)測(cè)試賬號(hào)自定義菜單的實(shí)例代碼

 更新時(shí)間:2017年02月08日 11:29:33   作者:nyoj_lvy  
這篇文章主要介紹了微信公眾號(hào)測(cè)試賬號(hào)自定義菜單的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

自定義菜單接口可實(shí)現(xiàn)多種類型按鈕,如下:

1、click:點(diǎn)擊推事件

用戶點(diǎn)擊click類型按鈕后,微信服務(wù)器會(huì)通過消息接口推送消息類型為event 的結(jié)構(gòu)給開發(fā)者(參考消息接口指南),并且?guī)习粹o中開發(fā)者填寫的key值,開發(fā)者可以通過自定義的key值與用戶進(jìn)行交互;

2、view:跳轉(zhuǎn)URL

用戶點(diǎn)擊view類型按鈕后,微信客戶端將會(huì)打開開發(fā)者在按鈕中填寫的網(wǎng)頁(yè)URL,可與網(wǎng)頁(yè)授權(quán)獲取用戶基本信息接口結(jié)合,獲得用戶基本信息。

3、scancode_push:掃碼推事件

用戶點(diǎn)擊按鈕后,微信客戶端將調(diào)起掃一掃工具,完成掃碼操作后顯示掃描結(jié)果(如果是URL,將進(jìn)入U(xiǎn)RL),且會(huì)將掃碼的結(jié)果傳給開發(fā)者,開發(fā)者可以下發(fā)消息。

4、scancode_waitmsg:掃碼推事件且彈出“消息接收中”提示框

用戶點(diǎn)擊按鈕后,微信客戶端將調(diào)起掃一掃工具,完成掃碼操作后,將掃碼的結(jié)果傳給開發(fā)者,同時(shí)收起掃一掃工具,然后彈出“消息接收中”提示框,隨后可能會(huì)收到開發(fā)者下發(fā)的消息。

5、pic_sysphoto:彈出系統(tǒng)拍照發(fā)圖

用戶點(diǎn)擊按鈕后,微信客戶端將調(diào)起系統(tǒng)相機(jī),完成拍照操作后,會(huì)將拍攝的相片發(fā)送給開發(fā)者,并推送事件給開發(fā)者,同時(shí)收起系統(tǒng)相機(jī),隨后可能會(huì)收到開發(fā)者下發(fā)的消息。

6、pic_photo_or_album:彈出拍照或者相冊(cè)發(fā)圖

用戶點(diǎn)擊按鈕后,微信客戶端將彈出選擇器供用戶選擇“拍照”或者“從手機(jī)相冊(cè)選擇”。用戶選擇后即走其他兩種流程。

7、pic_weixin:彈出微信相冊(cè)發(fā)圖器

用戶點(diǎn)擊按鈕后,微信客戶端將調(diào)起微信相冊(cè),完成選擇操作后,將選擇的相片發(fā)送給開發(fā)者的服務(wù)器,并推送事件給開發(fā)者,同時(shí)收起相冊(cè),隨后可能會(huì)收到開發(fā)者下發(fā)的消息。

8、location_select:彈出地理位置選擇器

用戶點(diǎn)擊按鈕后,微信客戶端將調(diào)起地理位置選擇工具,完成選擇操作后,將選擇的地理位置發(fā)送給開發(fā)者的服務(wù)器,同時(shí)收起位置選擇工具,隨后可能會(huì)收到開發(fā)者下發(fā)的消息。

9、media_id:下發(fā)消息(除文本消息)

用戶點(diǎn)擊media_id類型按鈕后,微信服務(wù)器會(huì)將開發(fā)者填寫的永久素材id對(duì)應(yīng)的素材下發(fā)給用戶,永久素材類型可以是圖片、音頻、視頻、圖文消息。請(qǐng)注意:永久素材id必須是在“素材管理/新增永久素材”接口上傳后獲得的合法id。

10、view_limited:跳轉(zhuǎn)圖文消息URL

用戶點(diǎn)擊view_limited類型按鈕后,微信客戶端將打開開發(fā)者在按鈕中填寫的永久素材id對(duì)應(yīng)的圖文消息URL,永久素材類型只支持圖文消息。請(qǐng)注意:永久素材id必須是在“素材管理/新增永久素材”接口上傳后獲得的合法id。

請(qǐng)注意,3到8的所有事件,僅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用戶,舊版本微信用戶點(diǎn)擊后將沒有回應(yīng),開發(fā)者也不能正常接收到事件推送。9和10,是專門給第三方平臺(tái)旗下未微信認(rèn)證(具體而言,是資質(zhì)認(rèn)證未通過)的訂閱號(hào)準(zhǔn)備的事件類型,它們是沒有事件推送的,能力相對(duì)受限,其他類型的公眾號(hào)不必使用。

接口調(diào)用請(qǐng)求說明

http請(qǐng)求方式:POST(請(qǐng)使用https協(xié)議) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

click和view的請(qǐng)求示例

{ 
“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” 
}] 
}] 
}

其他新增按鈕類型的請(qǐng)求示例

{ 
“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”: “發(fā)圖”, 
“sub_button”: [ 
{ 
“type”: “pic_sysphoto”, 
“name”: “系統(tǒng)拍照發(fā)圖”, 
“key”: “rselfmenu_1_0”, 
“sub_button”: [ ] 
}, 
{ 
“type”: “pic_photo_or_album”, 
“name”: “拍照或者相冊(cè)發(fā)圖”, 
“key”: “rselfmenu_1_1”, 
“sub_button”: [ ] 
}, 
{ 
“type”: “pic_weixin”, 
“name”: “微信相冊(cè)發(fā)圖”, 
“key”: “rselfmenu_1_2”, 
“sub_button”: [ ] 
} 
] 
}, 
{ 
“name”: “發(fā)送位置”, 
“type”: “l(fā)ocation_select”, 
“key”: “rselfmenu_2_0” 
}, 
{ 
“type”: “media_id”, 
“name”: “圖片”, 
“media_id”: “MEDIA_ID1” 
}, 
{ 
“type”: “view_limited”, 
“name”: “圖文消息”, 
“media_id”: “MEDIA_ID2” 
} 
] 
}

參數(shù)說明

參數(shù) 是否必須 說明

button 是 一級(jí)菜單數(shù)組,個(gè)數(shù)應(yīng)為1~3個(gè)

sub_button 否 二級(jí)菜單數(shù)組,個(gè)數(shù)應(yīng)為1~5個(gè)

type 是 菜單的響應(yīng)動(dòng)作類型

name 是 菜單標(biāo)題,不超過16個(gè)字節(jié),子菜單不超過40個(gè)字節(jié)

key click等點(diǎn)擊類型必須 菜單KEY值,用于消息接口推送,不超過128字節(jié)

url view類型必須 網(wǎng)頁(yè)鏈接,用戶點(diǎn)擊菜單可打開鏈接,不超過1024字節(jié)

media_id media_id類型和view_limited類型必須 調(diào)用新增永久素材接口返回的合法media_id

返回結(jié)果

正確時(shí)的返回JSON數(shù)據(jù)包如下:

{“errcode”:0,”errmsg”:”ok”}

錯(cuò)誤時(shí)的返回JSON數(shù)據(jù)包如下(示例為無(wú)效菜單名長(zhǎng)度):

{“errcode”:40018,”errmsg”:”invalid button name size”}

以下的bean根據(jù)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;
  }
}

根據(jù)菜單

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;
  }
  //創(chuàng)建菜單的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);
    }
  }
}

以上所述是小編給大家介紹的微信公眾號(hào)測(cè)試賬號(hào)自定義菜單的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java解析照片拿到GPS位置數(shù)據(jù)的詳細(xì)步驟

    Java解析照片拿到GPS位置數(shù)據(jù)的詳細(xì)步驟

    這篇文章主要介紹了Java解析照片拿到GPS位置數(shù)據(jù),本文給大家介紹代碼環(huán)境及核心代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java之Arrays的各種功能和用法總結(jié)

    Java之Arrays的各種功能和用法總結(jié)

    數(shù)組在?Java?中是一種常用的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)和操作大量數(shù)據(jù)。Arrays?是我們?cè)谔幚頂?shù)組時(shí)的一把利器。它提供了豐富的方法和功能,使得數(shù)組操作變得更加簡(jiǎn)單、高效和可靠。接下來我們一起看看?Arrays?的各種功能和用法,,需要的朋友可以參考下
    2023-05-05
  • java?freemarker實(shí)現(xiàn)動(dòng)態(tài)生成excel文件

    java?freemarker實(shí)現(xiàn)動(dòng)態(tài)生成excel文件

    這篇文章主要為大家詳細(xì)介紹了java如何通過freemarker實(shí)現(xiàn)動(dòng)態(tài)生成excel文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • Java對(duì)比兩個(gè)實(shí)體的差異分析

    Java對(duì)比兩個(gè)實(shí)體的差異分析

    這篇文章主要介紹了Java對(duì)比兩個(gè)實(shí)體的差異分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot中調(diào)用通用URL的實(shí)現(xiàn)

    SpringBoot中調(diào)用通用URL的實(shí)現(xiàn)

    在 Spring Boot 應(yīng)用程序中,有時(shí)候我們需要調(diào)用一些通用的 URL 接口,本文主要介紹了SpringBoot中調(diào)用通用URL的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • java圖像識(shí)別工具類(ImageRecognitionUtils)使用實(shí)例詳解

    java圖像識(shí)別工具類(ImageRecognitionUtils)使用實(shí)例詳解

    這篇文章主要介紹了如何在Java中使用OpenCV進(jìn)行圖像識(shí)別,包括圖像加載、預(yù)處理、分類、人臉檢測(cè)和特征提取等步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • java 多線程的幾種實(shí)現(xiàn)方法總結(jié)

    java 多線程的幾種實(shí)現(xiàn)方法總結(jié)

    這篇文章主要介紹了java 多線程的幾種實(shí)現(xiàn)方法總結(jié)的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握java多線程的知識(shí),需要的朋友可以參考下
    2017-10-10
  • Java實(shí)現(xiàn)三子棋小游戲

    Java實(shí)現(xiàn)三子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)三子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java基于Tcp協(xié)議的socket編程實(shí)例

    Java基于Tcp協(xié)議的socket編程實(shí)例

    這篇文章主要介紹了Java基于Tcp協(xié)議的socket編程實(shí)例,較為詳細(xì)的分析了socket編程客戶端與服務(wù)器端的具體實(shí)現(xiàn)步驟與使用技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • springmvc請(qǐng)求轉(zhuǎn)發(fā)和重定向問題(攜帶參數(shù)和不攜帶參數(shù))

    springmvc請(qǐng)求轉(zhuǎn)發(fā)和重定向問題(攜帶參數(shù)和不攜帶參數(shù))

    這篇文章主要介紹了springmvc請(qǐng)求轉(zhuǎn)發(fā)和重定向問題(攜帶參數(shù)和不攜帶參數(shù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評(píng)論

江孜县| 平远县| 颍上县| 凤山市| 尤溪县| 舞阳县| 常宁市| 巴里| 贵定县| 吉隆县| 定安县| 洪湖市| 青阳县| 嘉义县| 若尔盖县| 梁平县| 句容市| 青州市| 吐鲁番市| 旬阳县| 武夷山市| 黔西| 蒲江县| 衡东县| 白银市| 庆阳市| 锦州市| 上林县| 徐闻县| 沭阳县| 田林县| 秦安县| 互助| 五台县| 兰溪市| 沾化县| 陆良县| 托克托县| 瑞昌市| 九江县| 怀化市|