Loading... ## C#微信公众号开发 ### 一》 准备 - [【开发文档】](https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html) - [【微信公众号测试接口】](https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index) 用自己的微信扫码登陆,然后就可以获取就有了appId 和 appsecret。 ![](https://img-blog.csdnimg.cn/5b54e5cdfdf346faa845c46b90952b5e.png) ### 二》获取access_token 打开 [微信公众平台接口调试工具](https://mp.weixin.qq.com/debug/) ![](https://img-blog.csdnimg.cn/aa5468e8d76a4451982d2608524e9ccc.png) 这个access_token是通过appID 和 appsecret来生成的,access_token 有效期为 **两个小时**(7200秒),一天可以获取2000次,只要是向微信服务器发送请求都需要带上这个access_token ```csharp /// <summary> /// AccessToken帮助类 /// </summary> public class AccessTokenHelp { //填写自己微信的秘钥 private static string appId = System.Configuration.ConfigurationManager.AppSettings["WeChatAppId"]; private static string appSecret = System.Configuration.ConfigurationManager.AppSettings["WeChatAppSecret"]; private static DateTime GetAccessToken_Time; /// <summary> /// 过期时间为7200秒 /// </summary> private static int Expires_Period = 7200; /// <summary> /// /// </summary> private static string mAccessToken; /// <summary> /// /// </summary> public static string AccessToken { get { //如果为空,或者过期,需要重新获取 if (string.IsNullOrEmpty(mAccessToken) || HasExpired()) { //获取 mAccessToken = GetAccessToken(appId, appSecret); } return mAccessToken; } } /// <summary> /// /// </summary> /// <param name="appId"></param> /// <param name="appSecret"></param> /// <returns></returns> private static string GetAccessToken(string appId, string appSecret) { string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appId, appSecret); string result = HttpUtility.GetData(url); XDocument doc = CommonHelp.ParseJsonToXML(result, "root"); XElement root = doc.Root; if (root != null) { XElement access_token = root.Element("access_token"); if (access_token != null) { GetAccessToken_Time = DateTime.Now; if (root.Element("expires_in") != null) { Expires_Period = int.Parse(root.Element("expires_in").Value); } return access_token.Value; } else { GetAccessToken_Time = DateTime.MinValue; } } return null; } /// <summary> /// 判断Access_token是否过期 /// </summary> /// <returns>bool</returns> private static bool HasExpired() { if (GetAccessToken_Time != null) { //过期时间,允许有一定的误差,一分钟。获取时间消耗 if (DateTime.Now > GetAccessToken_Time.AddSeconds(Expires_Period).AddSeconds(-60)) { return true; } } return false; } ``` 通过 `string access_token = Common.AccessTokenHelp.AccessToken;` 就可以获取accesstoken ### 三》创建菜单 通过测试接口来处理 ![](https://img-blog.csdnimg.cn/eed2dd91747f4a6e9957c23c2bb072fa.png)![](https://img-blog.csdnimg.cn/f814b078e18a4aa1a32a657ba5775be8.png) ```csharp { "button": [ { "name": "迷恋自留地", "type": "view", "url": "https://hunji.xyz" //点击菜单访问网址 }, { "name": "防伪扫描", "type": "scancode_push", "key": "FangweiScan" //点击调用微信二维码扫描,是网址直接访问,是文本则显示文本内容 }, { "name": "订单查询", "type": "click", "key": "OrderQuery" //点击出发click事件,向我们配置的API地址进行请求 } ] } ``` 扫码关注公众号就ok,更多的按钮参考:[微信开发文档](https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Personalized_menu_interface.html) ![](https://img-blog.csdnimg.cn/f9640d29f59845bc981d198a75c4ca21.png) 请求成功后,取消微信号关注并退出微信,重新进入关注,应该就可以看到添加好的文档了。 想删除重新创建菜单,调用菜单删除就可以了。 ![](https://img-blog.csdnimg.cn/92770aad11974886bf5302ce680e943f.png) ### 四》开发接口、处理文本和事件 当用户使用微信发送消息或者单击菜单出发事件,就会向配置的API发送请求,API进行处理响应 : [消息回复参考文档](https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages.html) 具体的代码实现请查阅下篇文章,在这里先埋个坑 ### 五》发送模板消息 首先在后台添加测试的模板,获取到消息模板的id ![](https://img-blog.csdnimg.cn/7f976098689a40aea8f63e356f6c1545.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/8bcc0e3085784a9ead4dea96d28ac870.png) ![](https://img-blog.csdnimg.cn/d679b99e9b984b4290906ba49bf23a84.png) [参考链接](https://www.cnblogs.com/zxx193/p/4940292.html) 最后修改:2021 年 10 月 05 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