1. 程式人生 > 其它 >微信公眾平臺 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);