一、填写服务器配置
二、验证消息来自微信服务器
我们配置好上面的步骤提交后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示
那么 我们检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
好了,以上是服务器接入微信的流程,下面我们开始上代码。
1 public function index(){
2
3 define("TOKEN", "weixin");
4
5 if (isset($_GET['echostr'])) {
6 $this->valid();
7 }else{
8 $this->responseMsg();
9 }
10
11 }
12
13 public function valid()
14 {
15 $echoStr = $_GET["echostr"];
16 if($this->checkSignature()){
17 header('content-type:text');
18 echo $echoStr;
19 exit;
20 }
21 }
22
23 private function checkSignature()
24 {
25 $signature = $_GET["signature"];
26 $timestamp = $_GET["timestamp"];
27 $nonce = $_GET["nonce"];
28
29 $token = TOKEN;
30 $tmpArr = array($token, $timestamp, $nonce);
31 sort($tmpArr, SORT_STRING);
32 $tmpStr = implode( $tmpArr );
33 $tmpStr = sha1( $tmpStr );
34
35 if( $tmpStr == $signature ){
36 return true;
37 }else{
38 return false;
39 }
40 }