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