微信訂閱號開發-1
阿新 • • 發佈:2017-11-02
span idt sta sort 否則 tab 隨機 get code
前天申請了個微信訂閱號,準備試試php開發微商場。
今天中午去bae搞了個服務器,然後就開始驗證token,到晚上才弄完。別人的服務器用著就是麻煩,更新一下代碼就要push到git上,對接口不熟悉真的是太浪費時間了。下面是終於測試成功的token驗證代碼。
1 class Main 2 { 3 private $sign; //微信加密簽名 4 private $time; //時間戳 5 private $nonce; //隨機數 6 private $echostr; //隨機字符串 7 private $token; //token8 9 public function __construct($_sign, $_time, $_nonce, $_str) 10 { 11 $this->sign = $_sign; 12 $this->time = $_time; 13 $this->nonce = $_nonce; 14 $this->echostr = $_str; 15 $this->token = ‘7542110‘; 16 } 17 18 publicfunction valid() 19 { 20 if ($this->checkSignature()) { 21 echo $this->echostr; 22 exit; 23 } else { 24 return false; 25 } 26 } 27 28 private function checkSignature() 29 { 30 $dataArr = array($this->token, $this->time, $this->nonce); 31 sort($dataArr, SORT_STRING); 32 $tmpArr = sha1(implode(‘‘, $dataArr)); 33 34 if ($tmpArr == $this->sign) { 35 return true; 36 } else { 37 return false; 38 } 39 } 40 }
短短幾十行代碼摸索了幾個小時,就因為官方給的文檔沒看仔細。順便貼上我漏看的幾條。
開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗。加密/校驗流程如下:
1)將token、timestamp、nonce三個參數進行字典序排序 2)將三個參數字符串拼接成一個字符串進行sha1加密 3)開發者獲得加密後的字符串可與signature對比,標識該請求來源於微信
|
微信訂閱號開發-1