服务器配置的作用
微信公众平台的服务器配置启用后可以成为开发者,微信会将事件消息发送到开发者填写的url地址中,开发者可以依据自身业务逻辑进行响应,更好的开发管理微信公众平台。例如配置底部菜单,接收事件推送,客服消息等等。
如果开发者启用了服务器配置,微信公众平台的一些功能会受到影响,例如自动回复和自定义菜单会失效。
实现逻辑
开发者按照微信提示提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,参数详解:
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串
开发着业务逻辑
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
代码逻辑
//配置服务器
public function serverMenu(){
if(!isset($_GET["echostr"])){
$this->responseMsg(); //接收事件推送
}else{
$this->valid(); //配置微信服务器
}
}
//微信请求本地
private function valid(){
$signature = $this->request->param('signature');
$timestamp = $this->request->param('timestamp');
$nonce = $this->request->param('nonce');
$token = '925010178'; //开发者自己填写的token
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
echo $_GET["echostr"];
}else{
return false;
}
}
附上连接
微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319