|
|
@ -1,59 +1,87 @@
|
|
|
|
以下是去除注释后的PHP代码:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
|
|
|
<?php
|
|
|
|
<?php
|
|
|
|
namespace LaneWeChat\Core;
|
|
|
|
namespace LaneWeChat\Core;
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 处理请求
|
|
|
|
|
|
|
|
* Created by Lane.
|
|
|
|
|
|
|
|
* User: lane
|
|
|
|
|
|
|
|
* Date: 13-12-19
|
|
|
|
|
|
|
|
* Time: 下午11:04
|
|
|
|
|
|
|
|
* Mail: lixuan868686@163.com
|
|
|
|
|
|
|
|
* Website: http://www.lanecn.com
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
class WechatRequest{
|
|
|
|
class WechatRequest{
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 分发请求
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array|string
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function switchType(&$request){
|
|
|
|
public static function switchType(&$request){
|
|
|
|
$data = array();
|
|
|
|
$data = array();
|
|
|
|
switch ($request['msgtype']) {
|
|
|
|
switch ($request['msgtype']) {
|
|
|
|
|
|
|
|
//事件
|
|
|
|
case 'event':
|
|
|
|
case 'event':
|
|
|
|
$request['event'] = strtolower($request['event']);
|
|
|
|
$request['event'] = strtolower($request['event']);
|
|
|
|
switch ($request['event']) {
|
|
|
|
switch ($request['event']) {
|
|
|
|
|
|
|
|
//关注
|
|
|
|
case 'subscribe':
|
|
|
|
case 'subscribe':
|
|
|
|
|
|
|
|
//二维码关注
|
|
|
|
if(isset($request['eventkey']) && isset($request['ticket'])){
|
|
|
|
if(isset($request['eventkey']) && isset($request['ticket'])){
|
|
|
|
$data = self::eventQrsceneSubscribe($request);
|
|
|
|
$data = self::eventQrsceneSubscribe($request);
|
|
|
|
|
|
|
|
//普通关注
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
$data = self::eventSubscribe($request);
|
|
|
|
$data = self::eventSubscribe($request);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//扫描二维码
|
|
|
|
case 'scan':
|
|
|
|
case 'scan':
|
|
|
|
$data = self::eventScan($request);
|
|
|
|
$data = self::eventScan($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//地理位置
|
|
|
|
case 'location':
|
|
|
|
case 'location':
|
|
|
|
$data = self::eventLocation($request);
|
|
|
|
$data = self::eventLocation($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//自定义菜单 - 点击菜单拉取消息时的事件推送
|
|
|
|
case 'click':
|
|
|
|
case 'click':
|
|
|
|
$data = self::eventClick($request);
|
|
|
|
$data = self::eventClick($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//自定义菜单 - 点击菜单跳转链接时的事件推送
|
|
|
|
case 'view':
|
|
|
|
case 'view':
|
|
|
|
$data = self::eventView($request);
|
|
|
|
$data = self::eventView($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//自定义菜单 - 扫码推事件的事件推送
|
|
|
|
case 'scancode_push':
|
|
|
|
case 'scancode_push':
|
|
|
|
$data = self::eventScancodePush($request);
|
|
|
|
$data = self::eventScancodePush($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//自定义菜单 - 扫码推事件且弹出“消息接收中”提示框的事件推送
|
|
|
|
case 'scancode_waitmsg':
|
|
|
|
case 'scancode_waitmsg':
|
|
|
|
$data = self::eventScancodeWaitMsg($request);
|
|
|
|
$data = self::eventScancodeWaitMsg($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//自定义菜单 - 弹出系统拍照发图的事件推送
|
|
|
|
case 'pic_sysphoto':
|
|
|
|
case 'pic_sysphoto':
|
|
|
|
$data = self::eventPicSysPhoto($request);
|
|
|
|
$data = self::eventPicSysPhoto($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//自定义菜单 - 弹出拍照或者相册发图的事件推送
|
|
|
|
case 'pic_photo_or_album':
|
|
|
|
case 'pic_photo_or_album':
|
|
|
|
$data = self::eventPicPhotoOrAlbum($request);
|
|
|
|
$data = self::eventPicPhotoOrAlbum($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//自定义菜单 - 弹出微信相册发图器的事件推送
|
|
|
|
case 'pic_weixin':
|
|
|
|
case 'pic_weixin':
|
|
|
|
$data = self::eventPicWeixin($request);
|
|
|
|
$data = self::eventPicWeixin($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//自定义菜单 - 弹出地理位置选择器的事件推送
|
|
|
|
case 'location_select':
|
|
|
|
case 'location_select':
|
|
|
|
$data = self::eventLocationSelect($request);
|
|
|
|
$data = self::eventLocationSelect($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//取消关注
|
|
|
|
case 'unsubscribe':
|
|
|
|
case 'unsubscribe':
|
|
|
|
$data = self::eventUnsubscribe($request);
|
|
|
|
$data = self::eventUnsubscribe($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//群发接口完成后推送的结果
|
|
|
|
case 'masssendjobfinish':
|
|
|
|
case 'masssendjobfinish':
|
|
|
|
$data = self::eventMassSendJobFinish($request);
|
|
|
|
$data = self::eventMassSendJobFinish($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//模板消息完成后推送的结果
|
|
|
|
case 'templatesendjobfinish':
|
|
|
|
case 'templatesendjobfinish':
|
|
|
|
$data = self::eventTemplateSendJobFinish($request);
|
|
|
|
$data = self::eventTemplateSendJobFinish($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
@ -62,24 +90,31 @@ class WechatRequest{
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//文本
|
|
|
|
case 'text':
|
|
|
|
case 'text':
|
|
|
|
$data = self::text($request);
|
|
|
|
$data = self::text($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//图像
|
|
|
|
case 'image':
|
|
|
|
case 'image':
|
|
|
|
$data = self::image($request);
|
|
|
|
$data = self::image($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//语音
|
|
|
|
case 'voice':
|
|
|
|
case 'voice':
|
|
|
|
$data = self::voice($request);
|
|
|
|
$data = self::voice($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//视频
|
|
|
|
case 'video':
|
|
|
|
case 'video':
|
|
|
|
$data = self::video($request);
|
|
|
|
$data = self::video($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//小视频
|
|
|
|
case 'shortvideo':
|
|
|
|
case 'shortvideo':
|
|
|
|
$data = self::shortvideo($request);
|
|
|
|
$data = self::shortvideo($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//位置
|
|
|
|
case 'location':
|
|
|
|
case 'location':
|
|
|
|
$data = self::location($request);
|
|
|
|
$data = self::location($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
//链接
|
|
|
|
case 'link':
|
|
|
|
case 'link':
|
|
|
|
$data = self::link($request);
|
|
|
|
$data = self::link($request);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
@ -90,16 +125,32 @@ class WechatRequest{
|
|
|
|
return $data;
|
|
|
|
return $data;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 文本
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function text(&$request){
|
|
|
|
public static function text(&$request){
|
|
|
|
$content = '收到文本消息';
|
|
|
|
$content = '收到文本消息';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 图像
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function image(&$request){
|
|
|
|
public static function image(&$request){
|
|
|
|
$content = '收到图片';
|
|
|
|
$content = '收到图片';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 语音
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function voice(&$request){
|
|
|
|
public static function voice(&$request){
|
|
|
|
if(!isset($request['recognition'])){
|
|
|
|
if(!isset($request['recognition'])){
|
|
|
|
$content = '收到语音';
|
|
|
|
$content = '收到语音';
|
|
|
@ -110,64 +161,127 @@ class WechatRequest{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 视频
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function video(&$request){
|
|
|
|
public static function video(&$request){
|
|
|
|
$content = '收到视频';
|
|
|
|
$content = '收到视频';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 视频
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function shortvideo(&$request){
|
|
|
|
public static function shortvideo(&$request){
|
|
|
|
$content = '收到小视频';
|
|
|
|
$content = '收到小视频';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 地理
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function location(&$request){
|
|
|
|
public static function location(&$request){
|
|
|
|
$content = '收到上报的地理位置';
|
|
|
|
$content = '收到上报的地理位置';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 链接
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function link(&$request){
|
|
|
|
public static function link(&$request){
|
|
|
|
$content = '收到连接';
|
|
|
|
$content = '收到连接';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 关注
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventSubscribe(&$request){
|
|
|
|
public static function eventSubscribe(&$request){
|
|
|
|
$content = '欢迎您关注我们的微信,将为您竭诚服务';
|
|
|
|
$content = '欢迎您关注我们的微信,将为您竭诚服务';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 取消关注
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventUnsubscribe(&$request){
|
|
|
|
public static function eventUnsubscribe(&$request){
|
|
|
|
$content = '为什么不理我了?';
|
|
|
|
$content = '为什么不理我了?';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 扫描二维码关注(未关注时)
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventQrsceneSubscribe(&$request){
|
|
|
|
public static function eventQrsceneSubscribe(&$request){
|
|
|
|
$content = '欢迎您关注我们的微信,将为您竭诚服务';
|
|
|
|
$content = '欢迎您关注我们的微信,将为您竭诚服务';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 扫描二维码(已关注时)
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventScan(&$request){
|
|
|
|
public static function eventScan(&$request){
|
|
|
|
$content = '您已经关注了哦~';
|
|
|
|
$content = '您已经关注了哦~';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 上报地理位置
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventLocation(&$request){
|
|
|
|
public static function eventLocation(&$request){
|
|
|
|
$content = '收到上报的地理位置';
|
|
|
|
$content = '收到上报的地理位置';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 自定义菜单 - 点击菜单拉取消息时的事件推送
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventClick(&$request){
|
|
|
|
public static function eventClick(&$request){
|
|
|
|
|
|
|
|
//获取该分类的信息
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$content = '收到点击菜单事件,您设置的key是' . $eventKey;
|
|
|
|
$content = '收到点击菜单事件,您设置的key是' . $eventKey;
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 自定义菜单 - 点击菜单跳转链接时的事件推送
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventView(&$request){
|
|
|
|
public static function eventView(&$request){
|
|
|
|
|
|
|
|
//获取该分类的信息
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$content = '收到跳转链接事件,您设置的key是' . $eventKey;
|
|
|
|
$content = '收到跳转链接事件,您设置的key是' . $eventKey;
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 自定义菜单 - 扫码推事件的事件推送
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventScancodePush(&$request){
|
|
|
|
public static function eventScancodePush(&$request){
|
|
|
|
|
|
|
|
//获取该分类的信息
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$content = '收到扫码推事件的事件,您设置的key是' . $eventKey;
|
|
|
|
$content = '收到扫码推事件的事件,您设置的key是' . $eventKey;
|
|
|
|
$content .= '。扫描信息:'.$request['scancodeinfo'];
|
|
|
|
$content .= '。扫描信息:'.$request['scancodeinfo'];
|
|
|
@ -176,7 +290,13 @@ class WechatRequest{
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 自定义菜单 - 扫码推事件且弹出“消息接收中”提示框的事件推送
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventScancodeWaitMsg(&$request){
|
|
|
|
public static function eventScancodeWaitMsg(&$request){
|
|
|
|
|
|
|
|
//获取该分类的信息
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$content = '收到扫码推事件且弹出“消息接收中”提示框的事件,您设置的key是' . $eventKey;
|
|
|
|
$content = '收到扫码推事件且弹出“消息接收中”提示框的事件,您设置的key是' . $eventKey;
|
|
|
|
$content .= '。扫描信息:'.$request['scancodeinfo'];
|
|
|
|
$content .= '。扫描信息:'.$request['scancodeinfo'];
|
|
|
@ -185,7 +305,13 @@ class WechatRequest{
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 自定义菜单 - 弹出系统拍照发图的事件推送
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventPicSysPhoto(&$request){
|
|
|
|
public static function eventPicSysPhoto(&$request){
|
|
|
|
|
|
|
|
//获取该分类的信息
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$content = '收到弹出系统拍照发图的事件,您设置的key是' . $eventKey;
|
|
|
|
$content = '收到弹出系统拍照发图的事件,您设置的key是' . $eventKey;
|
|
|
|
$content .= '。发送的图片信息:'.$request['sendpicsinfo'];
|
|
|
|
$content .= '。发送的图片信息:'.$request['sendpicsinfo'];
|
|
|
@ -195,7 +321,13 @@ class WechatRequest{
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 自定义菜单 - 弹出拍照或者相册发图的事件推送
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventPicPhotoOrAlbum(&$request){
|
|
|
|
public static function eventPicPhotoOrAlbum(&$request){
|
|
|
|
|
|
|
|
//获取该分类的信息
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$content = '收到弹出拍照或者相册发图的事件,您设置的key是' . $eventKey;
|
|
|
|
$content = '收到弹出拍照或者相册发图的事件,您设置的key是' . $eventKey;
|
|
|
|
$content .= '。发送的图片信息:'.$request['sendpicsinfo'];
|
|
|
|
$content .= '。发送的图片信息:'.$request['sendpicsinfo'];
|
|
|
@ -205,7 +337,14 @@ class WechatRequest{
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Key = $request['eventkey'];
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 自定义菜单 - 弹出微信相册发图器的事件推送
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public static function eventPicWeixin(&$request){
|
|
|
|
|
|
|
|
//获取该分类的信息
|
|
|
|
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$content = '收到弹出微信相册发图器的事件,您设置的key是' . $eventKey;
|
|
|
|
$content = '收到弹出微信相册发图器的事件,您设置的key是' . $eventKey;
|
|
|
|
$content .= '。发送的图片信息:'.$request['sendpicsinfo'];
|
|
|
|
$content .= '。发送的图片信息:'.$request['sendpicsinfo'];
|
|
|
|
$content .= '。发送的图片数量:'.$request['count'];
|
|
|
|
$content .= '。发送的图片数量:'.$request['count'];
|
|
|
@ -214,7 +353,13 @@ class WechatRequest{
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @descrpition 自定义菜单 - 弹出地理位置选择器的事件推送
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventLocationSelect(&$request){
|
|
|
|
public static function eventLocationSelect(&$request){
|
|
|
|
|
|
|
|
//获取该分类的信息
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$eventKey = $request['eventkey'];
|
|
|
|
$content = '收到点击跳转事件,您设置的key是' . $eventKey;
|
|
|
|
$content = '收到点击跳转事件,您设置的key是' . $eventKey;
|
|
|
|
$content .= '。发送的位置信息:'.$request['sendlocationinfo'];
|
|
|
|
$content .= '。发送的位置信息:'.$request['sendlocationinfo'];
|
|
|
@ -226,26 +371,49 @@ class WechatRequest{
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 群发接口完成后推送的结果
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* 本消息有公众号群发助手的微信号“mphelper”推送的消息
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventMassSendJobFinish(&$request){
|
|
|
|
public static function eventMassSendJobFinish(&$request){
|
|
|
|
|
|
|
|
//发送状态,为“send success”或“send fail”或“err(num)”。但send success时,也有可能因用户拒收公众号的消息、系统错误等原因造成少量用户接收失败。err(num)是审核失败的具体原因,可能的情况如下:err(10001), //涉嫌广告 err(20001), //涉嫌政治 err(20004), //涉嫌社会 err(20002), //涉嫌色情 err(20006), //涉嫌违法犯罪 err(20008), //涉嫌欺诈 err(20013), //涉嫌版权 err(22000), //涉嫌互推(互相宣传) err(21000), //涉嫌其他
|
|
|
|
$status = $request['status'];
|
|
|
|
$status = $request['status'];
|
|
|
|
|
|
|
|
//计划发送的总粉丝数。group_id下粉丝数;或者openid_list中的粉丝数
|
|
|
|
$totalCount = $request['totalcount'];
|
|
|
|
$totalCount = $request['totalcount'];
|
|
|
|
|
|
|
|
//过滤(过滤是指特定地区、性别的过滤、用户设置拒收的过滤,用户接收已超4条的过滤)后,准备发送的粉丝数,原则上,FilterCount = SentCount + ErrorCount
|
|
|
|
$filterCount = $request['filtercount'];
|
|
|
|
$filterCount = $request['filtercount'];
|
|
|
|
|
|
|
|
//发送成功的粉丝数
|
|
|
|
$sentCount = $request['sentcount'];
|
|
|
|
$sentCount = $request['sentcount'];
|
|
|
|
|
|
|
|
//发送失败的粉丝数
|
|
|
|
$errorCount = $request['errorcount'];
|
|
|
|
$errorCount = $request['errorcount'];
|
|
|
|
$content = '发送完成,状态是'.$status.'。计划发送总粉丝数为'.$totalCount.'。发送成功'.$sentCount.'人,发送失败'.$errorCount.'人。';
|
|
|
|
$content = '发送完成,状态是'.$status.'。计划发送总粉丝数为'.$totalCount.'。发送成功'.$sentCount.'人,发送失败'.$errorCount.'人。';
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
return ResponsePassive::text($request['fromusername'], $request['tousername'], $content);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 群发接口完成后推送的结果
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* 本消息有公众号群发助手的微信号“mphelper”推送的消息
|
|
|
|
|
|
|
|
* @param $request
|
|
|
|
|
|
|
|
*/
|
|
|
|
public static function eventTemplateSendJobFinish(&$request){
|
|
|
|
public static function eventTemplateSendJobFinish(&$request){
|
|
|
|
|
|
|
|
//发送状态,成功success,用户拒收failed:user block,其他原因发送失败failed: system failed
|
|
|
|
$status = $request['status'];
|
|
|
|
$status = $request['status'];
|
|
|
|
if($status == 'success'){
|
|
|
|
if($status == 'success'){
|
|
|
|
|
|
|
|
//发送成功
|
|
|
|
}else if($status == 'failed:user block'){
|
|
|
|
}else if($status == 'failed:user block'){
|
|
|
|
|
|
|
|
//因为用户拒收而发送失败
|
|
|
|
}else if($status == 'failed: system failed'){
|
|
|
|
}else if($status == 'failed: system failed'){
|
|
|
|
|
|
|
|
//其他原因发送失败
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static function test(){
|
|
|
|
public static function test(){
|
|
|
|
|
|
|
|
// 第三方发送消息给公众平台
|
|
|
|
$encodingAesKey = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFG";
|
|
|
|
$encodingAesKey = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFG";
|
|
|
|
$token = "pamtest";
|
|
|
|
$token = "pamtest";
|
|
|
|
$timeStamp = "1409304348";
|
|
|
|
$timeStamp = "1409304348";
|
|
|
@ -273,6 +441,7 @@ class WechatRequest{
|
|
|
|
$format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%s]]></Encrypt></xml>";
|
|
|
|
$format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%s]]></Encrypt></xml>";
|
|
|
|
$from_xml = sprintf($format, $encrypt);
|
|
|
|
$from_xml = sprintf($format, $encrypt);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 第三方收到公众号平台发送的消息
|
|
|
|
$msg = '';
|
|
|
|
$msg = '';
|
|
|
|
$errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg);
|
|
|
|
$errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg);
|
|
|
|
if ($errCode == 0) {
|
|
|
|
if ($errCode == 0) {
|
|
|
@ -281,6 +450,5 @@ class WechatRequest{
|
|
|
|
print($errCode . "\n");
|
|
|
|
print($errCode . "\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|