微信公众平台入门开发教程.Net(C#)框架
来源:互联网 发布:python安装步骤 编辑:程序博客网 时间:2024/04/29 18:02
一、序言
一直在想第一次写博客,应该写点什么好?正好最近在研究微信公众平台开发,索性就记录下,分享下自己的心得,也分享下本人简单模仿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对请求进行校验(下面有校验方式)。若确认此次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
- 微信公众平台入门开发教程.Net(C#)框架
- 微信公众平台开发教程(九)微信公众平台通用开发框架
- 微信公众平台开发教程(九)微信公众平台通用开发框架
- 微信公众平台开发教程(九)微信公众平台通用开发框架
- 微信公众平台开发教程(九)微信公众平台通用开发框架
- 微信公众平台开发教程
- 微信公众平台开发教程
- 微信公众平台开发教程
- 微信公众平台开发教程1
- 微信公众平台完整开发教程
- 微信公众平台完整开发教程
- 微信公众平台开发教程目录
- 微信公众平台开发教程
- 微信公众号开发平台教程
- 微信公众平台开发教程(一)
- 微信公众平台开发教程
- 微信公众平台快速开发框架
- 微信公众平台开发入门
- POJ 题目 2488 A Knight's Journey(dfs)
- 我的第一篇CSDN博客
- C#和JS中表示带有时区的DateTime
- linux awk命令详解
- Effective Modern C++ 笔记 第四章 Smart Pointers
- 微信公众平台入门开发教程.Net(C#)框架
- 从命令行下拨vpn从外网访问内网机器
- 进程调度策略
- 设计模式之模板方法
- JAVAEE-SESSION
- HDU--2639--Bone Collector II--01背包
- codevs1026 逃跑的拉尔夫(搜索)
- HDU 1689 Oulipo 【KMP】
- iOS开发 - 中文 iOS/Mac 开发博客列表