微信开发之如何使用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中的源代码为准。

我们现在从无到有建立一个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

微信开发之如何使用Senparc.Weixin.MP SDK

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

微信开发之如何使用Senparc.Weixin.MP SDK

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

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

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

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

微信开发之如何使用Senparc.Weixin.MP SDK

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

微信开发之如何使用Senparc.Weixin.MP SDK

如果是第一次安装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

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

微信开发之如何使用Senparc.Weixin.MP SDK

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

微信开发之如何使用Senparc.Weixin.MP SDK

第四步:修改WeixinController.cs

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

usingSystem;
usingSystem.IO;
usingSystem.Web.Configuration;
usingSystem.Web.Mvc;
usingSenparc.Weixin.MP.Entities.Request;

namespaceSenparc.Weixin.MP.Sample.Controllers
{
usingSenparc.Weixin.MP.MvcExtension;
usingSenparc.Weixin.MP.Sample.CommonService.CustomMessageHandler;

publicpartialclassWeixinController:Controller
{
publicstaticreadonlystringToken="YourToken";//与微信公众账号后台的Token设置保持一致,区分大小写。
publicstaticreadonlystringEncodingAESKey="YourKey";//与微信公众账号后台的EncodingAESKey设置保持一致,区分大小写。
publicstaticreadonlystringAppId="YourAppId";//与微信公众账号后台的AppId设置保持一致,区分大小写。

///<summary>
///微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url填写如:http://weixin.senparc.com/weixin
///</summary>
[HttpGet]
[ActionName("Index")]
publicActionResultGet(PostModelpostModel,stringechostr)
{
if(CheckSignature.Check(postModel.Signature,postModel.Timestamp,postModel.Nonce,Token))
{
returnContent(echostr);//返回随机字符串则表示验证通过
}
else
{
returnContent("failed:"+postModel.Signature+","+MP.CheckSignature.GetSignature(postModel.Timestamp,postModel.Nonce,Token)+"。"+
"如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。");
}
}

///<summary>
///用户发送消息后,微信平台自动Post一个请求到这里,并等待响应XML。
///PS:此方法为简化方法,效果与OldPost一致。
///v0.8之后的版本可以结合Senparc.Weixin.MP.MvcExtension扩展包,使用WeixinResult,见MiniPost方法。
///</summary>
[HttpPost]
[ActionName("Index")]
publicActionResultPost(PostModelpostModel)
{
if(!CheckSignature.Check(postModel.Signature,postModel.Timestamp,postModel.Nonce,Token))
{
returnContent("参数错误!");
}

postModel.Token=Token;//根据自己后台的设置保持一致
postModel.EncodingAESKey=EncodingAESKey;//根据自己后台的设置保持一致
postModel.AppId=AppId;//根据自己后台的设置保持一致

//自定义MessageHandler,对微信请求的详细判断操作都在这里面。
varmessageHandler=newCustomMessageHandler(Request.InputStream,postModel);//接收消息

messageHandler.Execute();//执行微信处理过程

returnnewFixWeixinBugWeixinResult(messageHandler);//返回结果

}
}
}

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

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

以上是“微信开发之如何使用Senparc.Weixin.MP SDK ”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-03-13 15:39:01
收藏
分享
海报
0 条评论
167
上一篇:微信开发之微信企业号的配置和使用方法 下一篇:如何使用hprose开发微信小程序
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码