>wechat对象对应的方法使用
## 主要功能
* 接入验证**(初级权限)**
* 自动回复(文本、图片、语音、视频、音乐、图文)**(初级权限)**
* 菜单操作(查询、创建、删除)**(菜单权限)**
* 客服消息(文本、图片、语音、视频、音乐、图文)**(认证权限)**
* 二维码(创建临时、永久二维码,获取二维码URL)**(服务号、认证权限)**
* 长链接转短链接接口**(服务号、认证权限)**
* 分组操作(查询、创建、修改、移动用户到分组)**(认证权限)**
* 网页授权(基本授权,用户信息授权)**(服务号、认证权限)**
* 用户信息(查询用户基本信息、获取关注者列表)**(认证权限)**
* 多客服功能(客服管理、获取客服记录、客服会话管理)**(认证权限)**
* 媒体文件(上传、获取)**(认证权限)**
* 高级群发**(认证权限)**
* 模板消息(设置所属行业、添加模板、发送模板消息)**(服务号、认证权限)**
* 卡券管理(创建、修改、删除、发放、门店管理等)**(认证权限)**
* 语义理解**(服务号、认证权限)**
* 获取微信服务器IP列表**(初级权限)**
* 微信JSAPI授权(获取ticket、获取签名)**(初级权限)**
* 数据统计(用户、图文、消息、接口分析数据)**(认证权限)**
>备注:
初级权限:基本权限,任何正常的公众号都有此权限
菜单权限:正常的服务号、认证后的订阅号拥有此权限
认证权限:分为订阅号、服务号认证,如前缀服务号则仅认证的服务号有此权限,否则为认证后的订阅号、服务号都有此权限
支付权限:仅认证后的服务号可以申请此权限
### 初始化获取对象
```
$options = array(
'token'=>'tokenaccesskey', //填写你设定的key
'encodingaeskey'=>'encodingaeskey', //填写加密用的EncodingAESKey
'appid'=>'wxdk1234567890', //填写高级调用功能的app id, 请在微信开发模式后台查询
'appsecret'=>'xxxxxxxxxxxxxxxxxxx' //填写高级调用功能的密钥
);
//如果控制器继承了user\Memberbase 类 或者user\Member 类 可以直接使用
$wechat = $this->wechat ;
//如果没有继承上边2个类
$wechat = getWechat($options); //按照所传的参数连接对应的公众号
$wechat1 = getWechat();//按照cowcms后台配置的公众号连接
```
### 被动接口方法:
* valid() 验证连接,被动接口处于加密模式时必须调用
* getRev() 获取微信服务器发来信息(不返回结果),被动接口必须调用
* getRevData() 返回微信服务器发来的信息(数组)
* getRevFrom() 返回消息发送者的userid
* getRevTo() 返回消息接收者的id(即公众号id)
* getRevType() 返回接收消息的类型
* getRevID() 返回消息id
* getRevCtime() 返回消息发送时间
* getRevContent() 返回消息内容正文或语音识别结果(文本型)
* getRevPic() 返回图片信息(图片型信息) 返回数组{'mediaid'=>'','picurl'=>''}
* getRevLink() 接收消息链接(链接型信息) 返回数组{'url'=>'','title'=>'','description'=>''}
* getRevGeo() 返回地理位置(位置型信息) 返回数组{'x'=>'','y'=>'','scale'=>'','label'=>''}
* getRevEventGeo() 返回事件地理位置(事件型信息) 返回数组{'x'=>'','y'=>'','precision'=>''}
* getRevEvent() 返回事件类型(事件型信息) 返回数组{'event'=>'','key'=>''}
* getRevScanInfo() 获取自定义菜单的扫码推事件信息,事件类型为`scancode_push`或`scancode_waitmsg`返回数组array ('ScanType'=>'qrcode','ScanResult'=>'123123')
* getRevSendPicsInfo() 获取自定义菜单的图片发送事件信息,事件类型为`pic_sysphoto`或`pic_photo_or_album`或`pic_weixin`数组结构见php文件内方法说明
* getRevSendGeoInfo() 获取自定义菜单的地理位置选择器事件推送,事件类型为`location_select`数组结构见php文件内方法说明
* getRevVoice() 返回语音信息(语音型信息) 返回数组{'mediaid'=>'','format'=>''}
* getRevVideo() 返回视频信息(视频型信息) 返回数组{'mediaid'=>'','thumbmediaid'=>''}
* getRevTicket() 返回接收TICKET(扫描带参数二维码,关注或SCAN事件) 返回二维码的ticket值
* getRevSceneId() 返回二维码的场景值(扫描带参数二维码的关注事件) 返回二维码的参数值
* getRevTplMsgID() 返回主动推送的消息ID(群发或模板消息事件) 返回MsgID值
* getRevStatus() 返回模板消息发送状态(模板消息事件) 返回文本:success(成功)|failed:user block(用户拒绝接收)|failed: system failed(发送失败(非用户拒绝))
* getRevResult() 返回群发或模板消息发送结果(群发或模板消息事件) 返回数组,内容依事件类型而不同,参考开发文档中群发、模板消息推送事件
* getRevKFCreate() 返回多客服-接入会话的客服账号(多客服-接入会话事件) 返回文本型
* getRevKFClose() 返回多客服-处理会话的客服账号(多客服-接入会话事件) 返回文本型
* getRevKFSwitch() 返回多客服-转接会话信息(多客服-转接会话事件) 返回数组 {'FromKfAccount' => '','ToKfAccount' => ''}
* getRevCardPass() 返回卡券-审核通过的卡券ID(卡券-卡券审核事件) 返回文本型
* getRevCardGet() 返回卡券-用户领取卡券的相关信息(卡券-领取卡券事件) 返回数组{'CardId' => '','IsGiveByFriend' => '','UserCardCode' => ''}
* getRevCardDel() 返回卡券-用户删除卡券的相关信息(卡券-删除卡券事件) 返回数组{'CardId' => '','UserCardCode' => ''}
* text($text) 设置文本型消息,参数:文本内容
* image($mediaid) 设置图片型消息,参数:图片的media\_id
* voice($mediaid) 设置语音型消息,参数:语音的media\_id
* video($mediaid='',$title,$description) 设置视频型消息,参数:视频的media\_id、标题、摘要
* music($title,$desc,$musicurl,$hgmusicurl='',$thumbmediaid='') 设置回复音乐,参数:音乐标题、音乐描述、音乐链接、高音质链接、缩略图的媒体id
* news($newsData) 设置图文型消息,参数:数组。数组结构见php文件内方法说明
* Message($msg = '',$append = false) 设置发送的消息(一般不需要调用这个方法)
* transfer\_customer\_service($customer\_account = '') 转接多客服,如不指定客服可不提供参数,参数:指定客服的账号
* reply() 将以上已经设置好的消息,回复给微信服务器 ,被动回复是自能回复一次,不建议使用,一般建议使用sendCustomMessage($data)
### 预定义常量列表:
~~~
////消息类型,使用实例调用getRevType()方法取得
const MSGTYPE_TEXT = 'text';
const MSGTYPE_IMAGE = 'image';
const MSGTYPE_LOCATION = 'location';
const MSGTYPE_LINK = 'link';
const MSGTYPE_EVENT = 'event';
const MSGTYPE_MUSIC = 'music';
const MSGTYPE_NEWS = 'news';
const MSGTYPE_VOICE = 'voice';
const MSGTYPE_VIDEO = 'video';
////事件类型,使用实例调用getRevEvent()方法取得
const EVENT_SUBSCRIBE = 'subscribe'; //订阅
const EVENT_UNSUBSCRIBE = 'unsubscribe'; //取消订阅
const EVENT_SCAN = 'SCAN'; //扫描带参数二维码
const EVENT_LOCATION = 'LOCATION'; //上报地理位置
const EVENT_MENU_VIEW = 'VIEW'; //菜单 - 点击菜单跳转链接
const EVENT_MENU_CLICK = 'CLICK'; //菜单 - 点击菜单拉取消息
const EVENT_MENU_SCAN_PUSH = 'scancode_push'; //菜单 - 扫码推事件(客户端跳URL)
const EVENT_MENU_SCAN_WAITMSG = 'scancode_waitmsg'; //菜单 - 扫码推事件(客户端不跳URL)
const EVENT_MENU_PIC_SYS = 'pic_sysphoto'; //菜单 - 弹出系统拍照发图
const EVENT_MENU_PIC_PHOTO = 'pic_photo_or_album'; //菜单 - 弹出拍照或者相册发图
const EVENT_MENU_PIC_WEIXIN = 'pic_weixin'; //菜单 - 弹出微信相册发图器
const EVENT_MENU_LOCATION = 'location_select'; //菜单 - 弹出地理位置选择器
const EVENT_SEND_MASS = 'MASSSENDJOBFINISH'; //发送结果 - 高级群发完成
const EVENT_SEND_TEMPLATE = 'TEMPLATESENDJOBFINISH';//发送结果 - 模板消息发送结果
const EVENT_KF_SEESION_CREATE = 'kfcreatesession'; //多客服 - 接入会话
const EVENT_KF_SEESION_CLOSE = 'kfclosesession'; //多客服 - 关闭会话
const EVENT_KF_SEESION_SWITCH = 'kfswitchsession'; //多客服 - 转接会话
const EVENT_CARD_PASS = 'card_pass_check'; //卡券 - 审核通过
const EVENT_CARD_NOTPASS = 'card_not_pass_check'; //卡券 - 审核未通过
const EVENT_CARD_USER_GET = 'user_get_card'; //卡券 - 用户领取卡券
const EVENT_CARD_USER_DEL = 'user_del_card'; //卡券 - 用户删除卡券
~~~
### 主动接口方法:
* checkAuth($appid,$appsecret,$token) 此处传入公众后台高级接口提供的appid和appsecret, 或者手动指定$token为access\_token。函数将返回access\_token操作令牌
* resetAuth($appid='') 删除验证数据
* resetJsTicket($appid='') 删除JSAPI授权TICKET
* getJsTicket($appid='',$jsapi\_ticket='') 获取JSAPI授权TICKET
* getJsSign($url, $timestamp=0, $noncestr='', $appid='') 获取JsApi使用签名信息数组,可只提供url地址
* createMenu($data) 创建菜单 $data菜单结构详见**[自定义菜单创建接口](http://mp.weixin.qq.com/wiki/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E5%88%9B%E5%BB%BA%E6%8E%A5%E5%8F%A3)**
* getServerIp() 获取微信服务器IP地址列表 返回数组array('127.0.0.1','127.0.0.1')
* getMenu() 获取菜单
* deleteMenu() 删除菜单
* uploadMedia($data, $type) 上传临时素材,有效期为3天(注意上传大文件时可能需要先调用 set\_time\_limit(0) 避免超时)
* getMedia($media\_id,$is\_video=false) 获取临时素材(含接收到的音频、视频媒体文件)
* uploadForeverMedia($data, $type,$is\_video=false,$video\_info=array()) 上传永久素材,可以在公众平台官网素材管理模块中看到
* uploadForeverArticles($data) 上传永久图文素材
* updateForeverArticles($media\_id,$data,$index=0) 修改永久图文素材(认证后的订阅号可用)
* getForeverMedia($media\_id,$is\_video=false) 获取永久素材
* delForeverMedia($media\_id) 删除永久素材
* getForeverList($type,$offset,$count) 获取永久素材列表(认证后的订阅号可用)
* getForeverCount() 获取永久素材总数
* uploadMpVideo($data) 上传视频素材,当需要群发视频时,必须使用此方法得到的MediaID,否则无法显示
* uploadArticles($data) 上传图文消息素材
* sendMassMessage($data) 高级群发消息
* sendGroupMassMessage($data) 高级群发消息(全体或分组群发)
* deleteMassMessage($msg\_id) 删除群发图文消息
* previewMassMessage($data) 预览群发消息
* queryMassMessage($msg\_id) 查询群发消息发送状态
* getQRCode($scene\_id,$type=0,$expire=1800) 获取推广二维码ticket字串
* getQRUrl($ticket) 获取二维码图片地址
* getShortUrl($long\_url) 长链接转短链接接口
* getUserList($next\_openid) 批量获取关注用户列表
* getUserInfo($openid) 获取关注者详细信息
* updateUserRemark($openid,$remark) 设置用户备注名
* getGroup() 获取用户分组列表
* getUserGroup($openid) 获取用户所在分组
* createGroup($name) 新增自定分组
* updateGroup($groupid,$name) 更改分组名称
* updateGroupMembers($groupid,$openid) 移动用户分组
* batchUpdateGroupMembers($groupid,$openid\_list) 批量移动用户分组
* sendCustomMessage($data) 发送客服消息
* getOauthRedirect($callback,$state,$scope) 获取网页授权oAuth跳转地址
* getOauthAccessToken() 通过回调的code获取网页授权access\_token
* getOauthRefreshToken($refresh\_token) 通过refresh\_token对access\_token续期
* getOauthUserinfo($access\_token,$openid) 通过网页授权的access\_token获取用户资料
* getOauthAuth($access\_token,$openid) 检验授权凭证access\_token是否有效
* getSignature($arrdata,'sha1') 生成签名字串
* generateNonceStr($length=16) 获取随机字串
* setTMIndustry($id1,$id2='') 模板消息,设置所属行业
* addTemplateMessage($tpl\_id) 模板消息,添加消息模板
* sendTemplateMessage($data) 发送模板消息
* 多客服接口:
* getCustomServiceMessage($data) 获取多客服会话记录
* transfer\_customer\_service($customer\_account) 转发多客服消息
* getCustomServiceKFlist() 获取多客服客服基本信息
* getCustomServiceOnlineKFlist() 获取多客服在线客服接待信息
* createKFSession($openid,$kf\_account,$text='') 创建指定多客服会话
* closeKFSession($openid,$kf\_account,$text='') 关闭指定多客服会话
* getKFSession($openid) 获取用户会话状态
* getKFSessionlist($kf\_account) 获取指定客服的会话列表
* getKFSessionWait() 获取未接入会话列表
* addKFAccount($account,$nickname,$password) 添加客服账号
* updateKFAccount($account,$nickname,$password) 修改客服账号信息
* deleteKFAccount($account) 删除客服账号
* setKFHeadImg($account,$imgfile) 上传客服头像
* querySemantic($uid,$query,$category,$latitude=0,$longitude=0,$city="",$region="") 语义理解接口 参数含义及返回的json内容请查看**[微信语义理解接口](http://mp.weixin.qq.com/wiki/index.php?title=%E8%AF%AD%E4%B9%89%E7%90%86%E8%A7%A3)**
* getDatacube($type,$subtype,$begin\_date,$end\_date='') 获取统计数据 参数需注意$type与$subtype的定义
>获取统计数据方法 参数定义
| 数据分类 | $type值(字符串) | 数据子分类 | $subtype值(字符串) | 时间跨度(天) |
| --- | :-: | --- | :-: | --: |
| 用户分析 | 'user' | 获取用户增减数据 | 'summary' | 7 |
| 用户分析 | 'user' | 获取累计用户数据 | 'cumulate' | 7 |
| 图文分析 | 'article' | 获取图文群发每日数据 | 'summary' | 1 |
| 图文分析 | 'article' | 获取图文群发总数据 | 'total' | 1 |
| 图文分析 | 'article' | 获取图文统计数据 | 'read' | 3 |
| 图文分析 | 'article' | 获取图文统计分时数据 | 'readhour' | 1 |
| 图文分析 | 'article' | 获取图文分享转发数据 | 'share' | 7 |
| 图文分析 | 'article' | 获取图文分享转发分时数据 | 'sharehour' | 1 |
| 消息分析 | 'upstreammsg' | 获取消息发送概况数据 | 'summary' | 7 |
| 消息分析 | 'upstreammsg' | 获取消息分送分时数据 | 'hour' | 1 |
| 消息分析 | 'upstreammsg' | 获取消息发送周数据 | 'week' | 30 |
| 消息分析 | 'upstreammsg' | 获取消息发送月数据 | 'month' | 30 |
| 消息分析 | 'upstreammsg' | 获取消息发送分布数据 | 'dist' | 15 |
| 消息分析 | 'upstreammsg' | 获取消息发送分布周数据 | 'distweek' | 30 |
| 消息分析 | 'upstreammsg' | 获取消息发送分布月数据 | 'distmonth' | 30 |
| 接口分析 | 'interface' | 获取接口分析数据 | 'summary' | 30 |
| 接口分析 | 'interface' | 获取接口分析分时数据 | 'summaryhour' | 1 |
>[danger]注意`begin_date`和`end_date`的差值需小于“最大时间跨度”(比如最大时间跨度为1时,`begin_date`和`end_date`的差值只能为0,才能小于1)
> 卡券接口:
* createCard($data) 创建卡券
* updateCard($data) 修改卡券
* delCard($card\_id) 删除卡券
* getCardInfo($card\_id) 查询卡券详情
* getCardColors() 获取颜色列表
* getCardLocations() 拉取门店列表
* addCardLocations($data) 批量导入门店信息
* createCardQrcode($card\_id) 生成卡券二维码
* consumeCardCode($code) 消耗 code
* decryptCardCode($encrypt\_code) code 解码
* checkCardCode($code) 获取 code 的有效性
* getCardIdList($data) 批量查询卡列表
* updateCardCode($code,$card\_id,$new\_code) 更改 code
* unavailableCardCode($code,$card\_id='') 设置卡券失效\*\*(不可逆)\*\*
* modifyCardStock($data) 库存修改
* activateMemberCard($data) 激活/绑定会员卡,参数结构请参看卡券开发文档(6.1.1 激活/绑定会员卡)章节
* updateMemberCard($data) 会员卡交易,参数结构请参看卡券开发文档(6.1.2 会员卡交易)章节
* updateLuckyMoney($code,$balance,$card\_id='') 更新红包金额
* setCardTestWhiteList($openid=array(),$user=array()) 设置卡券测试白名单
> 摇一摇周边接口:
* applyShakeAroundDevice($data) 申请设备ID
* updateShakeAroundDevice($data) 编辑设备的备注信息
* searchShakeAroundDevice($data) 查询设备列表
* bindLocationShakeAroundDevice($device\_id,$poi\_id,$uuid='',$major=0,$minor=0) 配置设备与门店的关联关系
* bindPageShakeAroundDevice($device\_id,$page\_ids=array(),$bind=1,$append=1,$uuid='',$major=0,$minor=0) 配置设备与页面的关联关系
* uploadShakeAroundMedia($data) 上传在摇一摇页面展示的图片素材
* addShakeAroundPage($title,$description,$icon\_url,$page\_url,$comment='') 新增摇一摇出来的页面信息
* updateShakeAroundPage($page\_id,$title,$description,$icon\_url,$page\_url,$comment='') 编辑摇一摇出来的页面信息
* searchShakeAroundPage($page\_ids=array(),$begin=0,$count=1) 查询摇一摇已有的页面
* deleteShakeAroundPage($page\_ids=array()) 删除摇一摇已有的页面,必须是未与设备关联的页面
* getShakeInfoShakeAroundUser($ticket) 获取摇周边的设备及用户信息
* deviceShakeAroundStatistics($device\_id,$begin\_date,$end\_date,$uuid='',$major=0,$minor=0) 以设备为维度的数据统计接口
* pageShakeAroundStatistics($page\_id,$begin\_date,$end\_date) 以页面为维度的数据统计接口
- 序言
- 基础
- 源码包
- 核心包
- 完整包
- 系统模块
- 安装模块
- 后台模块
- 插件模块
- 插件开发
- 开发基础
- 权限开发
- 菜单开发
- 开发调试
- 碎片开发
- 碎片钩子预设表
- 插件说明
- 字段插件
- 插件介绍
- 字段使用
- 单行文本
- 多行文本
- 选项-下拉
- 选项-复选
- 选项-单选
- 选项-滑块
- 颜色选择器
- 星级评分
- 日期时间
- 文件上传
- 编辑器
- API接口
- 微信插件
- 微信配置
- 公众号配置
- 支付配置
- 微信支付使用
- API类库
- 红包发放
- 付款到零钱
- 碎片
- 公众号碎片
- 红包碎片
- 付款到零钱碎片
- API微信接口
- 支付宝插件
- 支付宝配置
- 支付宝支付使用
- api接口
- api接口后端开发
- api接口前端使用
- API参数接口
- 会员插件
- 登录使用
- 会员碎片
- API会员接口
- API注册接口
- 积分插件
- 积分设置
- 积分碎片
- API积分接口
- API提现接口
- API兑换接口
- API充值接口
- 订单
- 订单碎片
- API订单接口
- 商城
- 商城钩子
- API商城接口
- API商城会员接口
- 签到
- 签到设置
- 签到碎片
- API签到接口
- 上传
- 上传设置
- 上传JS接口
- 推广插件
- 海报设置
- API海报接口
- 文章插件
- 文章设置
- 文章钩子
- API文章接口
- API文章会员接口
- 管理员
- 管理员碎片
- 站内信
- API站内信接口
- 杂项
- 菜单
- 菜单设置
- API菜单接口
- 错误码
- 支付碎片
- 支付
- 充值
- 购买会员组
- 购买产品