因为正在计划做一个微信机器人,需要用ASP.NET,找了一下只有PHP的SDK,没有C#的,于是动手写了一个,已经全面支持微信6.x所有接口,包括多客服、卡券、微信支付等。

微信公众平台地址:http://mp.weixin.qq.com

Senparc.Weixin.MP官网地址:http://weixin.senparc.com

所有源代码(SDK+示例): https://github.com/JeffreySu/WeiXinMPSDK(新版本已发布,可以在github中查看最新的代码和教程)

微信技术交流社区:http://www.weiweihi.com/QA

目前已经支持微信6.x所有API(主要是自定义菜单),并且我为大家准备了两个非常好用的在线工具(都已在源代码中开源):

技术交流QQ群:

  • 1群:300313885 (已满)
  • 2群:293958349 (已满)
  • 3群:342319110 
  • 4群:372212092 (已满)
  • 5群:377815480 (已满)
  • 6群:425898825 (已满)
  • 7群:482942254 (已满)
  • 8群:106230270 

用微信扫描下面二维码,添加测试账号为好友(添加后发送文本、位置、图片信息,测试反馈效果):

注意:开始开发之前需要到上面申请一个公众账号,并开启“关键词自动回复 => 公众平台消息接口”,根据提示设置token等信息。

    Senparc.Weixin.MP所有项目文件如下:


