微信企业号开发(1)WebAPI在回调模式中的URL验证
微信回调模式的官方文档。
开发语言: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验证的更多相关文章
- .net之微信企业号开发(三) 回调模式的接口开发
一.前言 微信企业号应用中,有两种模式,一种是普通模式,这种模式只能进行简单网页链接,以及发送固定的消息.为了可以让企业号的用户更好的与应用交互,微信提供了回调模式,这种回调模式的可以将用户发送给微信 ...
- 微信企业号开发入门(回调模式)java
最近在开发微信企业号,刚接触时云里雾里的,在摸索过程中终于清晰了一点. 刚开始我以为订阅号.服务号.企业号的接口差不多,就一直用订阅号的教程来入门,后来才发现差的挺多的. 首先,微信企业号不像订阅号和 ...
- .net之微信企业号开发(二) 企业号人员身份认证与开发
前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不 ...
- .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
前言 一直以来,从事的是.net winform的编程,虽然对移动互联这块很感兴趣,但是由于现有的工作和移动互联之间隔的太远,也就没有时间和精力好好的去研究和实现.今年年初辞职了,刚好朋友那里希望建立 ...
- 微信企业号开发之-如何获取secret 序列号
最近有项目基于微信企业号开发,简单记录下如何查看企业号secert 工具/原料 微信企业号 方法/步骤 用管理员的帐号登录后,选择[设置]-[权限管理]进入管理组设置界面 在左边点击[ ...
- Force.com微信企业号开发系列(一) - 启用二次验证
微信于9月份推出企业号后引起了业界不小的反响,许多企业都在思索企业号将如何影响企业的运营,从本文开始,我将详细阐述微信企业号开发的相关知识,而本文将着重介绍如何实现更高安全机制的二次验证. 申请企业体 ...
- 微信企业号公测开启OA红海模式
之前就有传出消息说腾讯要出微信企业号,百度直达号的发布间接敦促了微信企业号的开发进度,这不,企业号开始公测了.以下是微信π的消息.[微信企业号已开通账号超过10万 日均消息量超过100万条] 今日,微 ...
- 基于Java spring框架的微信企业号开发中关于js-sdk的配置
在调用js-sdk的第一步,我们需要引入js-sdk的js链接,然后执行wx.config,官方示例如下所示: wx.config({ debug: true, // 开启调试模式,调用的所有api的 ...
- 微信企业号开发:corpsecret究竟在哪块呢?
开发微信企业号,获取ACCESS_TOKEN是必须的,但怎样获取ACCESS_TOKEN呢? 获取access_token=ACCESS_TOKEN" style="text-de ...
随机推荐
- 【Win 10 应用开发】在App所在的进程中执行后台任务
在以往版本中,后台任务都是以独立的专用进程来运行,因此,定义后台任务代码的类型都要位于 Windows 运行时组件项目中. 不过,在14393中,SDK 作了相应的扩展,不仅支持以前的独立进程中运行后 ...
- clr 元数据
clr相关编译器编译生成的托管模块由四部分组成:PE32或32+头.clr头.元数据.IL代码. 元数据和IL代码完全对应,保持一致(:>)性. 元数据有很多用途: VS的智能感知,自动补全: ...
- [APUE]文件和目录(中)
一.link.unlink.remove和rename 一个文件可以有多个目录项指向其i节点.使用link函数可以创建一个指向现存文件连接 #include <unistd.h> int ...
- J a v a 的“多重继承”
接口只是比抽象类“更纯”的一种形式.它的用途并不止那些.由于接口根本没有具体的实施细节——也就是说,没有与存储空间与“接口”关联在一起——所以没有任何办法可以防止多个接口合并到一起.这一点是至关重要的 ...
- Spring获取ApplicationContext
在Spring+Struts+Hibernate中,有时需要使用到Spring上下文.项目启动时,会自动根据applicationContext配置文件初始化上下文,可以使用ApplicationCo ...
- (翻译)FIFO In Hardware
翻译一些自己觉得有价值的材料,工作中碰到英语大多数是读,基本没有写或者翻的,翻得不好不到位的敬请指摘. 同时也附原文以供参考. http://electronics.stackexchange.com ...
- 【工具使用】mac电脑使用技巧
本文地址 分享提纲: 1. mac命令行和finder的交互 2. 一些mac的插件 3. 一些开发的配置 1.mac命令行和findder交互 1)命令行中打开当前文件夹: o ...
- MySQL ALTER命令
当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 开始本文教程前让我们先创建一张表,表名为:testalter_tbl. root@host# mysql -u r ...
- 【一起学OpenFOAM】03 OpenFOAM基本使用流程
OpenFOAM初学者常常对于软件的使用流程感到很迷惑,与其他的具有GUI的CFD软件不同,OpenFOAM的所有操作均为基于文本操作,譬如说里面各种计算模型.计算参数.流程控制参数等,均为通过修改对 ...
- hadoop 2.4 遇到的问题
不管出什么问题,首先查看日志. 在启动过hadoop的前提下,打开浏览器,输入http://localhost:50070 点击Utilities下的logs,选择hadoop-root-datano ...