.net微信全平台快速开发的应用框架,专注业务实现,值得收藏

项目介绍
您可以方便快速地开发微信全平台的应用(包括微信公众号、小程序、小游戏、企业号、开放平台、微信支付、JS-SDK、微信硬件/蓝牙,等等) 。本项目的 Demo 同样适合初学者进行 .NET 编程学习 。
 
.net支持
.NET Framework 3.5
.NET Framework 4.0
.NET Framework 4.5.1
.NET Standard 2.0 / 2.1
.NET Core 2.x / 3.x
.NET 5.0 / .NET 6.0
 
功能介绍

  • 已经支持大部分微信 8.x API,包括微信支付、自定义菜单/个性化菜单、模板信息接口、素材上传接口、群发接口、多客服接口、支付接口、微小店接口、卡券接口、发票接口等等 。
  • 已支持微信公众号、小程序、企业号、开放平台等各个模块 。
  • 已经支持用户会话上下文(解决服务器无法使用 Session 处理用户信息的问题) 。
  • 已经全面支持微信公众号、小程序、企业号(企业微信)、微信支付V2/V3、开放平台的最新 API 。
  • 已经支持分布式缓存及缓存策略扩展(默认支持:本地缓存、redis、Memcached,可自由扩展) 。
目前官方的 API 都已完美集成,除非有特殊说明,所有升级都会尽量确保向下兼容,所以已经发布的版本请放心使用或直接升级(覆盖)最新的 dll,Release生成目录,建议使用 Nuget 进行更新 。
Senparc.Weixin.MP.Sample 中的关键代码说明
注:这是 MVC 项目,WebForms项 目见对应 Demo 中的 Weixin.aspx 。
/Controllers/WeixinController.cs下面的Token需要和微信公众平台后台设置的Token同步,如果经常更换建议写入Web.config等配置文件(实际使用过程中两列建议使用数字+英文大小写改写Token,Token一旦被破解,微信请求将很容易被伪造!):
public readonly string Token = "weixin";下面这个Action(Get)用于接收并返回微信后台Url的验证结果,无需改动 。地址如:http://domain/Weixin 或 http://domain/Weixin/Index
/// <summary>/// 微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url填写如:http://weixin.senparc.com/weixin/// </summary>[HttpGet][ActionName("Index")]public ActionResult Get(PostModel postModel, string echostr){if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token)){return Content(echostr); //返回随机字符串则表示验证通过}else{return Content("failed:" + postModel.Signature + ","+ MP.CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, Token) + " 。" +"如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致 。");}}上述方法中的PostModel是一个包括了了Signature、Timestamp、Nonce(由微信服务器通过请求时的Url参数传入),以及AppId、Token、EncodingAESKey等一系列内部敏感的信息(需要自行传入)的实体类,同时也会在后面用到 。
下面这个Action(Post)用于接收来自微信服务器的Post请求(通常由用户发起),这里的if必不可少,之前的Get只提供微信后台保存Url时的验证,每次Post必须重新验证,否则很容易伪造请求 。
【.net微信全平台快速开发的应用框架,专注业务实现,值得收藏】/// <summary>/// 用户发送消息后,微信平台自动Post一个请求到这里,并等待响应XML/// </summary>[HttpPost][ActionName("Index")]public ActionResult Post(PostModel postModel){if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token)){return Content("参数错误!");}...}如何处理微信公众账号请求?Senparc.Weixin.MP提供了2中处理请求的方式,传统方法及使用MessageHandler处理方法(推荐) 。上面两个方法在wiki中已经有比较详细的说明,这里简单举例MessageHandler的处理方法 。
MessageHandler的处理流程非常简单:
[HttpPost][ActionName("Index")]public ActionResult Post(PostModel postModel){if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token)){return Content("参数错误!");}postModel.Token = Token;postModel.EncodingAESKey = EncodingAESKey;//根据自己后台的设置保持一致postModel.AppId = AppId;//根据自己后台的设置保持一致var messageHandler = new CustomMessageHandler(Request.InputStream, postModel);//接收消息(第一步)messageHandler.Execute();//执行微信处理过程(第二步)return new FixWeixinBugWeixinResult(messageHandler);//返回(第三步)}整个消息除了postModel的赋值以外,接收(第一步)、处理(第二步)、返回(第三步)分别只需要一行代码 。


推荐阅读