微信公众平台的服务器配置(php开发示例)

服务器配置的作用

微信公众平台的服务器配置启用后可以成为开发者,微信会将事件消息发送到开发者填写的url地址中,开发者可以依据自身业务逻辑进行响应,更好的开发管理微信公众平台。例如配置底部菜单,接收事件推送,客服消息等等。

微信公众平台的服务器配置(php开发示例)_第1张图片
如果开发者启用了服务器配置,微信公众平台的一些功能会受到影响,例如自动回复和自定义菜单会失效。

实现逻辑

开发者按照微信提示提交信息后,微信服务器将发送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

你可能感兴趣的:(微信公众号开发,php)