微信回调模式的官方文档

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

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

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

2、timestamp:时间戳

3、nonce:随机数

4、echostr:随机字符串(已加密)

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

针对上图的说明:

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

2、Token:随意字符,可点后面的“随机获取”来随机填入几个字符,也可以自己输入,我就是输入的公司英文名称

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

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

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

开始上代码

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

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

说明:

1、WXCorpID:企业号唯一的ID,可以从设置页面复制过来,如下图所示

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

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

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

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

然后,建立一个VerifyController,并添加方法:

 [HttpGet]
public void VerifyURL()
{
// 本文顶部说的四个参数,最好进行URL解码
var signature = HttpUtility.UrlDecode(HttpContext.Current.Request["msg_signature"] ?? string.Empty);
var timestamp = HttpUtility.UrlDecode(HttpContext.Current.Request["timestamp"] ?? string.Empty);
var nonce = HttpUtility.UrlDecode(HttpContext.Current.Request["nonce"] ?? string.Empty);
var echo = HttpUtility.UrlDecode(HttpContext.Current.Request["echostr"] ?? string.Empty); // 验证结束后的返回值,一定不要带引号!!!
var echoResult = string.Empty; // 微信提供的验证对象(参数为AppSetting中的三个值)
var crypt = new WXBizMsgCrypt(AppSettings.WX_CORP_TOKEN, AppSettings.WX_CORP_AES_KEY, AppSettings.WX_CORP_ID); // 微信提供的验证方法
var result = crypt.VerifyURL(signature, timestamp, nonce, echo, ref echoResult);
if (result != )
{
return;
} // 将验证后的返回值写入响应流,这样可以去掉引号!!!
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Write(echoResult);
HttpContext.Current.Response.End();
}

最后,在企业号界面上点“保存”按钮,即可验证,一般来说,就可以通过了。

微信企业号开发(1)WebAPI在回调模式中的URL验证的更多相关文章

  1. .net之微信企业号开发(三) 回调模式的接口开发

    一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信 ...

  2. 微信企业号开发入门(回调模式)java

    最近在开发微信企业号,刚接触时云里雾里的,在摸索过程中终于清晰了一点. 刚开始我以为订阅号.服务号.企业号的接口差不多,就一直用订阅号的教程来入门,后来才发现差的挺多的. 首先,微信企业号不像订阅号和 ...

  3. .net之微信企业号开发(二) 企业号人员身份认证与开发

    前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不 ...

  4. .net之微信企业号开发(一) 所使用的环境与工具以及准备工作

    前言 一直以来,从事的是.net winform的编程,虽然对移动互联这块很感兴趣,但是由于现有的工作和移动互联之间隔的太远,也就没有时间和精力好好的去研究和实现.今年年初辞职了,刚好朋友那里希望建立 ...

  5. 微信企业号开发之-如何获取secret 序列号

    最近有项目基于微信企业号开发,简单记录下如何查看企业号secert 工具/原料 微信企业号   方法/步骤  用管理员的帐号登录后,选择[设置]-[权限管理]进入管理组设置界面      在左边点击[ ...

  6. Force.com微信企业号开发系列(一) - 启用二次验证

    微信于9月份推出企业号后引起了业界不小的反响,许多企业都在思索企业号将如何影响企业的运营,从本文开始,我将详细阐述微信企业号开发的相关知识,而本文将着重介绍如何实现更高安全机制的二次验证. 申请企业体 ...

  7. 微信企业号公测开启OA红海模式

    之前就有传出消息说腾讯要出微信企业号,百度直达号的发布间接敦促了微信企业号的开发进度,这不,企业号开始公测了.以下是微信π的消息.[微信企业号已开通账号超过10万 日均消息量超过100万条] 今日,微 ...

  8. 基于Java spring框架的微信企业号开发中关于js-sdk的配置

    在调用js-sdk的第一步,我们需要引入js-sdk的js链接,然后执行wx.config,官方示例如下所示: wx.config({ debug: true, // 开启调试模式,调用的所有api的 ...

  9. 微信企业号开发:corpsecret究竟在哪块呢?

    开发微信企业号,获取ACCESS_TOKEN是必须的,但怎样获取ACCESS_TOKEN呢? 获取access_token=ACCESS_TOKEN" style="text-de ...

随机推荐

  1. Ubuntu 16.10 安装KolourPaint 4画图工具

    KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...

  2. C#异步编程(二)

    async和await结构 序 前篇博客异步编程系列(一) 已经介绍了何谓异步编程,这篇主要介绍怎么实现异步编程,主要通过C#5.0引入的async/await来实现. BeginInvoke和End ...

  3. python笔记(持续更新)

    1.编译python遇到下面的编码问题:     SyntaxError: Non-ASCII character '\xe9' in file E:\projects\learn.py on lin ...

  4. PHP之GD函数的使用

    本文讲解常用GD函数的应用 1.一个简单的图像 我们先看一个例子: <?php $w = 200; $h = 200; $img = imagecreatetruecolor($w,$h); $ ...

  5. Performance Monitor4:监控SQL Server的IO性能

    SQL Server的IO性能受到物理Disk的IO延迟和SQL Server内部执行的IO操作的影响.在监控Disk性能时,最主要的度量值(metric)是IO延迟,IO延迟是指从Applicati ...

  6. MySQL优化聊两句

    原文地址:http://www.cnblogs.com/verrion/p/mysql_optimised.html MySQL优化聊两句 MySQL不多介绍,今天聊两句该如何优化以及从哪些方面入手, ...

  7. %iowait和CPU使用率的正确认知

    resources 理解 %IOWAIT (%WIO) LINUX系统的CPU使用率和LOAD Linux Performance Observability Tools How Linux CPU ...

  8. 开源 iOS 项目分类索引大全 - 待整理

    开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...

  9. Java实现FTP文件与文件夹的上传和下载

    Java实现FTP文件与文件夹的上传和下载 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制 ...

  10. oracle常用函数及示例

    学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...