微信开发框架.net

2014-04-22 00:12:00 weixin_34210740 阅读数 72

一、序言

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

2014-04-16 17:42:02 hemeng 阅读数 5352

http://download.csdn.net/detail/hemeng/7203149


2013-08-12 14:42:05 qp23401 阅读数 5948

         

这是一个基于java的简易微信开发框架,因本人水平有限,大神勿喷,多多指点。

下载地址:http://download.csdn.net/detail/qp23401/5914683

搭建环境

导入weixin.jar 以及dom4j.1.6.1.jar xstream-1.3.1.jar两个依赖包

http://download.csdn.net/detail/qp23401/5914573


HelloWorld例子:

当接收到文本消息时,总是回复HelloWorld

1)      新建一个TextmessageService 实现MessageService接口


2)      新建一个Main Servlet 代码如下图 ,这样就大功告成了

注:填写自己的Token(要与微信公众平台上填写的Token一致)



2019-08-16 11:06:30 jinglell 阅读数 1199

  微信小程序+.NET(一) 开发环境及其他准备

  时间:2019.08.16
  开发环境:

(1)微信小程序:
微信开发者工具 Stable v1.02.1907300
version: “7.0.4”(微信版本)
SDKVersion: “2.7.7”(客户端基础库版本)
(2)ASP.NET
VS 2017(Microsoft Visual Studio Enterprise 2017 15.9.14)
.NET Framework 4.6.1
(3)IIS
IIS 10.0(Internet Information Services 10.0.17134.1)
(4)数据库
SQL SERVER 2012

  其他及项目介绍

