C#中.net微信开发的示例分析
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关C#中.net微信开发的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。成为开发者string[] ArrTmp = { "tok
千家信息网最后更新 2026年11月01日C#中.net微信开发的示例分析
这篇文章将为大家详细讲解有关C#中.net微信开发的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
成为开发者string[] ArrTmp = { "token", Request["timestamp"], Request["nonce"] };Array.Sort(ArrTmp); //字典排序string tmpStr = string.Join("", ArrTmp);tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");tmpStr = tmpStr.ToLower();if (tmpStr != Request["signature"].ToLower()){ Response.Write(Request["echostr"]);}关注帐号,触发消息,自动应答,事件响应

namespace ElegantWM.WebUI.Areas.WeiXin.Controllers{ /// /// 微信公共服务类 /// public class RobotController : BaseController { /// /// 接收微信请求接口,认证的接口 /// /// public ContentResult Index() { string result = AnalyzeXmlFromWeiXin(); return Content(result); } /// /// 分析微信POST到本服务器的XML数据 /// /// /// private string AnalyzeXmlFromWeiXin() { StreamReader reader = new StreamReader(Request.InputStream); string xml = reader.ReadToEnd(); //获取MsgType log.Info(xml); string msgType = XmlHelper.ReadXmlStr(xml, "/xml/MsgType", ""); switch (msgType) { case "event"://如果是事件 return OnAttention(xml); case "text"://如果是文本消息 return OnReceiveTextMsg(xml); default: return "不被支持的关键字!"; } } /// /// 响应文本消息 /// /// /// private string OnReceiveTextMsg(string xml) { WxTextMsg msg = XmlEntityExchange.ConvertXml2Entity(xml); //返回消息,互换收发用户 string toUser = msg.FromUserName; msg.FromUserName = msg.ToUserName; msg.ToUserName = toUser; switch (msg.Content.Trim()) { case "?": msg.Content = HelpDocument(); break; case "?": msg.Content = HelpDocument(); break; case "1": msg.Content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); break; case "2": msg.Content = Tools.HttpCrossDomain.Get("http://www.weather.com.cn/data/sk/101210301.html"); break; case "3": msg.Content = "来吧,想唠点什么呢? [偷笑]"; break; case "你是男的女的": msg.Content = "姑娘一枚 [偷笑]"; break; default: msg.Content = "抱歉哦,我不认识您输入的命令。/害羞 /:,@-D"; break; } return XmlEntityExchange.ConvertEntity2Xml(msg); } /// /// 获取帮助菜单文档 /// /// private string HelpDocument() { StringBuilder sb = new StringBuilder(); sb.Append("HI,请回复数字,选择服务").Append("\n\n"); sb.Append("1. 当前时间").Append("\n"); sb.Append("2. 天气信息").Append("\n"); sb.Append("3. 聊天唠嗑").Append("\n"); sb.Append("n. 更多服务开发中...").Append("\n"); sb.Append("回复【?】显示此帮助菜单"); return sb.ToString(); } /// /// 当用户关注微信帐号的时候触发,事件响应 /// /// private string OnAttention(string xml) { WxEvent wxevent = XmlEntityExchange.ConvertXml2Entity(xml); WxTextMsg msg = new WxTextMsg(); msg.ToUserName = wxevent.FromUserName; msg.FromUserName = wxevent.ToUserName; msg.CreateTime = DateTime.Now.Ticks; msg.MsgType = "text"; //如果是关注,则发送欢迎消息 switch (wxevent.Event) { case "subscribe": msg.Content = System.Configuration.ConfigurationManager.AppSettings["DefaultWxMsg"]; break; case "CLICK": msg.Content = "您单击的是:" + wxevent.EventKey; break; default: msg.Content = "暂未处理的事件:Event" + wxevent.Event + ";EventKey:" + wxevent.EventKey; break; } string rst = XmlEntityExchange.ConvertEntity2Xml(msg); log.Info(rst); return rst; } }} 辅助类
//实体public class WxEvent { /// /// 接收人 /// public string ToUserName { get; set; } /// /// 发送人 /// public string FromUserName { get; set; } /// /// 时间 /// public string CreateTime { get; set; } /// /// 类型 /// public string MsgType { get; set; } /// /// 事件 /// public string Event { get; set; } public string EventKey { get; set; } }public class WxTextMsg { /// /// 接收人 /// public string ToUserName { get; set; } /// /// 发送人 /// public string FromUserName { get; set; } /// /// 时间 /// public long CreateTime { get; set; } /// /// 类型 /// public string MsgType { get; set; } /// /// 内容 /// public string Content { get; set; } }//XML和实体对象间的相互转化namespace ElegantWM.WebUI.Areas.WeiXin{ public class XmlEntityExchange where T : new() { /// /// 将XML转换为对象 /// /// /// public static T ConvertXml2Entity(string xml) { XmlDocument doc = new XmlDocument(); PropertyInfo[] propinfos = null; doc.LoadXml(xml); XmlNodeList nodelist = doc.SelectNodes("/xml"); T entity = new T(); foreach (XmlNode node in nodelist) { //初始化propertyinfo if (propinfos == null) { Type objtype = entity.GetType(); propinfos = objtype.GetProperties(); } //填充entity类的属性 foreach (PropertyInfo pi in propinfos) { XmlNode cnode = node.SelectSingleNode(pi.Name); pi.SetValue(entity, Convert.ChangeType(cnode.InnerText, pi.PropertyType), null); } } return entity; } /// /// 构造微信消息 /// /// 对象实体 /// 返回微信消息xml格式 public static string ConvertEntity2Xml(T t) { StringBuilder builder = new StringBuilder(); builder.Append(""); Type objtype = t.GetType(); //填充entity类的属性 foreach (PropertyInfo pi in objtype.GetProperties()) { object obj = pi.GetValue(t); string value = obj == null ? "" : obj.ToString(); if (pi.PropertyType.Name.ToLower() == "int64") builder.Append("<" + pi.Name + ">" + value + "" + pi.Name + ">"); else builder.Append("<" + pi.Name + ">" + pi.Name + ">"); } builder.Append(" "); return builder.ToString(); } }} 基础类:http请求
/* * * Copyright © 2013 CCT All Rights Reserved * 作者:JackChain * 时间:2013/8/23 18:21:23 * 功能:跨域访问 * 版本:V1.0 * * 修改人: * 修改点: * */namespace ElegantWM.Tools{ public class HttpCrossDomain { /// /// 跨域访问 /// /// /// /// public static string Post(string url, string param, int time = 60000) { Uri address = new Uri(url); HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; request.Method = "POST"; request.ContentType = "application/json;charset=utf-8"; //"application/x-www-form-urlencoded"; request.Timeout = time; byte[] byteData = UTF8Encoding.UTF8.GetBytes(param == null ? "" : param); request.ContentLength = byteData.Length; using (Stream postStream = request.GetRequestStream()) { postStream.Write(byteData, 0, byteData.Length); } string result = ""; using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { StreamReader reader = new StreamReader(response.GetResponseStream()); result = reader.ReadToEnd(); } return (result); } /// /// 跨域访问 /// /// /// /// public static string Get(string url, int time = 60000) { Uri address = new Uri(url); HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; request.Method = "GET"; request.ContentType = "application/json;charset=utf-8"; //"application/x-www-form-urlencoded"; request.Timeout = time; string result = ""; using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { StreamReader reader = new StreamReader(response.GetResponseStream()); result = reader.ReadToEnd(); } return (result); } }}获取Token:
public class CommonController : Controller { /// /// 获取微信凭证 /// /// public JsonResult GetWxCredential() { string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}"; url = string.Format(url, ConfigurationManager.AppSettings["AppId"], ConfigurationManager.AppSettings["AppSecret"]); string rst = HttpCrossDomain.Get(url); if (rst.Contains("access_token")) { string tokenId=rst.Replace("{\"access_token\":\"", "").Replace("\",\"expires_in\":7200}", ""); CacheHelper.CacheInsertAddMinutes("access_token",tokenId,120); return Json(tokenId, JsonRequestBehavior.AllowGet); } else return Json(rst, JsonRequestBehavior.AllowGet); } }获取和更新菜单
////// 获取微信菜单 /// ///public JsonResult Get() { string url = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token="; if (CacheHelper.CacheValue("access_token") != null) { url = url + CacheHelper.CacheValue("access_token").ToString(); } string rst = HttpCrossDomain.Get(url); return Json(rst,JsonRequestBehavior.AllowGet); } /// /// 创建Menu /// /// ///[HttpPost] public JsonResult Create(string json) { string url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token="; if (CacheHelper.CacheValue("access_token") != null) { url = url+CacheHelper.CacheValue("access_token").ToString(); } string rst = HttpCrossDomain.Post(url, json); return Json(rst); }
关于"C#中.net微信开发的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
消息
事件
开发
时间
菜单
服务
分析
实体
对象
更多
篇文章
帮助
示例
C#
内容
属性
接口
文本
用户
类型
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司简介
苏州找大状互联网科技有限公司
美国互联网科技巨头监管
互联网 科技
互联网 科技创新
碳银互联网科技
互联网科技排名
远拓互联网科技
万达互联网科技
深圳艾佳互联网科技
互联网 新科技
上海亿帐通互联网科技
互联网养老 桔豆科技
互联网科技有限公司 翻译
科技与互联网的利与弊
须眉科技是互联网公司吗
湖南诚度互联网科技有限公司
互联网科技职业技能培训学校
求路客互联网科技电话
绵阳真晨互联网科技有限公司
什么是科技互联网
喔噻互联网科技有限公司
科技创新与互联网经济
互联网科技有限公司经营范围
奇酷互联网科技
唐信互联网科技 大连
茂名市互联网科技产业园
富国互联网科技002692
张家口科技产业互联网平台
互联网科技创业有什么好项目