知识点

相关文章

更多

最近更新

更多

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

2019-03-02 00:53|来源: 网路

 

    Senparc.Weixin.MP SDK已经涵盖了微信5.0的所有公共API,以及2013年10月29日升级之后大部分实用的接口。

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

 

    我们现在从无到有建立一个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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.Mvc;
using  Senparc.Weixin.MP.MvcExtension;
using  Senparc.Weixin.MP.Sample.Weixin;
 
namespace  Senparc.Weixin.MP.Sample.Controllers
{
     public  class  WeixinController : Controller
     {
         private  const  string  Token = "weixin" ; //对应微信后台设置的Token,建议设置地复杂一些
 
         /// <summary>
         /// 微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url填写如:http://weixin.senparc.com/weixin
         /// </summary>
         [HttpGet]
         [ActionName( "Index" )]
         public  ActionResult Get( string  signature, string  timestamp, string  nonce, string  echostr)
         {
             if  (CheckSignature.Check(signature, timestamp, nonce, Token))
             {
                 return  Content(echostr); //返回随机字符串则表示验证通过
             }
             else
             {
                 return  Content( "failed:"  + signature + ","  + CheckSignature.GetSignature(timestamp, nonce, Token));
             }
         }
 
         [HttpPost]
         [ActionName( "Index" )]
         public  ActionResult Post( string  signature, string  timestamp, string  nonce, string  echostr)
         {
             if  (!CheckSignature.Check(signature, timestamp, nonce, Token))
             {
                 return  Content( "参数错误!" );
             }
 
             var  messageHandler = new  CustomMessageHandler(Request.InputStream); //接收消息
 
             messageHandler.Execute(); //执行微信处理过程
 
             return  new  WeixinResult(messageHandler); //返回结果
         }
     }
}

    第一个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/tianxiang2046/p/3574957.html

     QQ互联,参考网站:http://www.dandanxiaoshuo.com/


转自:http://www.cnblogs.com/tianxiang2046/p/3574972

相关问答

更多
  • 1. 一般个人是用不着开发工具包的,都是外包给二次开发公司如微盟等。因为个人实力毕竟有限,如果想做像样的产品还是得请专业的搭公司来。 2. 如果你是技术大牛,那就来微盟吧,这个市场缺人才,你懂的,有推荐 费用 3. 望采纳
  • 怎么使用 Java SDK[2023-11-25]

    1、在你的Java工程中添加该SDK中dist目录下的jar库,并添加到你的编译路径中。 2、在你的代码中import相应的包名。 3、非web应用请修改和查阅MainDemo.java,web应用请修改config.jsp,查阅index.jsp, 获得包括oauth登录请求及其它功能请求的方法接口。 4、commons包里面的java类实现了目前腾讯微博开发平台的所有接口,除第一个参数是oauth对象外。 其他都和开发平台的api文档一致,类名和方法名亦和api一致。 比如获取主页时间线的api是: h ...
  • cognos SDK[2022-01-30]

    我是想学PHP 不知道怎么样? ==================== 个人推荐你学ASP.NET,JAVA也可以看看。这绝对是趋势!好像PHP替代原始的CGI编程一样。下面具体回答: 而且现在都有PHP 5了! ==================== 目前来看,大学里教的都是.NET和JAVA,这也证明了主流语言是什么。上学的时候,我们学Java, .NET但我发现诸如Yahoo,Facebook,味及败科这样的大型网站无疑都采用Linux+PHP, 百度也是。他们虽然也有自己的 服务器,不过相信PH ...
  • 首字母缩写词SDK代表软件开发工具包。 术语软件开发工具包通常用于指平台供应商提供的一组资源,用于在该特定平台上进行开发。 SDK的内容非常依赖于为开发人员成功构建该平台的软件所需的东西。 通常,SDK将包括: API和/或体系结构: 这通常包括诸如类和方法文档以及代码示例等信息以演示每种方法或类的使用。 库文件 任何对使用该平台的开发人员来说都是必需的或有帮助的二进制文件或源文件。 例如,Windows SDK包含windows.h,它是Win32开发的主要头文件。 开发工具和实用程序 平台供应商为帮助开 ...
  • 这是源文件。 这也将使您的IDE能够在您想要查看它时显示源代码(例如,在调试时),它还包含javadoc。 It's the source files. This will also enable your IDE to show you the source code when you want to see it (e.g. while debugging), also it contains the javadoc.
  • 把它放在.h中的interface块中。 AVAudioPlayer* audioPlayer; 您需要检查实例并将其释放。 Put this in your interface block in the .h. AVAudioPlayer* audioPlayer; You will need to check for an instance and release it as well.
  • 完整安装程序: 32位: http : //amd-dev.wpengine.netdna-cdn.com/app-sdk/installers/APPSDKInstaller/3.0.130.135-GA/full/AMD-APP-SDKInstaller-v3.0.130.135-GA- Windows的F-x86.exe程序 64位: http : //amd-dev.wpengine.netdna-cdn.com/app-sdk/installers/APPSDKInstaller/3.0.130. ...
  • 您应该使用-o test.h264因为它输出h264比特流。 使用ffplay test.h264进行查看。 You should use -o test.h264 because it outputs a h264 bitstream. Use ffplay test.h264 to view it.
  • SDK Tools是Android SDK的可下载组件。 它包括Android SDK的完整开发和调试工具,如模拟器,sdcard,sqlite和apk构建器等。其中Platform-tools用于支持当前Android平台的功能,包括adb,它就像一座桥梁与模拟器或设备通信。 SDK Tools is a downloadable component for the Android SDK. It includes the complete set of development and debugging ...
  • 将SDK放在Windows SDK的include和lib搜索路径之前,或者在Visual C ++ 2010的情况下,保留继承的值,但用IE SDK路径替换默认值。 put the SDK ahead of Windows SDK in include and lib search path or in case of Visual C++ 2010, keep the inherited values but replace the default values with the IE SDK path ...