這篇文章給大家分享的是有關(guān)微信公眾號開發(fā)中如何設(shè)置自定義菜單的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括宣城網(wǎng)站建設(shè)、宣城網(wǎng)站制作、宣城網(wǎng)頁制作以及宣城網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,宣城網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到宣城省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!1、首先我們需要新建一個數(shù)據(jù)庫表用于存放menu菜單項(xiàng)
可包含的字段有id、父類id、name、排序、是否顯示、類型(view、click)、鏈接、adddate
注意后臺存menu菜單數(shù)據(jù)時,parentId=-1為一級菜單,或parendId為一級菜單的id作為該一級菜單下的二級菜單
2、在設(shè)置菜單時需要向微信接口傳menuJson字符串,所以要先拼接字符串,后臺定義一個creatMenu()
public bool creatMenu() { string menuJson = ""; //這里默認(rèn)parentId=-1為最外層菜單,isactive=1為顯示,responseType=1為click類型 DataTable dtAMenu = Service.SelectDataTable("id, name, responseType, jsonStr,url", "WEIXINMENU", " parentId=-1 and isactive=1 order by sort"); if (dtAMenu.Rows.Count > 0) { menuJson = "{\"button\":["; for (int i = 0; i < dtAMenu.Rows.Count; i++) { DataTable dtBMenu = Service.SelectDataTable("id, name, responseType, jsonStr,url", wx, " parentId=" + dtAMenu.Rows[i]["id"].ToString() + " and isactive=1 order by sort"); if (dtBMenu.Rows.Count > 0) { menuJson += "{\"name\":\"" + dtAMenu.Rows[i]["name"].ToString() + "\",\"sub_button\":["; for (int j = 0; j < dtBMenu.Rows.Count; j++) { if (Convert.ToInt32(dtBMenu.Rows[j]["responseType"]) == 2) { menuJson += "{\"type\":\"view\",\"name\":\"" + dtBMenu.Rows[j]["name"].ToString() + "\",\"url\":\"" + dtBMenu.Rows[j]["jsonStr"].ToString() + "\"},"; } else { menuJson += "{\"type\":\"click\",\"name\":\"" + dtBMenu.Rows[j]["name"].ToString() + "\",\"key\":\"eventKey_" + dtBMenu.Rows[j]["id"].ToString() + "\"},"; } } menuJson = menuJson.TrimEnd(','); menuJson += "]},"; } else { //if (Convert.ToInt32(dtAMenu.Rows[i]["responseType"]) == 2) //{ menuJson += "{\"type\":\"view\",\"name\":\"" + dtAMenu.Rows[i]["name"].ToString() + "\",\"url\":\"" + dtAMenu.Rows[i]["jsonStr"].ToString() + "\"},"; //} //else //{ // menuJson += "{\"type\":\"click\",\"name\":\"" + dtAMenu.Rows[i]["name"].ToString() + "\",\"key\":\"eventKey_" + dtAMenu.Rows[i]["id"].ToString() + "\"},"; //} } dtBMenu.Dispose(); } dtAMenu.Dispose(); menuJson = menuJson.TrimEnd(','); menuJson += "]}"; menuJson = menuJson.Trim(); return requstZmToCreatMent(menuJson); } else { return false; } }
3、獲取到menujson字符串后調(diào)用微信接口創(chuàng)建菜單,需先獲取assess token,有關(guān)assess token獲取可參考:獲取AccessToken
/// <summary> /// 向微信服務(wù)器請求創(chuàng)建自定義菜單 /// </summary> /// <param name="jsonStr"></param> /// <returns></returns> /// private bool requstZmToCreatMent(string jsonStr) { try { var AccessToken = "";//accesstoken需例外獲取,一般可開始時獲取后存數(shù)據(jù)庫,下次從數(shù)據(jù)庫取,注意accesstoken有效期為7200秒 //聲明一個HttpWebRequest請求 string interfaceUrl = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" + AccessToken; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(interfaceUrl); //設(shè)置連接超時時間 request.Timeout = 30000; request.KeepAlive = true; Encoding encodeType = Encoding.GetEncoding("UTF-8"); request.Headers.Set("Pragma", "no-cache"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; Maxthon; .NET CLR 1.1.4322); Http STdns"; request.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; request.CookieContainer = new CookieContainer(); byte[] Bytes = encodeType.GetBytes(jsonStr); request.ContentLength = Bytes.Length; request.AllowAutoRedirect = true; //發(fā)送數(shù)據(jù) using (Stream writer = request.GetRequestStream()) { writer.Write(Bytes, 0, Bytes.Length); writer.Close(); } StringBuilder strb = new StringBuilder(); //接收數(shù)據(jù) using (Stream reader = request.GetResponse().GetResponseStream()) { StreamReader sr = new StreamReader(reader, encodeType); strb.Append(sr.ReadToEnd()); sr.Close(); reader.Close(); } if ((strb.ToString().IndexOf("\"errcode\":42001") != -1) || (strb.ToString().IndexOf("\"errcode\":40001") != -1) || (strb.ToString().IndexOf("\"errcode\":40014") != -1) || (strb.ToString().IndexOf("\"errcode\":41001") != -1)) //access_token錯誤 { // AccessToken = getAccessToken(); getzmAccessToken(); return requstZmToCreatMent(jsonStr); } else { if (strb.ToString() == "{\"errcode\":0,\"errmsg\":\"ok\"}") { return true; } else { return false; } } } catch (Exception exp) { return false; } }
感謝各位的閱讀!關(guān)于“微信公眾號開發(fā)中如何設(shè)置自定義菜單”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
當(dāng)前文章:微信公眾號開發(fā)中如何設(shè)置自定義菜單-創(chuàng)新互聯(lián)
文章鏈接:http://www.rwnh.cn/article24/ceihje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)公司、建站公司、移動網(wǎng)站建設(shè)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容