企业号应用有两种模式:普通模式和回调模式。
普通模式下,开发者可以通过简单的界面编辑,来设置自动回复以及底部的自定义菜单等功能。该模式类似于订阅号或服务号的编辑模式。
回调模式下,开发者可通过企业号提供的接口,实现设置自定义菜单、获取成员状态通知,以及微信消息转发等功能。回调模式类似于订阅号或服务号的开发者接入模式。
开启应用的回调模式时,企业号会要求你填写应用的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 valid10 {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 配置回调模式