六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 287|回复: 0

接收消息-验证消息真实性

[复制链接]

升级  39.67%

64

主题

64

主题

64

主题

举人

Rank: 3Rank: 3

积分
319
 楼主| 发表于 2015-4-11 13:08:40 | 显示全部楼层 |阅读模式
接收消息-验证消息真实性
在开发者首次提交验证申请时,微信服务器将发送GET请求到填写的URL上,并且带上四个参数(signature、timestamp、nonce、echostr),开发者通过对签名(即signature)的效验,来判断此条消息的真实性。
此后,每次开发者接收用户消息的时候,微信也都会带上前面三个参数(signature、timestamp、nonce)访问开发者设置的URL,开发者依然通过对签名的效验判断此条消息的真实性。效验方式与首次提交验证申请一致。
参数描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
加密/校验流程如下:1. 将token、timestamp、nonce三个参数进行字典序排序2. 将三个参数字符串拼接成一个字符串进行sha1加密3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
检验signature的PHP示例代码:
   private function checkSignature()    {      $signature = $_GET["signature"];      $timestamp = $_GET["timestamp"];      $nonce = $_GET["nonce"];      $token = TOKEN;      $tmpArr = array($token, $timestamp, $nonce);      sort($tmpArr, SORT_STRING);      $tmpStr = implode( $tmpArr );      $tmpStr = sha1( $tmpStr );      if( $tmpStr == $signature ){             return true;      }else{             return false;      }    }PHP示例代码下载:下载

接收消息-验证消息真实性
摘自:http://mp.weixin.qq.com/wiki/4/2ccadaef44fe1e4b0322355c2312bfa8.html

您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表