Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK

简介: Senparc.Weixin.MP SDK已经涵盖了微信6.x的所有公共API。     整个项目的源代码以及已经编译好的程序集可以在这个项目中获取到:https://github.com/JeffreySu/WeiXinMPSDK    PS:由于微信API以及Senparc.Weixin SDK一直在不断升级更新,最新的代码及Demo以上面的github中的源代码为准。

    Senparc.Weixin.MP SDK已经涵盖了微信6.x的所有公共API。

    整个项目的源代码以及已经编译好的程序集可以在这个项目中获取到:https://github.com/JeffreySu/WeiXinMPSDK

   PS:由于微信API以及Senparc.Weixin SDK一直在不断升级更新,最新的代码及Demo以上面的github中的源代码为准。

    我们现在从无到有建立一个ASP.NET MVC项目,来看一下如何与微信进行对接(Webforms原理也都是一样,只不过把Controller中的Action换成.aspx页面就可以了)。

    将要演示的项目源代码也可以在开源项目中找到(因为源代码中要兼顾2个项目,有一个公用项目,所以与下面展示的结构略有不同,逻辑完全一致):

    MVC:https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Senparc.Weixin.MP.Sample

    WebForms:https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Senparc.Weixin.MP.Sample.WebForms

 

 

第一步:建立一个空的ASP.NET MVC(4.0)项目,项目名称如Senparc.Weixin.MP.Sample

 

第二步:建立一个Controller,如WeixinController.cs

 

第三步:引入Senparc.Weixin.MP.dll

    引入相关dll的方式有两种:一种是复制dll到项目某文件夹中,然后直接在项目中添加Senparc.Weixin.MP.dllSenparc.Weixin.MP.MvcExtension.dll的引用(Senparc.Weixin.MP.MvcExtension.dll只有MVC项目需要,WebForms项目可以忽略),第二种方式我们可以使用Nuget直接安装到项目中。

    Nuget项目地址:https://www.nuget.org/packages/Senparc.Weixin.MP/

    第一种方式已经足够简单,这里介绍第二种:打开菜单【工具】> 【库程序包管理器】 > 【程序包管理器控制台】,如下图:

点击后将会出现程序包管理器控制台:

    如果是第一次安装Senparc.Weixin.MP库,则在PM>后面输入命令:

Install-Package Senparc.Weixin.MP

    回车,Senparc.Weixin.MP.dll将会被自动引入到项目中。

    如果以后需要更新到最新版本,只需要使用Update-Package命令,将会自动在线更新:

Update-Package Senparc.Weixin.MP

    以上操作对MVC和WebForms项目都有效。

    如果是MVC项目,为了获得更多针对MVC的扩展功能,我们可以继续引入Senparc.Weixin.MP.MvcExtension.dll

Install-Package Senparc.Weixin.MP.MVC

命令窗口输出结果如下,表示已经安装成功:

 

    我们观察一下项目引用的程序集,这两个dll已经被引用进来了:

 

