一、序言

  一直在想第一次写博客,应该写点什么好?正好最近在研究微信公众平台开发,索性就记录下,分享下自己的心得,也分享下本人简单模仿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

     #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

转载于:https://www.cnblogs.com/GodX/p/3678651.html

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

  1. 微信公众平台完整开发教程

    微信已然成了一种生活方式:群聊.语音.视频,照片/视频/位置共享,支付和商店有了,还能通过公众账号来获取各种资源--如今的微信就是在日中天的状态(最新估值已达 600 亿),公众平台带来的影响有目共睹 ...

  2. 微信公众平台jsapi开发教程(8)显示隐藏网页右上角菜单

    文章来源 http://www.vxzsk.com/119.html 微信官方jsapi提供了界面操作接口,用来控制微信网页右上角的菜单,下面看看微信官方文档关于界面操作接口的说明. 隐藏右上角菜单接 ...

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

    <ASP.NET MVC5&微信公众平台整合开发实战(响应式布局.JQuery Mobile,Windows Azure.微信核心开发)> 课程讲师:57Code 课程分类:ASP ...

  4. 微信公众号api关注接口php,微信公众平台接口开发入门示例

    本文实例讲述了微信公众平台接口开发入门示例.分享给大家供大家参考.具体如下: 微信公众平台的接口开发是一个现在比较常用的功能了,很多的人都会去了解一下微信公众平台一些简单开发应用,这里就来给大家介绍一 ...

  5. 如何学习微信公众平台的开发?

    如何学习微信公众平台的开发? 在整个移动互联网的开发技术中,微信公众号的开发几乎是成本最低,传播最快,影响最广的,你几乎不需要再添加任何配置,就可以开始. 个人可以申请公众号,需要高级权限可以用测试号 ...

  6. 微信公众帐号开发教程第1篇-引言(转)

    接触微信公众帐号已经有两个多月的时间了,在这期间,除了陆续完好个人公众帐号xiaoqrobot以外,还带领团队为公司开发了两个企业应用:一个是普通类型的公众帐号,还有一个是会议类型的公众帐号.经过这3 ...

  7. 微信公众帐号开发教程第6篇-消息及消息处理工具的封装

    本篇内容主要讲解如何将微信公众平台定义的消息及消息相关的操作封装成工具类,方面后期的使用  官方文档 接下来要做的就是将消息请求.回复中定义的消息进行封装,建立与之对应的Java类(Java是一门面向 ...

  8. 微信公众平台应用开发实战

    微信公众平台应用开发实战 微信营销 ISBN 9787111438618 作者 钟志勇 含税价 59.0元 税后 51.3元 增值税 7.7元 卓越价 40.7元(满49元免运费) 有货 出版社 机械 ...

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

    <微信公众平台入门到精通>,青龙老贼,详情版本 <微信公众平台入门到精通>Vol.1   http://segmentfault.com/a/1190000000356021 ...

最新文章

  1. 机房收费系统总结【3】-数据库细节
  2. python 学习之 PythonAdvance2
  3. python一千行入门代码-Python 有哪些一千行左右的经典练手项目?
  4. PHP-Socket服务端客户端发送接收通信实例详解
  5. 原生态纯JavaScript 100大技巧大收集---你值得拥有
  6. 【面试相关】非计算机专业如何1年内自学拿到算法offer
  7. Java Web开发Tomcat中三种部署项目的方法
  8. linux系统运行powerbi,使用 Power BI 服务 - Power BI | Microsoft Docs
  9. LuoguP1268树的重量【构造/思维】By cellur925
  10. python多线程单核_002_Python多线程相当于单核多线程的论证
  11. 外设驱动库开发笔记21:BME680环境传感器驱动
  12. 余世维台湾经典讲座--管理者的EQ(一)
  13. 在 Linux 平台中调试 C/C++ 内存泄漏方法
  14. 北大学神恽之玮斩获西蒙斯学者奖:18岁满分获IMO金牌,35岁成MIT终身教授,北大数学“黄金一代”刷新战绩...
  15. Windows系统下载Android源码
  16. 新人进群发邮件软件,QQ群潜伏发邮件软件,一进群就收到邮件软件
  17. matlab:xlswrite
  18. NR接入过程中鉴权失败问题
  19. 高以翔死因曝光!猝死前最后4分钟,他本还有一次活的机会...
  20. 天翎开源,是一种技术,更是一种信仰

热门文章

  1. WPF界面设计技巧(3)—实现不规则动画按钮
  2. 抽象类和接口-手机小案例
  3. Mac+docker+flask
  4. stm32之USART学习
  5. php 数组Array 删除指定键名值
  6. 转帖:3D音频之双耳效应
  7. Java1.5语言新特性简单总结
  8. python函数几个return语句_Python常用函数--return 语句-阿里云开发者社区
  9. Windows核心编程 第七章 线程的调度、优先级和亲缘性(上)
  10. hdu5248序列变换(二分+贪心)基础题