多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## **接口内容列表** [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`的源码哦!