第四步:修改WeixinController.cs

    我们将下列代码加入WeixinController.cs:

 1 using System;
 2 using System.IO;
 3 using System.Web.Configuration;
 4 using System.Web.Mvc;
 5 using Senparc.Weixin.MP.Entities.Request;
 6 
 7 namespace Senparc.Weixin.MP.Sample.Controllers
 8 {
 9     using Senparc.Weixin.MP.MvcExtension;
10     using Senparc.Weixin.MP.Sample.CommonService.CustomMessageHandler;
11 
12     public partial class WeixinController : Controller
13     {
14         public static readonly string Token = "YourToken";//与微信公众账号后台的Token设置保持一致,区分大小写。
15         public static readonly string EncodingAESKey = "YourKey";//与微信公众账号后台的EncodingAESKey设置保持一致,区分大小写。
16         public static readonly string AppId = "YourAppId";//与微信公众账号后台的AppId设置保持一致,区分大小写。
17 
18         /// <summary>
19         /// 微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url填写如:http://weixin.senparc.com/weixin
20         /// </summary>
21         [HttpGet]
22         [ActionName("Index")]
23         public ActionResult Get(PostModel postModel, string echostr)
24         {
25             if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
26             {
27                 return Content(echostr); //返回随机字符串则表示验证通过
28             }
29             else
30             {
31                 return Content("failed:" + postModel.Signature + "," + MP.CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, Token) + "" +
32                     "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。");
33             }
34         }
35 
36         /// <summary>
37         /// 用户发送消息后,微信平台自动Post一个请求到这里,并等待响应XML。
38         /// PS:此方法为简化方法,效果与OldPost一致。
39         /// v0.8之后的版本可以结合Senparc.Weixin.MP.MvcExtension扩展包,使用WeixinResult,见MiniPost方法。
40         /// </summary>
41         [HttpPost]
42         [ActionName("Index")]
43         public ActionResult Post(PostModel postModel)
44         {
45             if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
46             {
47                 return Content("参数错误!");
48             }
49 
50             postModel.Token = Token;//根据自己后台的设置保持一致
51             postModel.EncodingAESKey = EncodingAESKey;//根据自己后台的设置保持一致
52             postModel.AppId = AppId;//根据自己后台的设置保持一致
53 
54             //自定义MessageHandler,对微信请求的详细判断操作都在这里面。
55             var messageHandler = new CustomMessageHandler(Request.InputStream, postModel);//接收消息
56 
57             messageHandler.Execute();//执行微信处理过程
58 
59             return new FixWeixinBugWeixinResult(messageHandler);//返回结果
60 
61         }
62     }
63 }

 

    第一个Get对应微信后台设置URL时候的请求,第二个Post用于接受么次转发过来的客户请求。

    其中CustomMessageHandler是我们自己创建的一个类,用于实现MessageHandler(有关MessageHandler的详细介绍可以看《Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler》,也可以看这里),所有处理微信消息的核心逻辑都被包含到CustomMessageHandler中执行。除了承担处理微信响应的任务,MessageHandler还实现了处理单个用户对话上下文等功能,非常方便。

 

    至此,整个Senparc.Weixin.MP SDK已经基本开发完毕,可以直接发布,并在微信后台使用“高级功能”对接了。

    例如上述代码,Url填写http://xxx/Weixin,Token填写weixin

    (如何在微信后台设置请看:Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证

 

    接下去我们会介绍如何在MessageHandler中处理具体的微信请求(文字、图片、位置、语音等等)。

 

系列教程索引

地址:http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html

  1. Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册
  2. Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者
  3. Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证
  4. Senparc.Weixin.MP SDK 微信公众平台开发教程(四):Hello World
  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
  6. Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler
  7. Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题
  8. Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明
  9. Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明
  10. Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
  11. Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明
  12. Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明
  13. Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明
  14. Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重
  15. Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密
  16. Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制
  17. Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明
  18. Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能

 

 

QQ:498977166

http://szw.cnblogs.com/
研究、探讨.NET开发
转载请注明出处和作者,谢谢!

 

微信开发深度解析:微信公众号、小程序高效开发秘籍
Senparc官方教程《微信开发深度解析:微信公众号、小程序高效开发秘籍》,耗时2年精心打造的微信开发权威教程,点击这里,购买正版

 

目录
相关文章
|
开发工具 Android开发 Windows
Android sdk下载安装配置教程
Android sdk下载安装配置教程
Android sdk下载安装配置教程
|
7月前
|
Web App开发 前端开发 JavaScript
SAP UI5 应用开发教程之一百 - 如何修改 SAP UI5 框架的源代码实现,以及使用本地部署的 SAP UI5 SDK 试读版
SAP UI5 应用开发教程之一百 - 如何修改 SAP UI5 框架的源代码实现,以及使用本地部署的 SAP UI5 SDK 试读版
64 0
|
Java API 开发工具
安卓集成云端java sdk教程
安卓项目中,集成云端java sdk,完成API调用。
444 2
安卓集成云端java sdk教程
|
数据库 云计算
微信公众平台完整开发教程 by ZTalk
微信已然成了一种生活方式:群聊、语音、视频,照片/视频/位置共享,支付和商店有了,还能通过公众账号来获取各种资源……如今的微信就是在日中天的状态(最新估值已达 600 亿),公众平台带来的影响有目共睹,所以很多人都有自己的公众号,想充分利用却无处下手,所以我们在这里给大家提供一下微信公众平台的开发教程,不谢自拿。
146 0
微信公众平台完整开发教程 by ZTalk
|
JSON Java API
阿里云SDK核心库(Core SDK)使用教程
本文档主要介绍:JAVA、Python、PHP、JavaScript、NET、Go六款开发语言Core SDK的安装及使用。
6809 0
阿里云SDK核心库(Core SDK)使用教程
|
开发框架 Unix 区块链
IOV Weave SDK开发教程【Tendermint 】
IOV Weave SDK是一个基于Tendermint共识引擎的区块链开发框架,Weave提供了很多常用功能的预置模块用于你自己的区块链,同时也支持自定义扩展。 Weave的一些亮点包括基于Merkle树的数据存储、高度灵活的扩展支持系统以及核心逻辑的定制(例如手续费机制及签名验证机制)。
3692 0
|
Java 区块链 开发工具
Fabric Java SDK 1.4简明教程
在超级账本Fabric区块链中,应用通过节点的RPC协议接口访问链码。Java应用可以使用官方提供的Fabric-sdk-java开发包来实现对链码的访问,java开发包封装了Fabric区块链的GRPC链码访问协议,有利于开发人员聚焦于业务逻辑。
2251 0
|
移动开发 JSON 网络协议
[网络篇]ESP8266-SDK教程(五)之SmartConfig、Airkiss等多种配网方式
在前面网络篇TCP通信中,我们用到了Wi-Fi功能,但是没有细讲,今天我们在这篇文章中仔细探讨一下ESP8266的Wi-Fi联网过程,以及各种方式的配网过程是如何实现的。文章中难免有疏漏或不正确的地方,如遇不正确的表述还请指出,本系列文章现在在知乎和简书同步更新。
4467 0
|
Linux 开发工具 git
[基础篇]ESP8266-SDK教程(二)之Hello World!
相信聪明伶俐的你,肯定完成了上一篇文章的环境搭建,如果你是第一次看本系列文章,可以先去看看前两篇文章,先了解一下并完成一些基础操作。 这里推荐大家安装一下Git这个灰常炒鸡好用的分布式版本管理神器,本人是非常喜欢这款由Linux之父Linus Torvalds开发的工具,可以很方便让我完成一些工作,...
2683 0
|
移动开发 网络协议 开发工具
[网络篇]ESP8266-SDK教程(三)之TCP通信Server<->Client
纳尼?昨天刚刚打印了个“Hello World!”,今天你就让我学习TCP通信?有没有搞错~哈哈,相信很多读者会很迷,其实学习这东西嘛,单单学一些比较简单的,相信没两天就没人看了,所以咱就在基础篇和网络篇穿插着去学习一下ESP8266,毕竟兴趣才是最好的老师嘛!大家以后遇到问题了,来翻文章建议大家根...
1984 0