(1)科大讯飞
1.注册账号:https://www.xfyun.cn/
2.注册应用
3.进入应用控制台:https://console.xfyun.cn/services/
4.在控制台进入链接下载你自己的相应SDK
5.官方文档中心:https://www.xfyun.cn/doc/
6.msc.dll API:http://mscdoc.xfyun.cn/windows/api/iFlytekMSCReferenceManual/files.html
7.讯飞开放平台:http://bbs.xfyun.cn/portal.php
(我发出来的.NET后台里用到科大讯飞时,要修改成你自己的appID;当用到msc.dll时,要把我的lib替换你自己下载的SDK里的相应lib文件,不然可能会有问题,另外,若是我这篇文章已经太久,里面的一些方法可能就失效了,这时记得利用好官方资料不要直接盲目从网上找,查找文档中心,以及msc.dll API文档,最后记得从文档中心开放平台找前辈分享的DEMO,特别是C#,这方面的DEMO很少,当然这些DEMO需要你自己根据自己情况修改适配自己的开发需求)
(2)项目参考:
科大讯飞APP “听书神器”,各大手机应用商城应该都有下载
(3)小说爬取:
我在听书神器看书的网站https://m.88dush.com/book/78738-53309771/,这个网站源码是gbk编码,这个编码问题之后会说到,然后是广告,“听书神器”是直接嵌入百度搜索页面,所以搜索到的小说网站基本都会有广告,这个网站是88读书的移动版,在手机和PC浏览器访问没有广告,但是在小程序里章节内容页会有顶部广告插入,我对小程序的误点垃圾广告操作做了拦截处理,对于这个问题我在后面也会说到
(4)百度地图
类似科大讯飞使用流程,注册创建应用,下载SDK,不同的是使用时要自己修改下载下来的SDK里的appID,科大讯飞的demo下载好时里面已经给你修改好了,有时可以直接拿过来使用(比如Java版本)
(5)BUGs&TIPs
1.我的项目很粗糙,而且为了方便我把我做过的所有DEMO直接写在一个大Program里,这种习惯不太好,当然我觉得这样适合初学,方便总结
2.拿来用的话记得配置两个appID,微信和科大讯飞
3.界面很丑,不会设计只会复现和修改
4.现在小程序的语音功能和小说功能是分开的(text2audio和reader),以后有时间会整合为一个完整项目
5.目前只能PC本地调试,未部署服务器
6.把.NET后台的IIS配置好之后,记得将小程序右上角“详情”里的不校验非法域名选项勾选
7.除了勾选不校验选项还可以尝试内网穿透,这个我没找到合适的ngrok工具,官网版本显示请求超时,室友分享给我的他们实训用过的ngrok我还没试过,我会和抽时间把我在官网下载的版本一起发到下载里,有需要的自取
8.如上文我最后没有接入百度搜索,我直接接入了88读书的小说搜索页,没有针对不同网站Url自动爬取文章的思路
9.我的.NET爬虫没有进行我之前的Python爬虫那样的伪装,针对安全性高的网站可能会被封IP
10.科大讯飞语音免费开放接口每天有500次的限额
11.待续。。

  项目展示

1.前台-小程序端
博客链接:
微信小程序+.NET(二) 前台-小程序端展示
https://blog.csdn.net/jinglell/article/details/99673739
2.后台接口-.NET+IIS
博客链接:
微信小程序+.NET(三) 后台接口-.NET+IIS端展示
https://blog.csdn.net/jinglell/article/details/99673915

2019-03-19 07:00:00 sD7O95O 阅读数 1062
640?wx_fmt=png

.NET Core 是一个开源通用的开发框架,源码由微软官方和社区共同支持。支持跨平台,即支持在 Window,macOS,Linux 等系统上的开发和部署,并且可以在硬件设备,云服务,和嵌入式/物联网方案中进行使用。


而微信作为时下最热门的社交和开发平台,给我们的开发、运营、营销都带来了很多的机遇和挑战,那么如何使用 .Net Core 开发微信跨平台应用呢?


使用.Net Core 开发微信跨平台应用

3 月 24 日(本周日),开源项目 Senparc.Weixin SDK 贡献者、资深软件开发工程师——伏允坤,将做客由开源中国主办的 2019 OSC 源创会·苏州站,在 东方之门“秋裤楼” 为我们介绍 .Net Core 通用开发平台和微信开发生态以及如何基于.net core 快速开发跨平台公众号、小程序应用。

640?wx_fmt=png

伏允坤

软件工程师

Senparc.Weixin SDK贡献者

微信作为时下最热门的社交和开发平台,给我们的开发、运营、营销都带来了很多的机遇和挑战,本次主题将会为大家介绍.Net Core 通用开发平台和微信开发生态以及如何基于.net core 快速开发跨平台公众号、小程序应用。

640?wx_fmt=png

扫描二维码,深入了解使用.Net Core 开发微信跨平台应用

还有 5 位大咖与你交流开源技术


限时专享,免费参会

为了回馈公众号粉丝的支持,前 20 位在报名页面的 “备注” 栏填写邀请码 “OSCnet” 的小伙伴即可免费参会~(嘘,一般人我不告诉他)


640?wx_fmt=jpeg


别着急,还有四位大牛等你来约!

↓↓↓

本站大牛

640?wx_fmt=png

吴水永

人人车大数据平台负责人

DevOps开源项目walle-web.io作者

如何基于K8s构建DevOps体系,新的适应大厂百人团队的git模式,团队成员多租房的分空间、项目权限管理。基于开源方案开箱落地CI:开发与gitlab如何高效优雅地持续集成;CD:实现多空间多环境多服务器持续发布、灰度发布。打造可视化管理服务器、项目、实时部署日志、一键回滚的运维体系,大屏Dashboard展示DevOps数据。

640?wx_fmt=png

杨松

安硕数科研发部负责人

PDMan作者

介绍开源多操作系统的数据库建模工具PDMan的诞生背景、设计思想、以及在企业应用中的使用。PDMan 是一款开源免费的数据库模型建模工具,是PowerDesigner之外另一种更好的选择。支持Windows,Mac,Linux等操作系统,具有上手容易,使用简单的特点。PDMan推出不到半年,star数量突破1000,很受用户欢迎,平均每天使用的团队数超过400个。

640?wx_fmt=png

史伯平

共链社区发起人

从社会需求谈区块链技术的诞生,以及这门技术如何衍生成为一个复杂的行业,及次酿成大泡沫。从技术、应用的角度谈区块链技术和行业的历史、现在与未来,阐释区块链技术和行业的发展脉络。通过分析技术和行业的内在动力,指出区块链技术和行业发展的困境和未来的机会。为有志于在区块链行业发展的开发者提供经验借鉴。

640?wx_fmt=png

谢扬

SoLiD 中文网发起人

SoLiD 是一个令人兴奋的新项目,由万维网发明者 Tim Berners-Lee 爵士启动。 该项目旨在从根本上改变 Web 应用程序的中心化趋势, 它将真正地让数据所有权属于用户,并改善隐私问题。本次主题将会从 Tim 的理念出发,逐层介绍 SoLiD 项目的底层技术。


640?wx_fmt=png

OSC苏州源创会活动报名中

时间:2019-03-24   14:00-18:00

地点:江苏 苏州 东方之门北楼2001

费用:50元/人(现场缴费,女士,开源软件作者,积分50以上者均免费,邀请满三个好友报名者免费,学生凭学生证免费)

报名地址:

640?wx_fmt=png

活动小贴士

活动合办/协办、会务合作、志愿者申请请联系@新垣吉衣OSC (QQ&微信:502187416),志愿者免费参会,会后还将有精美礼品相送哟~

想成为本场源创会的合作伙伴,可联系@举个栗子OSC  (QQ&微信:1344816073);媒体/社区合作,可联系@小鱼丁(QQ&微信:976473298)

持交通银行程序员主题卡,即可免费参加源创会

下载OSC客户端用户可现场扫描二维码签到和抽奖:

640?wx_fmt=png


为了方便大家线上交流,本次源创会提供微信群,报名的小伙伴可扫描以下二维码,添加好友,备注苏州源创会,拉你进群!

640?wx_fmt=png