C#微信公众号开发

C#微信公众号开发

一》 准备

用自己的微信扫码登陆,然后就可以获取就有了appId 和 appsecret。

二》获取access_token

打开 微信公众平台接口调试工具


这个access_token是通过appID 和 appsecret来生成的,access_token 有效期为 两个小时(7200秒),一天可以获取2000次,只要是向微信服务器发送请求都需要带上这个access_token

  /// <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

三》创建菜单

通过测试接口来处理

{
    "button": [
        {
            "name": "迷恋自留地", 
            "type": "view", 
            "url": "https://hunji.xyz"  //点击菜单访问网址
        },
        {
            "name": "防伪扫描", 
            "type": "scancode_push", 
            "key": "FangweiScan"      //点击调用微信二维码扫描,是网址直接访问,是文本则显示文本内容
        },
        {
            "name": "订单查询", 
            "type": "click", 
            "key": "OrderQuery"       //点击出发click事件,向我们配置的API地址进行请求
        }
    ]
}

扫码关注公众号就ok,更多的按钮参考:微信开发文档

请求成功后,取消微信号关注并退出微信,重新进入关注,应该就可以看到添加好的文档了。

想删除重新创建菜单,调用菜单删除就可以了。

四》开发接口、处理文本和事件

当用户使用微信发送消息或者单击菜单出发事件,就会向配置的API发送请求,API进行处理响应 : 消息回复参考文档

具体的代码实现请查阅下篇文章,在这里先埋个坑

五》发送模板消息

首先在后台添加测试的模板,获取到消息模板的id



我的公众号


参考链接

posted @ 2021-10-05 19:08  今晚打老虎!  阅读(277)  评论(0编辑  收藏  举报