成為微信開發者的第一步——微信公眾平台接入
第一步:填寫服務器配置
在開發->基本配置處啟用服務器配置。修改配置
其中URL是開發者用來接收微信消息和事件的接口URL。
Token可由開發者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進行比對,從而驗證安全性)。
EncodingAESKey由開發者手動填寫或隨機生成,將用作消息體加解密密鑰。
點擊提交
第二步:驗證服務器地址的有效性
開發者提交信息后,微信服務器將發送GET請求到填寫的服務器地址URL上,GET請求攜帶四個參數:
signature ------ 微信加密簽名,signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。
timestamp ------時間戳
nonce ------ 隨機數
echostr ------ 隨機字符串
開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數內容,則接入生效,成為開發者成功,否則接入失敗。
//獲取接口Token值和UID $memberModel = D('Member'); $userinfo = $memberModel -> getWechatInfo(WID); //獲取用戶的微信賬號信息 $weixinLogic = D('Weixin','Logic'); $weixin = $weixinLogic -> detail(WID); $weixin = new ThinkWechat($userinfo['token']);
在微信公共函數里面,檢驗signature:
if(IS_GET){ $this->auth($token) || die('token信息錯誤'); exit($_GET['echostr']); } /** * 對數據進行簽名認證,確保是微信發送的數據 * @param string $token 微信開放平台設置的TOKEN * @return boolean true-簽名正確,false-簽名錯誤 */ private function auth($token){ /* 獲取數據 */ $data = array($_GET['timestamp'], $_GET['nonce'], $token); $sign = $_GET['signature']; /* 對數據進行字典排序 */ sort($data, SORT_STRING); /* 生成簽名 */ $signature = sha1(implode($data)); return $signature === $sign; }
注意:此后用戶每次向公眾號發送消息、或者產生自定義菜單點擊事件時,開發者填寫的服務器配置URL將得到微信服務器推送過來的消息和事件,然后開發者可以依據自身業務邏輯進行響應,例如回復消息等。
© 著作權歸作者所有