企業號應用有兩種模式:普通模式和回調模式。
普通模式下,開發者可以通過簡單的界面編輯,來設置自動回復以及底部的自定義菜單等功能。該模式類似於訂閱號或服務號的編輯模式。
回調模式下,開發者可通過企業號提供的接口,實現設置自定義菜單、獲取成員狀態通知,以及微信消息轉發等功能。回調模式類似於訂閱號或服務號的開發者接入模式。
開啟應用的回調模式時,企業號會要求你填寫應用的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 配置回調模式