微信公眾平臺 checkSignature(官方驗證訊息真實性方法) 導致回覆的訊息丟失
阿新 • • 發佈:2022-03-28
修改 微信開發介面配置
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);