src/Notify/AliNotify.php
protected function verifySign(array $data)
    {
        $signType = strtoupper($data['sign_type']);
        $sign = $data['sign'];

        // 1. 剔除sign与sign_type参数
        $values = ArrayUtil::removeKeys($data, ['sign', 'sign_type']);
        //  2. 移除数组中的空值
        $values = ArrayUtil::paraFilter($values);
        // 3. 对待签名参数数组排序
        $values = ArrayUtil::arraySort($values);
        // 4. 将排序后的参数与其对应值，组合成“参数=参数值”的格式,用&字符连接起来
        $preStr = ArrayUtil::createLinkstring($values);

        if ($signType === 'RSA') {// 使用rsa方式
            $rsa = new RsaEncrypt($this->config->rsaAliPubKey);

            return $rsa->rsaVerify($preStr, $sign);
        } elseif ($signType === 'RSA2') {
            $rsa = new Rsa2Encrypt($this->config->rsaAliPubKey);

            return $rsa->rsaVerify($preStr, $sign);
        } else {
            return false;
        }
    }
protected function verifySign(array $data)
    {
        $signType = strtoupper($data['sign_type']);
        $sign = $data['sign'];

        // 1. 剔除sign与sign_type参数
        $values = ArrayUtil::removeKeys($data, ['sign', 'sign_type']);
        //  2. 移除数组中的空值
        $values = ArrayUtil::paraFilter($values);
        // 3. 对待签名参数数组排序
        $values = ArrayUtil::arraySort($values);
        // 4. 将排序后的参数与其对应值，组合成“参数=参数值”的格式,用&字符连接起来
        $preStr = ArrayUtil::createLinkstring($values);

        if ($signType === 'RSA') {// 使用rsa方式
            $rsa = new RsaEncrypt($this->config->rsaAliPubKey);

            return $rsa->rsaVerify($preStr, $sign);
        } elseif ($signType === 'RSA2') {
            $rsa = new Rsa2Encrypt($this->config->rsaAliPubKey);

            return $rsa->rsaVerify($preStr, $sign);
        } else {
            return false;
        }
    }
protected function verifySign ( array $ data ) { $ signType = strtoupper ( $ data [ 'sign_type' ] ) ; $ sign = $ data [ 'sign' ] ; // 1. 剔除sign与sign_type参数 $ values = ArrayUtil :: removeKeys ( $ data , [ 'sign' , 'sign_type' ] ) ; //  2. 移除数组中的空值 $ values = ArrayUtil :: paraFilter ( $ values ) ; // 3. 对待签名参数数组排序 $ values = ArrayUtil :: arraySort ( $ values ) ; // 4. 将排序后的参数与其对应值，组合成“参数=参数值”的格式,用&字符连接起来 $ preStr = ArrayUtil :: createLinkstring ( $ values ) ; if ( $ signType === 'RSA' ) { // 使用rsa方式 $ rsa = new RsaEncrypt ( $ this -> config -> rsaAliPubKey ) ; return $ rsa -> rsaVerify ( $ preStr , $ sign ) ; } elseif ( $ signType === 'RSA2' ) { $ rsa = new Rsa2Encrypt ( $ this -> config -> rsaAliPubKey ) ; return $ rsa -> rsaVerify ( $ preStr , $ sign ) ; } else { return false ; } }
检查支付宝数据 签名是否被篡改
@param array $data
@return boolean
@author helei
检查支付宝数据 签名是否被篡改