微信公众平台入门开发教程.Net(C#)框架

一、序言

  一直在想第一次写博客,应该写点什么好?正好最近在研究微信公众平台开发,索性就记录下,分享下自己的心得,也分享下本人简单模仿asp.net运行机制所写的通用的微信公众平台开发.Net(c#)框架吧。由于本人知识有限、文字组织能力有限,如有错误或不足,请多多指教!

二、微信公众平台.Net(C#)框架介绍

  运行流程:WeiXinRequestHandler.ashx接收微信服务器post请求,创建WeiXinApplication实例,构造函数中设置WeiContext(WeiXinRequest,WeiXinResponse)请求上下文属性,执行WeiXinApplication的GetResponseXml()方法,使用WeiXinHandlerFactory工厂类动态加载程序集,遍历程序集里的Type集合,反射获取控制器中的WeiXinMsgType属性值判断是否与请求消息上下文WeiXinRequest的WeiXinMsgType属性值一致创建相对应的消息处理控制器实例,并返回这个实例,赋值给WeiXinApplication中IWeiXinHandler属性值,调用ProcessWeiXin(WeiXinContext context)方法,执行完毕后,返回WeiXinResponse对象中的响应消息。

三、微信公众平台注册/接入相关事宜

1、注册:

  填写基本信息,激活邮箱,登记信息......公众号信息。值得一提的是:目前个人只允许注册订阅号,公司单位才能注册服务号,服务号可以实现自定义菜单;公众号名称一经确认就无法修改!

2、接入:(必须条件:拥有自己的公网可访问的服务器)

  ①、成为开发者:在公众平台网站的高级功能 – 开发模式页,点击“成为开发者”按钮,根据官方文档填写相关接口配置信息并提交。

   ②、验证url有效性:开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

  开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

验证工具类:UtilityHelper


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

#region 检查加密签名是否一致 - public static bool CheckSignature(string signature, string timestamp, string nonce)

   /// <summary>

   /// 检查加密签名是否一致

   /// </summary>

   /// <param name="signature">微信加密签名</param>

   /// <param name="timestamp">时间戳</param>

   /// <param name="nonce">随机数</param>

   /// <returns></returns>

   public static bool CheckSignature(string signature, string timestamp, string nonce)

   {

       List<string> stringList = new List<string> {Token, timestamp, nonce};

       // 字典排序

       stringList.Sort();

       return Sha1Encrypt(string.Join("", stringList)) == signature;

   }

   #endregion

   #region 对字符串SHA1加密 - public static string Sha1Encrypt(string targetString)

   /// <summary>

   /// 对字符串SHA1加密

   /// </summary>

   /// <param name="targetString">源字符串</param>

   /// <returns>加密后的十六进制字符串</returns>

   private static string Sha1Encrypt(string targetString)

   {

       byte[] byteArray = Encoding.Default.GetBytes(targetString);

       HashAlgorithm hashAlgorithm = new SHA1CryptoServiceProvider();

       byteArray = hashAlgorithm.ComputeHash(byteArray);

       StringBuilder stringBuilder = new StringBuilder();

       foreach (byte item in byteArray)

       {

           stringBuilder.AppendFormat("{0:x2}", item);

       }

       return stringBuilder.ToString();

   }

   #endregion

   #region 根据加密类型对字符串SHA1加密 - public static string Sha1Encrypt(string targetString, string encryptType)

   /// <summary>

   /// 根据加密类型对字符串SHA1加密

   /// </summary>

   /// <param name="targetString">源字符串</param>

   /// <param name="encryptType">加密类型:MD5/SHA1</param>

   /// <returns>加密后的字符串</returns>

   private static string Sha1Encrypt(string targetString, string encryptType)

   {

       return FormsAuthentication.HashPasswordForStoringInConfigFile(targetString, encryptType);

   }

   #endregion

  

四、微信公众平台运行原理介绍

五、结束

  字穷了...~~~!附源码吧。看web.config,打开Test.html进行测试。添加自己的消息控制器必须继承WeiXinHandlerType,程序集生成插件目录bin/WeiXinPlugins。

源码下载:WeiXin.Framework

时间: 2024-08-05 18:50:43

微信公众平台入门开发教程.Net(C#)框架的相关文章

ASP.NET MVC5微信公众平台整合开发实战教程

<ASP.NET MVC5&微信公众平台整合开发实战(响应式布局.JQuery Mobile,Windows Azure.微信核心开发)> 课程讲师:57Code 课程分类:ASP.NET MVC 适合人群:中级 课时数量:29课时 用到技术:深入MVC开发模式.C#核心语言特性.C#核心语言特性(二).视图引擎Razor 涉及项目:体育商店.微信公众平台开发 咨询QQ:1337192913(小公子) 1.1.1.背景分析 庞大的微信用户数是微信公众平台重要性的根本 微信用户的真实性使

《微信公众平台入门到精通》Vol.1

<微信公众平台入门到精通>Vol.1 从今天开始微信公众平台教程开写,前面部分会比较浅,已经在玩的朋友可以忽略. 第一章    微信公众账号注册.设置.登陆 一.微信公众平台注册 注册前的准备工作,很重要! 1.一个没有注册过公众账号的邮箱,如果是qq邮箱那么对应的qq号也要没有注册过公众账号. 2.身份证扫描件,每个身份证可以注册5个公众账号 3.手机,用来接受注册验证码 4.想好公众账号名称,非常重要,一旦申请成功名称不能修改,并且该名称最好与已获得认证的腾讯微博名称相同,等公众号到500

《微信公众平台入门到精通》Vol.2

<微信公众平台入门到精通>Vol.2 2017-05-28 连着两天没有更新公众平台的教程了,估计不少朋友在嘀咕了,非常抱歉,这些天疲倦的奔波在外,朋友们的消息还是及时在回复的,只是没有精力写东西.今天猛睡一天补交,接下来会空一些,会正常更新! 第二章    微信公众平台后台介绍 一.微信公众平台后台欢迎页面 登陆公众平台后首先进入的就是欢迎页,跟大部分CMS后台一样,这里会提供的是公众账号的一些运营数据,如下图: 在上次点击用户管理和实时消息两个导航选项后新增加的用户数和消息数,这话有点拗口

微名汇-微信公众平台功能开发(天气查询)

在这篇教程中,我们将介绍如何在微信公众平台上开发天气预报功能.我们将使用中国天气网的气象数据接口来获取天气信息 这篇教程将介绍以下内容: 获取中国天气网的气象数据 在微信公众平台中回复天气 微名汇:http://weixin.zgtuango.com 联系QQ:44653139 一.中国天气网 中国天气网提供了丰富的气象数据接口.下面我们介绍主要的几个: 国家根节点接口: http://flash.weather.com.cn/wmaps/xml/china.xml 该接口以XML格式列出所有的

微信公众平台深度开发JAVA版第二季视频教程

微信公众平台深度开发JAVA版第二季(九宝饭店微信点餐系统)视频教程下载密码:qa4a     联系QQ:1026270010 微信作为当前流行的通信社交软件有了上亿的用户量,几乎每一个只能手机都要安装微信.但是,市场上对于JAVA开发微信公众平台的资料却少之又少,多数的资料一般是其他语言的.因此,主讲老师经过潜心研究.认真准备,录制了这套针对JAVA开发语言的微信公众平台开发教程. 1.课程研发环境 开发语言:JAVA WEBServer:TOMAT DATABASE:MySQL 开发工具:m

《微信公众平台快速上手教程》目录导航,刘子骏de新媒体,图解版本

10年互联网从业者,草根创业者,新媒体营销研究者.作者博客:www.liuzijun.com 有些公众平台的基本用法可以参照上面的教程. 微信公众平台快速上手教程Part1 注册账户与认证 微信公众平台快速上手教程Part2 消息管理与群发 微信公众平台快速上手教程Part3 素材编辑 微信公众平台快速上手教程Part4 关键词自动回复 微信公众平台快速上手教程Part5 开发模式讲解 微信公众平台快速上手教程Part6 公众会议帐号 微信公众平台快速上手教程Part7 微信运营十大要决 微信公

微信公众平台应用开发:方法、技巧与案例--柳峰,Java语言版本

他本人的博客:http://blog.csdn.net/lyq8479 作者简介: 刘运强,网名“柳峰”,资深微信公众平台应用开发工程师,国内微信公众平台应用开发的先驱之一,项目经验丰富.他还是一位资深的Java软件开发工程师和 Android/iOS移动应用开发工程师,活跃于CocoaChina.OSChina.CSDN等社区,并在CSDN博客撰写了系列微信公众平台二次 开发的教程,深受欢迎并被广泛传播,也因此获得CSDN博客移动开发版块的“博客冠军”. 本教程是采用java语言开发. 微信公

[037] 微信公众帐号开发教程第13篇-图文消息全攻略

引言及内容概要 已经有几位读者抱怨“柳峰只用到文本消息作为示例,从来不提图文消息,都不知道图文消息该如何使用”,好吧,我错了,原本以为把基础API封装完.框架搭建好,再给出一个文本消息的使用示例,大家就能够照猫画虎的,或许是因为我的绘画功底太差,画出的那只猫本来就不像猫吧…… 本篇主要介绍微信公众帐号开发中图文消息的使用,以及图文消息的几种表现形式.标题取名为“图文消息全攻略”,这绝对不是标题党,是想借此机会把大家对图文消息相关的问题.疑虑.障碍全部清除掉. 图文消息的主要参数说明 通过微信官方

《微信公众平台入门到精通》,青龙老贼,详情版本

<微信公众平台入门到精通>,青龙老贼,详情版本 <微信公众平台入门到精通>Vol.1   http://segmentfault.com/a/1190000000356021 第一章 微信公众账号注册.设置.登陆 一.微信公众平台注册二.公众账号设置三.公众账号登陆 <微信公众平台入门到精通>Vol.2  http://segmentfault.com/a/1190000000356027 第二章 微信公众平台后台介绍 一.微信公众平台后台欢迎页面二.微信公众平台实时消