微信订阅号开发-1

Posted Anselst

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信订阅号开发-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的主要内容,如果未能解决你的问题,请参考以下文章

微信订阅号开发,获取openid的方式

微信公众平台开发教程-微信公众号订阅号(服务号)申请步骤

微信订阅号消息回复测试

微信公众平台开发教程-关于申请微信公众号订阅号(服务号)的材料和流程

怎么制作微信订阅号?

教你3分钟快速开发微信公众号[订阅号][服务号]