开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,并且带上四个参数(signature、timestamp、nonce、echostr),开发者通过对签名(signature)的检验,来判断此条信息的真实性。
验证成功之后,开发者接受用户消息的时候,微信也都会带上前面三个参数(signature、timestamp、nonce)访问开发者设置的URL,开发者依然通过签名的校验判断消息的真实性。
加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信