基于PHP的微信token验证

这是对 微信公众平台技术文档>开始开发>接入指南 网址https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319里面说得不够明白的地方进一步详细说明一下,亲测成功了。

申请完公众号,进入公众号,开发>基本配置>服务器配置

官方文档给出的实例不完全正确,有的变量没有$,而且组成数组时候,没有把token放进去

下面用的thinkphp版本为5.1.12

namespace app\wechat\controller;
use think\Controller;
class Index extends Controller
{
    public function index(){
        $signature = $this->request->param('signature');
        $timestamp = $this->request->param('timestamp');
        $nonce = $this->request->param('nonce');
        $echostr = $this->request->param('echostr');
        if($this->checkSignature($signature,$timestamp,$nonce)){
            echo $echostr;die;//这里特别注意,如果不用die结束程序会token验证失败
        }else{
            echo false;
        }
    }
    private function checkSignature($signature,$timestamp,$nonce)
    {
        $token = "";//这里写你在微信公众平台里面填写的token
        $tmpArr = array($token,$timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );
        if($tmpStr == $signature){
            return true;
        }else{
            return false;
        }
    }
}