微信回调模式的官方文档

开发语言: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. const extern static 终极指南

    const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...

  2. Java多态性——分派

    一.基本概念 Java是一门面向对象的程序设计语言,因为Java具备面向对象的三个基本特征:封装.继承和多态.这三个特征并不是各自独立的,从一定角度上看,封装和继承几乎都是为多态而准备的.多态性主要体 ...

  3. python中IndentationError: expected an indented block错误的解决方法

    IndentationError: expected an indented block 翻译为IndentationError:预期的缩进块 解决方法:有冒号的下一行要缩进,该缩进就缩进

  4. closure

    什么是闭包?百度的答案: 闭包是指可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)."闭包&quo ...

  5. 开始mono开发

    使用mono框架开发android程序,第一步当然是构建开发环境,严格意义上说是使用 mono for android开发android程序. 参考Mono for Android安装配置破解  mo ...

  6. Unity3D新手引导开发手记

    最近开始接手新手引导的开发,记录下这块相关的心得 首先客户端是Unity,在接手前,前面的同学已经初步完成了新手引导框架的搭建,这套框架比较简单,有优点也有缺点,稍后一一点评 我们的新手引导是由一个个 ...

  7. JavaScript进阶之路——认识和使用Promise,重构你的Js代码

    一转眼,这2015年上半年就过去了,差不多一个月没有写博客了,"罪过罪过"啊~~.进入了七月份,也就意味着我们上半年苦逼的单身生活结束了,从此刻起,我们要打起十二分的精神,开始下半 ...

  8. Building the Testing Pipeline

    This essay is a part of my knowledge sharing session slides which are shared for development and qua ...

  9. CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率

    CSharpGL(30)用条件渲染(Conditional Rendering)来提升OpenGL的渲染效率 当场景中有比较复杂的模型时,条件渲染能够加速对复杂模型的渲染. 条件渲染(Conditio ...

  10. Error on line -1 of document : Premature end of file. Nested exception: Premature end of file.

    启动tomcat, 出现, ( 之前都是好好的... ) [lk ] ERROR [08-12 15:10:02] [main] org.springframework.web.context.Con ...