この例は、管理バックグラウンドでWeChatメニューの追加と削除管理を実現することです。
1.メニュー項目を保存するための新しいデータベーステーブルを作成する必要があります
含めることができるフィールドは、ID、親クラスID、名前、ソート、表示、タイプ(表示、クリック)、リンク、追加
メニューメニューデータがバックグラウンドに保存されている場合、derperid = -1は第1レベルのメニューであるか、またはdeveridが第1レベルのメニューの下のメニューとして第1レベルのメニューのIDであることに注意してください。
2。設定メニュー中に、Menujson文字列をWeChatインターフェイスに渡す必要があるため、最初に文字列をスプライスし、背景にcreatmenu()を定義する必要があります。
public bool creatmenu(){string menujson = ""; //ここでデフォルトのderidid = -1は最も外側のメニュー、isactive = 1はディスプレイ、responseType = 1はクリックタイプのdtamenu = service.selectdatabable( "id、name、responseType、jsonstr、url"、 "weixinmenu"、 "derparentid = -1 and isactive = 1 oder by supt"); if(dtamenu.rows.count> 0){menujson = "{/" button/":["; for(int i = 0; i <dtamenu.rows.count; i ++){datatable dtbmenu = service.selectDatabable( "id、name、responseType、jsonstr、url"、wx、 "dtamenu.rows [i] [" id "]。 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] ["jsonstring]。tostring() +"/"}、"; } else {menujson + = "{/" type/":/" click/"、/" name/":/" " + dtbmenu.rows [j] [" name "]。toString() +"/"、/":/"eventkey_" + dtbmenu.Rows [J] }} menujson = menujson.trimend( '、'); menujson += "]}、"; } else {// if(convert.toint32(dtamenu.rows [i] ["ResponseType"])== 2)// {menujson + = "{/" type/":/" View/"、/" name/":/" " + dtamenu.rows [i] [" "/"/"/"/"/"/"/"/"/"/"/"/"/" dtamenu.rows [i] ["jsonstr"]。toString() + "/"}、 "; //} // else // {// menujson + = "{/" type/":/" click/"、/" name/":/" " + dtamenu.rows [i] [" name "]。tostring() +"/"key/":/"eventkey_" + dtamenu.ros [i] [id " +" //}} dtbmenu.dispose(); } dtamenu.dispose(); menujson = menujson.trimend( '、'); menujson += "]}"; menujson = menujson.trim(); RequestZmToCreatment(MenuJSON)を返します。 } else {return false; }}3. Menujson文字列を取得したら、WeChatインターフェイスを呼び出してメニューを作成します。最初に評価トークンを取得する必要があります。評価トークンについては、参照してください:AccessTokenを取得してください
/// <summary> /// wechatサーバーにリクエストしてカスタムメニューを作成します/// </summary> /// <param name = "jsonstr"> </param> ///通常、最初にデータベースを取得し、次回データベースから取得できます。 AccessTokenは7200秒間有効であることに注意してください// HTTPWEBREQUESTリクエスト文字列interfaceurl = "https://api.weixin.qc.com/cgi-bin/menu/create?access_token=" + accesstoken; httpwebrequest request =(httpwebrequest)webrequest.create(interfaceurl); //接続タイムアウト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(互換; 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; //(stream writer = request.getRequestStream()){writer.write(bytes、0、bytes.length);を使用してデータを送信します。 writer.close(); } stringbuilder strb = new StringBuilder(); //(stream reader = request.getResponse()。getResponsEstream())を使用してデータを受信します。 strb.append(sr.readtoend()); Sr.Close(); reader.close(); } if((strb.tostring()。indexof( "/" errcode/":42001") (strb.toString()。indexof( "/" errcode/":41001") getzmaccestoken(); RequestZmTocreatment(JSonstr); } else {if(strb.toString()== "{/" errcode/":0、/" errmsg/":/" ok/"}"){return true; } else {return false; }}} catch(例外exp){return false; }}要約します
上記は、編集者が紹介したWeChatパブリックアカウント開発のカスタムメニューを設定するためのサンプルコードです。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!