Wechat库怎么使用
1、例如:
<font size="4">// 继承Wechat
class TestWechat extends Wechat {
}
// step 1: 创建TestWechat类的实例
$wechat = new TestWechat(array(
'token' => 'weixin',
'aeskey' => 'xxx',
'appid' => 'wx5d1fb434a1652ae8',
'debug' => true
));
// setp 2: 检测消息
$wechat->run();</font>
2、在创建`TestWechat`实例过程中会调用父类`Wechat`的构造函数,这里完成了token的验证,以及请求数据的解析和暂存.下面是对Wechat构造函数的说明.
<font size="4">public function __construct($config=array('token'=>'', 'aeskey'=>'', 'appid'=>'', 'debug' => FALSE)) {
// 获取创建实例时传进来的阐述
$token = $config['token'];
$aeskey = $config['aeskey'];
$appid = $config['appid'];
$debug = $config['debug'];
// 调用token验证函数,如果失败直接退出
// 无论是验证token还是用户发送消息都会检测token,已提高程序的安全性
if (!$this->validateSignature($token)) {
exit('签名验证失败');
}
// 检测是否是单纯的token验证请求
// 如果是 返回echostr并退出
if ($this->isValidateIncomingConn()) {
// 网址接入验证
exit($_GET['echostr']);
}
// 如果是用户发送的信息请求,需要验证'HTTP_RAW_POST_DATA'数据
if (!isset($GLOBALS['HTTP_RAW_POST_DATA'])) {
exit('缺少数据');
}
$this->debug = $debug;
set_error_handler(array(&$this, 'errorHandler'));
// 设置错误处理函数,将错误通过文本消息回复显示
// 检测消息是否加密
if (isset($_GET['encrypt_type'])) {
$this->encrypted = $_GET['encrypt_type'] == 'aes';
}
// 如果消息加密了,调用函数对消息进行解密
if ($this->encrypted) {
$this->msgCryptor = new wxBizMsgCrypt($token, $aeskey, $appid);
}
// 将请求消息储存起来备用
$this->savePostData();
}</font>
3、之后会调用run()函数,run函数会检测微信服务器发送过来的消息类型,然后根据不同的类型,调用Wechat中的对应函数进行处理.因为我们使用的`TestWechat`集成了`Wechat`,我们只需要在`TestWechat`中复写一下用到的函数,就会在接收到相应的消息时调用到我们复写的函数.这也是我们再上一个帖子中复写`onText`函数的原因.
<font size="4">public function run() {
switch ($this->getRequest('msgtype')) {
// 如果消息类型为 event
case 'event':
switch ($this->getRequest('event')) {
// 订阅消息
case 'subscribe':
$this->onSubscribe();
break;
// 退订消息
case 'unsubscribe':
$this->onUnsubscribe();
break;
//
case 'SCAN':
$this->onScan();
break;
case 'LOCATION':
$this->onEventLocation();
break;
case 'CLICK':
$this->onClick();
break;
}
break;
// 文本消息
case 'text':
$this->onText();
break;
// 图片消息
case 'image':
$this->onImage();
break;
// 位置消息
case 'location':
$this->onLocation();
break;
// 链接消息
case 'link':
$this->onLink();
break;
// 语音消息
case 'voice':
$this->onVoice();
break;
default:
$this->onUnknown();
break;
}
}</font>