最近總有一些任務和微信的功能有聯系,所以我開始去嘗試如何開發一個微信公眾平台。為了方便測試和使用各種功能,我使用的是公眾平台測試號。
首先登陸微信公眾平台官網,
點擊進入后,會提供一個appID和aapsecret,這兩個最為重要。在往下是接口配置信息
因為URL是需要微信驗證的,所以此處要開始寫代碼了。
新建項目后,安裝微信公眾平台sdk:
代碼如下:

1 [HttpGet] 2 public ActionResult Get(PostModel postModel, string echostr) 3 { 4 if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, token)) 5 { 6 return Content(echostr); //返回隨機字符串則表示驗證通過 7 } 8 else 9 { 10 return 11 Content("failed:" + postModel.Signature + "," + CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, token) + 12 "。如果您在瀏覽器中看到這條信息,表明此Url可以填入微信后台。"); 13 } 14 }
發布到網站后,再點擊接口配置信息保存即可驗證通過。接下來將自己的網站域名填入JS接口安全域名。
到此微信方的配置基本結束,接下來開始創建自定義菜單
代碼如下:

1 public ActionResult CreateMenu() 2 { 3 var token = CommonApi.GetToken(appId, secret); 4 //初始化 5 GetMenuResultFull resultFull = new GetMenuResultFull(); 6 MenuFull_ButtonGroup menu = new MenuFull_ButtonGroup(); 7 menu.button = new List<MenuFull_RootButton>(); 8 menu.button.Add(new MenuFull_RootButton() { key = "link", name = "鏈接", type = ButtonType.view.ToString(), url = "http://www.baidu.com" }); 9 menu.button.Add(new MenuFull_RootButton() { key = "OneClick", name = "圖文鏈接", type = ButtonType.click.ToString() }); 10 var subButton = new MenuFull_RootButton() 11 { 12 key = "OneClick", 13 name = "二級菜單", 14 type = ButtonType.click.ToString(), 15 }; 16 subButton.sub_button = new List<MenuFull_RootButton>(); 17 subButton.sub_button.Add(new MenuFull_RootButton() 18 { 19 key = "SubClickRoot_Text", 20 name = "文字信息", 21 type = ButtonType.click.ToString(), 22 }); 23 subButton.sub_button.Add(new MenuFull_RootButton() 24 { 25 key = "SubClickRoot_Text", 26 name = "文字信息2", 27 type = ButtonType.click.ToString(), 28 }); 29 menu.button.Add(subButton); 30 resultFull.menu = menu; 31 var bg = CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu; 32 var result = CommonApi.CreateMenu(token.access_token, bg); 33 return Content(result.errmsg); 34 }
直接運行項目,跳轉到http://localhost:****/Home/CreateMenu地址。
理想狀態下是返回ok,然后用微信掃描測試號二維碼,即可看到效果。具體菜單有幾個一級菜單,幾個二級菜單,可以根據實際修改代碼。