查看: 9|回复: 0

[公众号] C#微信公众号开发

[复制链接]

1

主题

0

回帖

0

积分

积极分子

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2010-10-18
发表于 2021-10-5 19:08:00 | 显示全部楼层 |阅读模式

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



我的公众号


参考链接



来源:https://www.cnblogs.com/netcore5/p/15369291.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部