## **接口内容列表**
[TOC]
## **被动消息处理**
* 所谓消息推送解释是指我们提共接口给微信调用,能过这些SDK方法来处理并返回系统可直接使用的数据
* 通常,大部分微信操作都会有事件回到我们系统,因此需要我们来接收并处理。
* 在配置公众号开发者接口时,需要填写一个地址,对应地址的业务处理就是这个了,哈哈...
* **注意**:接口验证需要由微信服务器发起请求,直接HTTP访问`API`接口地址,会显示`Interface authentication failed, please use the correct method to call.`属正常情况。另外微信服务器域名解析`DNS`会有一定的延时,如果修改了域名解析,请等待一段时间后再来对接。
## **消息接收处理**
* 以下是API业务伪代码,请根据项目实际情况进行封装,另外QQ交流群中有分享完整的代码。
~~~
/* 创建接口操作对象 */
$wechat = &load_wechat('Receive');
/* 验证接口 */
if ($wechat->valid() === FALSE) {
// 接口验证错误,记录错误日志
// log_message('ERROR', "微信被动接口验证失败,{$wechat->errMsg}[{$wechat->errCode}]");
// 退出程序
exit($wechat->errMsg);
}
/* 获取粉丝的openid */
$openid = $wechat->getRev()->getRevFrom();
/* 记录接口日志,具体方法根据实际需要去完善 */
// _logs();
/* 分别执行对应类型的操作 */
switch ($wechat->getRev()->getRevType()) {
// 文本类型处理
case \Wechat\WechatReceive::MSGTYPE_TEXT:
$keys = $wechat->getRevContent();
return _keys($keys);
// 事件类型处理
case \Wechat\WechatReceive::MSGTYPE_EVENT:
$event = $wechat->getRevEvent();
return _event(strtolower($event['event']));
// 图片类型处理
case \Wechat\WechatReceive::MSGTYPE_IMAGE:
return _image();
// 发送位置类的处理
case \Wechat\WechatReceive::MSGTYPE_LOCATION:
return _location();
// 其它类型的处理,比如卡卷领取、卡卷转赠
default:
return _default();
}
~~~
## **文本消息处理**
* 参数`$keys`就是上面代码中事件分流传过来的参数
~~~
function _keys($keys){
$wechat = &load_wechat('Receive');
// 这里直接原样回复给微信(当然你需要根据业务需求来定制的)
return $wechat->text($keys)->reply();
}
~~~
## **事件消息处理**
* 参数`$event`就是上面代码中事件分流传过来的参数
~~~
function _event($event) {
$wechat = &load_wechat('Receive');
switch ($event) {
// 粉丝关注事件
case 'subscribe':
return $wechat->text('欢迎关注公众号!')->reply();
// 粉丝取消关注
case 'unsubscribe':
exit("success");
// 点击微信菜单的链接
case 'click':
return $wechat->text('你点了菜单链接!')->reply();
// 微信扫码推事件
case 'scancode_push':
case 'scancode_waitmsg':
$scanInfo = $wechat->getRev()->getRevScanInfo();
return $wechat->text("你扫码的内容是:{$scanInfo['ScanResult']}")->reply();
// 扫码关注公众号事件(一般用来做分销)
case 'scan':
return $wechat->text('欢迎关注公众号!')->reply();
}
}
~~~
## **图片消息处理**
~~~
function _image(){
$wechat = &load_wechat('Receive');
// $wechat 中有获取图片的方法
return $wechat->text('您发送了一张图片过来')->reply();
}
~~~
## **直接回复消息**
~~~
// 创建接口操作对象
$wechat = &load_wechat('Receive');
// 回复文本消息
$wechat->text("文本消息")->reply();
// 回复语音消息($meaia_id为图片在微信服务器上的Media_ID)
$wechat->voice($media_id)->reply();
// 回复视频
$wechat->video($media_id, $video_title, $video_desc)->reply();
// 回复语音($meaia_id 为语音在微信服务器上的Media_ID)
$wechat->voice($media_id)->reply()
// 回复音乐
$wechat->music($music_title $music_desc, $music_url, $music_url, $media_id)->reply()
// 回复图文($newsdata为数组,图文参数参考微信官方文档)
$wechat->news($newsdata)->reply();
// 将会话转交给多客服
$wechat->transfer_customer_service()->reply();
// 发送模板消息($data为数组,具体请参数微信官方文档)
$wechat->sendTemplateMessage($data);
// 发送客服消息($data为数组,具体请参数微信官方文档)
$wechat->sendCustomMessage($data);
~~~
## **以上是由消息类型分流的思想,可根据项目情况进行封装哦**
当然`$wechat`中还有许多方法,可以获取消息内容或者回复消息到微信中。
这个后面点再来完善,可以参考`SDK`中的`WechatReceive.php`的源码哦!