讀古今文學網 > 微信公眾平台開發:從零基礎到ThinkPHP5高性能框架實踐 > 20.1.1 啟用回調模式 >

20.1.1 啟用回調模式

企業號應用有兩種模式:普通模式和回調模式。

普通模式下,開發者可以通過簡單的界面編輯,來設置自動回復以及底部的自定義菜單等功能。該模式類似於訂閱號或服務號的編輯模式。

回調模式下,開發者可通過企業號提供的接口,實現設置自定義菜單、獲取成員狀態通知,以及微信消息轉發等功能。回調模式類似於訂閱號或服務號的開發者接入模式。

開啟應用的回調模式時,企業號會要求你填寫應用的URL、Token、EncodingAESKey等3個參數。

URL是企業應用接收企業號推送請求的訪問協議和地址,支持HTTP或HTTPS協議。

Token可由企業任意填寫,用於生成簽名。

EncodingAESKey用於消息體的加密,是AES密鑰的Base64編碼。

當提交以上信息時,企業號將發送GET請求到填寫的URL上,GET請求攜帶4個參數,企業在獲取時需要做urldecode處理,否則會驗證不成功。參數說明如表20-1所示。

表20-1 GET參數說明

企業號通過參數msg_signature對請求進行校驗,如果確認此次GET請求來自企業號,那麼企業號應該對echostr參數解密並原樣返回echostr明文(不能加引號,不能帶bom頭,不能帶換行符),則接入驗證生效,回調模式才能開啟。

後續回調企業號接口時都會在請求URL中帶上以上參數(echostr除外),校驗方式與首次驗證URL一致。

企業號應用啟用回調模式的代碼如下。


 1 require_once("WXBizMsgCrypt.php");
 2 $encodingAesKey = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFG";
 3 $token = "FangBei";
 4 $corpId = "wx82e2c31215d9a5a7";
 5 
 6 class wechatCallbackapiTest extends WXBizMsgCrypt
 7 {
 8     // 驗證URL有效
 9     public function valid
10     {
11         $sVerifyMsgSig = $_GET["msg_signature"];
12         $sVerifyTimeStamp = $_GET["timestamp"];
13         $sVerifyNonce = $_GET["nonce"];
14         $sVerifyEchoStr = $_GET["echostr"];
15         $sEchoStr = "";
16         $errCode = $this->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, 
           $sVerifyEchoStr, $sEchoStr);
17         if ($errCode == 0) {
18             // 驗證URL成功,將sEchoStr返回
19             echo $sEchoStr;
20         }
21     }
22 }
23 
24 $wechatObj = new wechatCallbackapiTest($token, $encodingAesKey, $corpId);
25 if (!isset($_GET['echostr'])) {
26     $wechatObj->valid;
27 }
  

回調模式啟用成功之後,界面如圖20-2所示。

圖20-2 配置回調模式