1.公众号后台配置

1.1 url需要是线上地址,且url可以外部访问到 checkToken是个接口名

1.2 token自己随便写,但是要在代码中配置

1.3 aeskey兼容模式无需过多关注

2.代码部分

public function checkToken()
{

    if ($_SERVER['REQUEST_METHOD'] === 'GET') {
        $signature = $_GET["signature"]; //5e27a0b458104f8506603ccd94b1391ed4a7a4b6
        $timestamp = $_GET["timestamp"]; //1732936449
        $nonce = $_GET["nonce"];//793616711
        $echoStr = $_GET["echostr"];//2107083572574656405

        if ($this->checkSign($signature, $timestamp, $nonce)) {
            return (int)$echoStr;//一定是int
        } else {
            throw new CustomerException("错误");
        }
    }
}

public function checkSign($signature, $timestamp, $nonce)
{

    $token = config('extra.mp.token');
    if (!$token) {
        throw new CustomerException("未设置token");
    }
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode($tmpArr);
    $tmpStr = sha1($tmpStr);
    if ($tmpStr == $signature) {
        return true;
    } else {
        return false;
    }
}