最近总有一些任务和微信的功能有联系,所以我开始去尝试如何开发一个微信公众平台。为了方便测试和使用各种功能,我使用的是公众平台测试号。
首先登陆微信公众平台官网,
点击进入后,会提供一个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,然后用微信扫描测试号二维码,即可看到效果。具体菜单有几个一级菜单,几个二级菜单,可以根据实际修改代码。