微信企业号开发(1)WebAPI在回调模式中的URL验证

微信回调模式的官方文档php

开发语言:C#(微信相关功能代码能够从官网下载api

首先,必需要明确几个参数,这几个参数在微信企业号中,每次调用都会使用到。微信

一、msg_signature:签名(已加密,加密方法可从官网下载加密

二、timestamp:时间戳spa

三、nonce:随机数code

四、echostr:随机字符串(已加密)对象

注:前面3个参数每次都会自动带上,属于必填项,第4个参数只有在首次校验URL时(意思就是点下图中的“保存”按钮时,可能不许确,先这样理解吧)才会带上。blog

针对上图的说明:开发

一、URL:任意网址(推荐使用二级域名)文档

二、Token:随意字符,可点后面的“随机获取”来随机填入几个字符,也能够本身输入,我就是输入的公司英文名称

三、EncodingAESKey:有必定的格式要求,懒得输的能够点后面的“随机获取”,我就是使用这一项

四、在点击上图的“保存”按钮时,页面会根据图中框内输入的内容,自动生成最终请求的URL地址,同时,会自动附带上本文开始时说的那四个参数,并向该URL地址发起GET请求

五、只有上图的“保存”按钮执行成功后,才会看到以下图所示:

开始上代码

首先,在Web.config中添加几个AppSetting:

1 <add key="WXCorpID" value="从配置页面获取" />
2 <add key="WXCorpToken" value="自行输入" />
3 <add key="WXCorpAESKey" value="自行输入" />

说明:

一、WXCorpID:企业号惟一的ID,能够从设置页面复制过来,以下图所示

二、WXCorpToken:必定要和配置界面的Token框内输入的一致

三、WXCorpAESKey:必定要和配置界面的EncodingAESKey框内输入的一致

其次,配置一个WebAPI的路径:

1 config.Routes.MapHttpRoute(name: "VerifyApi", routeTemplate: "api", defaults: new { controller = "Verify" });

而后,创建一个VerifyController,并添加方法:

 1 [HttpGet]
 2 public void VerifyURL()
 3 {
 4     // 本文顶部说的四个参数,最好进行URL解码
 5     var signature = HttpUtility.UrlDecode(HttpContext.Current.Request["msg_signature"] ?? string.Empty);
 6     var timestamp = HttpUtility.UrlDecode(HttpContext.Current.Request["timestamp"] ?? string.Empty);
 7     var nonce = HttpUtility.UrlDecode(HttpContext.Current.Request["nonce"] ?? string.Empty);
 8     var echo = HttpUtility.UrlDecode(HttpContext.Current.Request["echostr"] ?? string.Empty);
 9 
10     // 验证结束后的返回值,必定不要带引号!!!
11     var echoResult = string.Empty;
12 
13     // 微信提供的验证对象(参数为AppSetting中的三个值)
14     var crypt = new WXBizMsgCrypt(AppSettings.WX_CORP_TOKEN, AppSettings.WX_CORP_AES_KEY, AppSettings.WX_CORP_ID);
15 
16     // 微信提供的验证方法
17     var result = crypt.VerifyURL(signature, timestamp, nonce, echo, ref echoResult);
18     if (result != 0)
19     {
20         return;
21     }
22 
23     // 将验证后的返回值写入响应流,这样能够去掉引号!!!
24     HttpContext.Current.Response.Clear();
25     HttpContext.Current.Response.Write(echoResult);
26     HttpContext.Current.Response.End();
27 }

最后,在企业号界面上点“保存”按钮,便可验证,通常来讲,就能够经过了。

相关文章
相关标签/搜索