(项目已更新,具体文件请到https://github.com/JeffreySu/WeiXinMPSDK查看或同步最新代码)

    Senparc.Weixin.MP几个关键类介绍如下:

  • Entities/Request*.cs 用于接收微信平台自动发送到服务器的实体(发送过来的是XML),包括文本、位置、图片三类
  • Entities/Response*.cs 用于反馈给发送人的信息实体(最终会转成XML),包括文本、新闻(图文)两类
  • Helpers/EntityHelper.cs 用于实体和XML之间的转换(由于其中有许多需要特殊处理的字段和类型,这里不能简单用XML序列化)
  • Helpers/MsgTypeHelper.cs 用于获取消息类型
  • CheckSignature.cs 验证请求合法性类
  • Enums.cs 各种枚举
  • RequestMessageFactory.cs 用于自动生成不同Request类型的实体,并作必要的数据填充

Senparc.Weixin.MP几个关键类及重要方法(按一般使用过程排序,注意很多地方已经升级到更简洁的方法,请参考最新的代码:https://github.com/JeffreySu/WeiXinMPSDK

  1. 生成验证字符串:Senparc.Weixin.MP.CheckSignature.GetSignature(string timestamp, string nonce, string token = null),返回根据微信平台提供的数据,SHA1加密后的验证字符串(注意token必须跟公众平台的设置一直)
  2. 验证请求:Senparc.Weixin.MP.CheckSignature.Check(string signature, string timestamp, string nonce, string token = null),验证请求是否合法
  3. 获取请求实体:var requestMessage = Senparc.Weixin.MP.RequestMessageFactory.GetRequestEntity(XDocument doc); 根据不同请求的类型,自动生成可用于操作的实体(doc只需要用XDocument.Parse(xmlString)就能生成),requestMessage.MsgType就是请求枚举类型。
  4. 进行判断及各类操作。
  5. 根据需要,创建响应类型的实体,如:var responseMessage = ResponseMessageBase.CreateFromRequestMessage(requestMessage, ResponseMsgType.Text) as ResponseMessageText; 即可返回文本类型信息。
    注:v0.6版本以后,此方法可以简写为:var responseMessage = CreateResponseMessage<ResponseMessageText>();
  6. 由于目前微信只接受XML的返回数据,所以在返回之前还需要做一次转换:XDocument responseDoc = Senparc.Weixin.MP.Helpers.EntityHelper.ConvertEntityToXml(responseMessage); var xmlString = responseDoc.ToString();
  7. 至此整个微信公众账号的自动响应过程结束。

所有Senparc.Weixin.MP源代码及示例代码已开源(示例是ASP.NET MVC 4,.NET 4.0,Senparc.Weixin.MP源代码最低支持.NET 4.0,其中.NET 4.5的版本支持更多异步处理等新功能):

https://github.com/JeffreySu/WeiXinMPSDK

    (包含三个文件夹:Senparc.Weixin.MP、Senparc.Weixin.MP.BuildOutPut、Senparc.Weixin.MP.Sample,分别对应Senparc.Weixin.MP.dll源代码项目、Senparc.Weixin.MP.dll输出目录、Web示例,Web示例建议放到公网测试,让公众平台自动发送)

目前SDK还在测试中,欢迎大家提出宝贵意见!

补充:

关于直接使用Senparc.Weixin.MP.Sample部署到服务器上进行测试的朋友,有几点需要注意一下:

  1. 进入微信公众账号后台后,依次进入 高级功能 > 开发模式 > 成为开发者 ,编辑接口配置信息,其中Url中需要填写默认端口(80)的Url,如http://weixin.senparc.com/weixin (注意后面的/weixin一定要加,这是用于验证的一个Controller地址)
  2. 为了确保安全,在上述接口配置信息中的Token最好输入一个复杂一些的字符串,并且在Senparc.Weixin.MP.Sample/Controllers/WeixinController.cs中修改Token使之匹配,如:

关于Senparc.Weixin.MP.Test单元测试项目所有Senparc.Weixin.MP核心代码都已通过单元测试。没有外网部署条件的朋友也可以使用Senparc.Weixin.MP.Test项目提供的单元测试进行测试,这些测试同样适用于微信还没有正式发布、无法实际测试的功能,如消息推送:


截图对应测试版本:v0.3.1

升级记录:https://github.com/JeffreySu/WeiXinMPSDK/blob/master/Senparc.Weixin.MP.BuildOutPut/readme.md

微信开发教程(Senparc.Weixin.MP SDK): http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html

Senparc.Weixin.MP SDK正在筹备出版官方图书,您可以使用微信“扫一扫”下方二维码参与众筹:

[原创][下载]Senparc.Weixin.MP-微信公众平台SDK(C#) - 已支持微信6.x API的更多相关文章

  1. 国内流行的两大开源.net微信公众平台SDK对比分析

    最近忙于微信周边的开发 难免手痒去搜索一下有没有相关的sdk直接拿来使 还真发现了不少 这里总结两个看起来比较不错的.net平台下基于C#语言开发的SDK 一个强大一个小巧 (1) Senparc.W ...

  2. 国内流行的开源.net微信公众平台SDK对比分析

    一.引言 目前微信公众平台正如火如荼的进行中,微信虽然在海外市场不敌WhatsApp,但是已经俘获了国内绝大部分用户的心.作为国内最大的,超级"app",微信已算是成功问鼎了.公众 ...

  3. 微信公众平台SDK Python

    微信公众平台SDK 项目背景 从2014年开始玩微信公众平台,试用过其中大多数的功能,如:消息回复.自定义菜单.公众号中的支付,页面授权等.之前的程序中都是直接调用公众平台的接口,这样复用功能无法实现 ...

  4. 微信公众平台SDK

    微信公众平台网址:https://mp.weixin.qq.com/ 服务号说明:给企业和组织提供更强大的业务服务与用户管理能力,帮助企业快速实现全新的公众号服务平台. .NETSDK: Loogn. ...

  5. 【微信公众平台SDK(链式调用)】经过半个月的迭代,今天抽空写了个Demo

    这个项目是在实际开发中逐渐完善的,开发过程基于ASP.Net Core 1.1,实际生成会兼容Net4.5. 写有完善的代码提示,怎么用就不多做解释了,引用好实例中的命名空间基本上就可以通过智能提示了 ...

  6. Java微信公众平台开发(十一)--开发中微信公众平台/开放平台/商户平台的关联

    转自:http://www.cuiyongzhi.com/post/55.html 微信公众平台(map.weixin.qq.com)/开放平台(open.weixin.qq.com)/商户平台(pa ...

  7. 微信公众平台消息接口开发之微信浏览器HTTP_USER_AGENT判断

    在微信公众平台的开发过程中,我们有时需要开发网页并判断是否是是来自微信浏览器访问,本文介绍如何做出这一判断. 一.$_SERVER数组 $_SERVER 是一个包含了诸如头信息(header).路径( ...

  8. C# 微信公众平台开发(2)-- 微信菜单

    上一篇了解微信开发者中心 URL的配置验证: 验证成功后,就可以对获取的接口权限进行操作 自定义菜单接口可实现多种类型按钮,用的比较多的是 1.click:点击推事件 用户点击click类型按钮后,微 ...

  9. Delphi 开发微信公众平台 (三)- 获取微信服务器IP地址

    如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过该接口获得微信服务器IP地址列表或者IP网段信息. 接口调用请求说明 http 请求方式: GET https:/ ...

随机推荐

  1. POJ 1088 滑雪 -- 动态规划

    题目地址:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...

  2. 简单改造 starling 中的 AssetManager 让其更适合 批次加载纹理

    API文档参考:http://doc.starling-framework.org/core/starling/utils/AssetManager.html 项目想以不改动starling的情况下对 ...

  3. 要做一款APP-解放双手

    对方打字或发语音,我可以选择看屏幕或者听. 我说话,能够转化为文字.不需要点击开始按钮的那种.

  4. .NET高端职位招聘要求

    系统架构师: 1.硕士及以上学历,博士有项目成果者优先: 2.五年以上工作经验,三年以上互联网经验,一年以上大型软件项目总体设计.分析.架构经验,有移动互联网或云计算虚拟化系统设计开发经验者优先: 3 ...

  5. 关于aspx模板页面元素路径的问题,以及对模板页面的理解

    模板页面仅是模板,它不是单独存在的页面,它的路径就是引用它的内容页面的路径. 换句话说,模板页面,只是内容页面上固定的部分.     模板页面引用了的js和CSS,内容页面就不用重新引用了   css ...

  6. php eval函数用法总结

    可以在php.ini禁止此函数,结果失败了 eval定义和用法  eval() 函数把字符串按照 PHP 代码来计算.  该字符串必须是合法的 PHP 代码,且必须以分号结尾.  如果没有在代码字符串 ...

  7. CentOS 编译安装Apache2.4.10

    1.准备编译环境 yum -y install gcc make cmake autoconf libtool libevent 安装apache必须的依赖包 yum -y install apr-u ...

  8. Redhat 6 配置CentOS yum source

    由于最近曝出linux的bash漏洞,想更新下bash,于是 想到了配置CentOS yum source. 测试bash漏洞的命令: env x='() { :;}; echo "Your ...

  9. Ubuntu Vim YouCompleteMe 安装

    0. 必要工具安装 sudo apt-get install build-essential cmake 1. 安装 vundle mkdir ~/.vim/bundle git clone http ...

  10. const用法

    一.const作用 二.const用法 1.修饰一般常量   修饰符const可以用在类型说明符前,也可以用在类型说明符后. 例如: ; ; 2.修饰常数组  修饰符const可以用在类型说明符前,也 ...