3.2.2 明确请求校验流程

对于本节要开发的请求校验程序,只需要参考“新手接入”中的“接入指南”部分。从接入指南中可以了解到,要使用公众平台的开发模式,必须先填写接口配置信息中的URL和Token,这就要求开发者拥有公网服务器资源,并且按照开发者文档完成相关程序的开发,其实这些要求已经在3.1.1节中详细介绍过了。

接入指南的第二步“验证URL有效性”部分详细说明了请求校验的作用和流程,如图3-2所示。

3.2.2 明确请求校验流程 - 图1

图3-2 请求校验的作用和流程

也就是说,我们要开发的请求校验程序必须能够处理HTTP GET请求,而且要对请求者进行身份校验,以确保请求来自微信服务器。请求校验流程如下:

1)获取HTTP GET请求中的4个参数:signature、timestamp、nonce和echostr;

2)将token、timestamp和nonce3个参数按字典序排序;

3)将排序后的3个参数按顺序拼接成一个字符串,并对该字符串进行sha1加密;

4)将sha1加密后的字符串与参数signature进行对比,如果相等则证明该请求来自微信服务器,需要原样返回参数echostr。


提示 步骤2中提到的参数token不是从GET请求中获取的,而是由开发者任意指定的。在公众平台启用开发模式时,也会要求填写token,这两处token要求保持一致。