其他分享
首页 > 其他分享> > 微信公众平台 checkSignature(官方验证消息真实性方法) 导致回复的消息丢失

微信公众平台 checkSignature(官方验证消息真实性方法) 导致回复的消息丢失

作者:互联网

修改 微信开发接口配置

class Wechat
{
    public function __construct(){
        $this->checkSignature();
    }

    private function checkSignature()
    {
        $signature = $_GET["signature"]; // 加密签名 微信服务器
        $timestamp = $_GET["timestamp"]; // 时间戳
        $nonce = $_GET["nonce"]; // 随机数
        $echostr = $_GET['echostr'];

        $token = 'zhangxuhui';
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );

        if( $tmpStr == $signature ){
            echo $echostr;
        }else{
            return false;
        }
    }

    public function index(){

    }
}

官方原代码

使用PHP开发微信公众平台, 官方提供的示例代码中的 checkSignature 函数,导致回复的消息经常性的丢失。

官方示例代码中的 checkSignature 函数:

private function checkSignature() {
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];    
            
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    
    if( $tmpStr == $signature ){
        return true;
    }else{
        return false;
    }
}

将其中的

sort($tmpArr);

修改为

sort($tmpArr, SORT_STRING);

  

标签:nonce,GET,checkSignature,微信,tmpArr,消息,timestamp,tmpStr
来源: https://www.cnblogs.com/mangofish/p/16068498.html