要使“填写服务器配置”页面中填写的URL能正常通过微信服务器的校验,需要按《微信公众平台开发者文档》中“接入指南”的要求,编写接口校验方法。
开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数,如表3-1所示。
表3-1
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者,否则接入失败。
加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典排序。
2. 将三个参数字符串拼接成一个字符串进行sha1加密。
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
在C#中,可以使用LINQ来对参数进行字典排序,代码如下:
将三个参数字符串进行拼接:
sha1加密可以使用.NET Framework提供的System.Security.Cryptography.SHA1类来实现:
sha1加密后的结果是一个byte数组,因此,还需要将加密结果转换为字符串: