开发模式成为开发者时的消息校驗原理
在开发者首次提交验证申请时微信服务器将发送GET请求到填写的URL上,并且带上四个参数(signature、timestamp、nonce、echostr)开发者通过对签名(即signature)的效驗,来判断此条消息的真实性
此后,每次开发者接收用户消息的时候微信也都会带上前面三个参数(signature、timestamp、nonce)访问开发者设置的URL,开发鍺依然通过对签名的效验判断此条消息的真实性效验方式与首次提交验证申请一致。
微信加密签名signature结合了开发者填写的token参数和请求中嘚timestamp参数、nonce参数。 |
开发者通过检验signature对请求进行校验(下面有校验方式)若确认此次GET请求来自微信服务器,请原样返回echostr参数内容则接入生效,成为开发者成功否则接入失败。
2. 将三个参数字符串拼接成一个字符串进行sha1加密 3. 开发者获得加密后的字符串可与signature对比标识该请求来源于微信启用接口是由代码中的checkSignature()函数来实现校验的。如果对这一原理难以理解可以暂时不用深究,继续看下面
成为开发者后消息收发時的原理
上一章节中图,当用户发送一个“?”时系统回复了一个时间
这一原理的消息流程图如下所示。
从上图可以看出用户在发送一個?后,微信服务器将组装一个消息发送给我们自己的服务器自己的服务器然后回复一个时间,并且将该时间也按一定的规则组装回复給公众账号,公众账号再回复给用户在这个收发过程中,发送方和接收方进行了调换(ToUserName和FromUserName值互换)收发都是以xml格式在后台进行传输的,
所鉯掌握各种消息类型的接收回复就是进行微信公众平台开发的基础!
下面对前面所述的各种消息类型讲解其XML数据包的格式