微信订阅号开发-1

  前天申请了个微信订阅号,准备试试php开发微商场。


  今天中午去bae搞了个服务器,然后就开始验证token,到晚上才弄完。别人的服务器用着就是麻烦,更新一下代码就要push到git上,对接口不熟悉真的是太浪费时间了。下面是终于测试成功的token验证代码。

 1 class Main 
 2 {
 3     private $sign;  //微信加密签名
 4     private $time;  //时间戳
 5     private $nonce;  //随机数
 6     private $echostr;  //随机字符串
 7     private $token;  //token
 8     
 9     public function __construct($_sign, $_time, $_nonce, $_str)
10     {
11         $this->sign = $_sign;
12         $this->time = $_time;
13         $this->nonce = $_nonce;
14         $this->echostr = $_str;
15         $this->token = ‘7542110‘;
16     }
17     
18     public function valid()
19     {
20         if ($this->checkSignature()) {
21             echo $this->echostr;
22             exit;
23         } else {
24             return false;
25         }
26     }
27     
28     private function checkSignature()
29     {
30         $dataArr = array($this->token, $this->time, $this->nonce);
31         sort($dataArr, SORT_STRING);
32         $tmpArr = sha1(implode(‘‘, $dataArr));
33         
34         if ($tmpArr == $this->sign) {
35             return true;
36         } else {
37             return false;
38         }
39     }
40 }

  短短几十行代码摸索了几个小时,就因为官方给的文档没看仔细。顺便贴上我漏看的几条。

  开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

1)将token、timestamp、nonce三个参数进行字典序排序

2)将三个参数字符串拼接成一个字符串进行sha1加密

3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

 

微信订阅号开发-1

上一篇:kubernetes部署Ingress访问代理与负载均衡器


下一篇:微信小程序开发入门