1、微信账号

要开发使用微信的平台API,就需要到微信的公众平台(https://mp.weixin.qq.com/)去注册,拥有一个服务号或者订阅号,服务号主要面对企业和组织,订阅号主要面向组织和个人,他们之间有一定的差异,根据不同的需要自己申请对应的账号即可。

为了使用一些高级的接口,你可能需要拥有服务号和高级的认证。账号注册过程,需要下载一个申请表格,打印并盖公章,另外还需要申请人拿着身份证拍照(有点怪异,呵呵),然后上传到服务器进行审核,一般很快就能获取批复。

我以个人申请了一个测试账号,能用里面的基本上所有的功能。

2、微信菜单定义

微信有两种方式的菜单定义,一种是编辑模式,一种是开发模式,两者互斥,也就是说,一旦我们采用了开发模式,就不能使用编辑模式了,反过来也一样。编辑下的菜单,其实也是可以管理的,但是微信不支持,觉得很不爽。

一般情况下,如果我们刚刚申请了微信号码,可以使用编辑菜单测试一下,根据说明编辑一些菜单试试。虽然微信说24小时内更新,不过一般很快,最快可能一两分钟就更新了,感觉还是不错的。

使用开发者模式,你需要根据微信的要求,在服务器上放置一个页面链接,使用C#开发的,可以采用***.ashx的命名方式,使用Asp.NET的一般处理程序即可,不需要使用普通的页面,或者也可以使用MVC进行对接。

使用开发模式的菜单,也就是可以调用微信API进行菜单创建的工作,对于调用微信的API(微信有很多API可以调用),我们需要知道,有几个参数的重要性,所以在开发模式打开的时候,会给你列出这些参数,如下所示。

在进入自己的订阅号后里面有一个开发工具:

之后可以申请一个开发测试账号

进入测试账号如下:

填写一下上面的url地址,做为微信响应信息的地址。

3、接入微信的链接处理

上面说了,你申请开发模式对菜单或者对其他API的调用,你需要顺利通过接入微信的测试,也就是确认你填写的链接存在并能顺利经过微信的回调测试。微信提供了一个PHP的页面处理例子,如果我们是C#开发的呢,可以搜一下就会得到答案,我的处理方式如下所示。

创建一个MVC处理程序,然后在其处理页面里面增加一个处理逻辑,如果是非POST方式的内容,就是表示微信进行的Get测试,你需要增加一些处理逻辑,把它给你的内容传回去即可,如果是POST方式的,就是微信服务器对接口消息的请求操作了,后面介绍。

/// <summary>/// 微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url/// </summary>
        [HttpGet][ActionName("Index")]public ActionResult Get(string signature, string timestamp, string nonce, string echostr){if (string.IsNullOrEmpty(SNFWeiXinProcess.TOKEN)) return Content("请先设置Token!");var ent = "";if (!BasicAPI.CheckSignature(signature, timestamp, nonce, SNFWeiXinProcess.TOKEN, out ent)){return Content("参数错误!");}return Content(echostr); //返回随机字符串则表示验证通过
}        

通用验证方法:

/// <summary>/// 检查签名是否正确:/// http://mp.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97/// </summary>/// <param name="signature"></param>/// <param name="timestamp"></param>/// <param name="nonce"></param>/// <param name="token">AccessToken</param>/// <returns>/// true: check signature success/// false: check failed, 非微信官方调用!/// </returns>public static bool CheckSignature(string signature, string timestamp, string nonce, string token, out string ent){var arr = new[] { token, timestamp, nonce }.OrderBy(z => z).ToArray();var arrString = string.Join("", arr);var sha1 = System.Security.Cryptography.SHA1.Create();var sha1Arr = sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString));StringBuilder enText = new StringBuilder();foreach (var b in sha1Arr){enText.AppendFormat("{0:x2}", b);}ent = enText.ToString();return signature == enText.ToString();}

如果是post请求就是开始进行交互了:

/// <summary>/// 用户发送消息后,微信平台自动Post一个请求到这里,并等待响应XML。/// </summary>
        [HttpPost][ActionName("Index")]public ActionResult Post(string signature, string timestamp, string nonce, string echostr){Stream requestStream = System.Web.HttpContext.Current.Request.InputStream;byte[] requestByte = new byte[requestStream.Length];requestStream.Read(requestByte, 0, (int)requestStream.Length);string requestStr = Encoding.UTF8.GetString(requestByte);SNFWeiXinProcess.Log("请求值:" + requestStr);return Content(SNFWeiXinProcess.Run(requestStr));//return Content(sss(signature, timestamp, nonce, echostr) );//return Content(ReceiveXml());
}

以上就是从申请到MVC程序连接微信账号的过程,之后会讲到怎么与微信进行交互

作者: 王春天 2015-12-24作者Blog:http://www.cnblogs.com/spring_wang
出处: http://www.cnblogs.com/spring_wang/p/5073670.html

如果觉得还不错,欢迎转载。

本系列文章列表如下:

基于SNF-快速开发平台框架的系列文章:

C#-MVC开发微信应用(8)--菜单管理的实现

C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息

C#-MVC开发微信应用(6)--用户分组信息管理

C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人

C#-MVC开发微信应用(4)--微信门户菜单的管理操作

C#-MVC开发微信应用(3)--文本消息和图文消息的应答

C#-MVC开发微信应用(2)--微信消息的处理和应答

C#-MVC开发微信应用(1)--开始使用微信接口

转载于:https://www.cnblogs.com/spring_wang/p/5073670.html

C#-MVC开发微信应用(1)--开始使用微信接口相关推荐

  1. C#开发微信门户及应用(9)-微信门户菜单管理及提交到微信服务器

    原文:C#开发微信门户及应用(9)-微信门户菜单管理及提交到微信服务器 微信公众号(包括服务号和订阅号)都可以对菜单进行自定义设置,我们为了方便管理,一般先把菜单数据在本地管理维护,需要更新的时候,把 ...

  2. C#开发微信门户及应用(8)-微信门户应用管理系统功能介绍

    原文:C#开发微信门户及应用(8)-微信门户应用管理系统功能介绍 最近对微信接口进行深入的研究,通过把底层接口一步步进行封装后,逐步升级到自动化配置.自动化应答,以及后台处理界面的优化和完善上,力求搭 ...

  3. 转载收藏之用 - 微信公众平台开发教程(三):微信公众平台开发验证

    要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方 ...

  4. C#开发微信门户及应用(24)-微信小店货架信息管理

    在前面微信小店系列篇<C#开发微信门户及应用(22)-微信小店的开发和使用>里面介绍了一些微信小店的基础知识,以及<C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试& ...

  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明

    这里所说的高级接口是指面向通过认证的服务号开通的高级功能. 高级功能大致可以分类为: 用户接口 分组接口 客服接口(有别于之前介绍的多客服) 群发接口 多媒体接口 二维码接口 模板消息接口(不是所有账 ...

  6. C#开发微信门户及应用(7)-微信多客服功能及开发集成

    原文:C#开发微信门户及应用(7)-微信多客服功能及开发集成 最近一直在弄微信的集成功能开发,发现微信给认证账户开通了一个多客服的功能,对于客户的咨询,可以切换至客服处理的方式,而且可以添加多个客服进 ...

  7. MVC开发Markdown编辑器(1)

    <!DOCTYPE html> MVC markdown MVC开发Markdown编辑器(1) 前言 安装 解析 结束语 前言 想在近段时间通过mvc开发个人博客,编辑器希望是markd ...

  8. ASP.net mvc开发中使用纯html如何创建FCKeditor编辑器的使用

    http://www.cnblogs.com/esshs/archive/2008/12/03/1346326.html FCKeditor下载路径: http://sourceforge.net/p ...

  9. C#开发微信门户及应用(25)-微信企业号的客户端管理功能

    C#开发微信门户及应用(25)-微信企业号的客户端管理功能 ref : http://www.cnblogs.com/wuhuacong/p/4442683.html 如果对这个<C#开发微信门 ...

最新文章

  1. JavaScript基础(一) 数据类型
  2. java实现迷宫算法--转
  3. UIProgressView-初识IOS
  4. 模板引擎的简单原理template
  5. java不会框架怎么办_感觉学java无从下手了,各种框架乱七八糟,感觉好乱。该怎么办!?...
  6. js 加载图片无法加载成功,提示:net::ERR_BLOCKED_BY_CLIENT
  7. 【kafka】Kafka 幂等 Producer
  8. (25):Silverlight 2 综合实例之Live Search
  9. 2010中小网站运营报告:社区论坛网站后来居上
  10. php美顏滤镜,PHP GIF / PNG True Colorize滤镜,可保留亮度和Alpha
  11. 百度api实现实时摄像头人脸识别
  12. 将多张图片合并为一张图片
  13. EPLAN小知识——如何在费斯托(FESTO)官网下载EPLAN部件
  14. python爬取微信公众号图片并生成word文档
  15. 外泌体,顶刊新宠丨一文 get 研究套路!
  16. alk In Web Security(安全世界观): Devleping a Secure Wesite
  17. 实例三十八:银行卡问题
  18. java软件工程师 英文简历_java工程师英文简历范文
  19. android sha1校验工具,【原创实用】文件校验工具V1.2.1:支持MD5 SHA1 SHA256
  20. 深入理解JVM之四:详解垃圾收集器

热门文章

  1. 软件测试需求人才越来越多
  2. 如何在 GPU 上加速数据科学
  3. mybatis入门常见错误
  4. js click 与 onclick 事件绑定,触发与解绑
  5. Github中Tag的使用
  6. 关于waf的一些随想
  7. 《leetcode》spiral-matrix-ii(构造螺旋矩阵)
  8. python 扫盲系列(1)
  9. hadoop的关键进程
  10. 装饰器 -- 函数装饰器(tornado异常响应装饰器)