首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》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 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 配置回调模式