|
@@ -50,6 +50,7 @@ https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/course2_tmpl&lang=zh_CN
|
|
|
- 支付订单查询 **(支付权限) **
|
|
|
- 高级群发**(认证权限)**
|
|
|
- 模板消息(设置所属行业、添加模板、发送模板消息)**(服务号、认证权限) **
|
|
|
+- 卡券管理(创建、修改、删除、发放、门店管理等)**(认证权限) **
|
|
|
- 语义理解**(服务号、认证权限) **
|
|
|
- 获取微信服务器IP列表**(初级权限) **
|
|
|
> 备注:
|
|
@@ -59,8 +60,6 @@ https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/course2_tmpl&lang=zh_CN
|
|
|
> 支付权限:仅认证后的服务号可以申请此权限
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
### 初始化动作
|
|
|
```php
|
|
|
$options = array(
|
|
@@ -74,10 +73,89 @@ https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/course2_tmpl&lang=zh_CN
|
|
|
);
|
|
|
$weObj = new Wechat($options); //创建实例对象
|
|
|
//TODO:调用$weObj各实例方法
|
|
|
+```
|
|
|
+
|
|
|
+### 被动接口方法:
|
|
|
+* 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文件内方法说明
|
|
|
+* image($mediaid) 设置图片型消息,参数:图片的media_id
|
|
|
+* Message($msg = '',$append = false) 设置发送的消息(一般不需要调用这个方法)
|
|
|
+* transfer_customer_service($customer_account = '') 转接多客服,如不指定客服可不提供参数,参数:指定客服的账号
|
|
|
+* reply() 将以上已经设置好的消息,回复给微信服务器
|
|
|
|
|
|
+### 预定义常量列表:
|
|
|
+```php
|
|
|
+////消息类型,使用实例调用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'; //卡券 - 用户删除卡券
|
|
|
```
|
|
|
|
|
|
-### 新增Auth高级权限类方法:
|
|
|
+### 主动接口方法:
|
|
|
* checkAuth($appid,$appsecret,$token) 此处传入公众后台高级接口提供的appid和appsecret, 或者手动指定$token为access_token。函数将返回access_token操作令牌
|
|
|
* createMenu($data) 创建菜单 $data菜单结构详见 **[自定义菜单创建接口](http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单创建接口)**
|
|
|
* getServerIp() 获取微信服务器IP地址列表 返回数组array('127.0.0.1','127.0.0.1')
|
|
@@ -134,6 +212,25 @@ https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/course2_tmpl&lang=zh_CN
|
|
|
* 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=语义理解)**
|
|
|
+ * 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,$code_id,$new_code) 更改 code
|
|
|
+ * unavailableCardCode($code) 设置卡券失效**(不可逆)**
|
|
|
+ * modifyCardStock($data) 库存修改
|
|
|
+ * activateMemberCard($data) 激活/绑定会员卡,参数结构请参看卡券开发文档(6.1.1 激活/绑定会员卡)章节
|
|
|
+ * updateMemberCard($data) 会员卡交易,参数结构请参看卡券开发文档(6.1.2 会员卡交易)章节
|
|
|
+ * updateLuckyMoney($code,$balance,$card_id='') 更新红包金额
|
|
|
+ * setCardTestWhiteList($openid=array(),$user=array()) 设置卡券测试白名单
|
|
|
|
|
|
|
|
|
## 2. wechatext.class.php 非官方扩展API
|
|
@@ -249,9 +346,9 @@ $options = array(
|
|
|
```
|
|
|
|
|
|
### 被动接口方法:
|
|
|
-* valid() 验证连接
|
|
|
+* valid() 验证连接,被动接口必须调用
|
|
|
*
|
|
|
-* getRev() 获取微信服务器发来信息(不返回结果)
|
|
|
+* getRev() 获取微信服务器发来信息(不返回结果),被动接口必须调用
|
|
|
* getRevData() 返回微信服务器发来的信息(数组)
|
|
|
* getRevPostXml() 返回微信服务器发来的原始加密xml信息
|
|
|
* getRevFrom() 返回消息发送者的userid
|
|
@@ -269,7 +366,6 @@ $options = array(
|
|
|
* getRevSendPicsInfo() 获取自定义菜单的图片发送事件信息,事件类型为`pic_sysphoto`或`pic_photo_or_album`或`pic_weixin` 数组结构见php文件内方法说明
|
|
|
* getRevSendGeoInfo() 获取自定义菜单的地理位置选择器事件推送,事件类型为`location_select` 数组结构见php文件内方法说明
|
|
|
* getRevVoice() 返回语音信息(语音型信息) 返回数组{'mediaid'=>'','format'=>''}
|
|
|
-* getRevVoice() 返回语音信息(语音型信息) 返回数组{'mediaid'=>'','format'=>''}
|
|
|
* getRevVideo() 返回视频信息(视频型信息) 返回数组{'mediaid'=>'','thumbmediaid'=>''}
|
|
|
*
|
|
|
* text($text) 设置文本型消息,参数:文本内容
|
|
@@ -280,6 +376,35 @@ $options = array(
|
|
|
* image($mediaid) 设置图片型消息,参数:图片的media_id
|
|
|
* Message($msg = '',$append = false) 设置发送的消息(一般不需要调用这个方法)
|
|
|
* reply() 将已经设置好的消息,回复给微信服务器
|
|
|
+
|
|
|
+### 预定义常量列表:
|
|
|
+```php
|
|
|
+////消息类型,使用实例调用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_LOCATION = 'LOCATION'; //上报地理位置
|
|
|
+ const EVENT_ENTER_AGENT = 'enter_agent'; //用户进入应用
|
|
|
+ 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';//发送结果 - 模板消息发送结果
|
|
|
+```
|
|
|
|
|
|
### 主动接口方法:
|
|
|
* checkAuth($appid='',$appsecret='',$token='') 通用auth验证方法,也用来换取ACCESS_TOKEN 。仅在需要手动指定access_token时才用`$token`
|
|
@@ -314,8 +439,7 @@ $options = array(
|
|
|
* sendMessage($data) 主动发送信息接口,参数请看php文件内方法说明
|
|
|
* authSucc($userid) 二次验证,参数: 员工UserID
|
|
|
* getOauthRedirect($callback,$state='STATE',$scope='snsapi_base') 组合授权跳转接口url
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
# 调用示例
|
|
|
----------
|
|
|
|
|
@@ -327,7 +451,7 @@ $options = array(
|
|
|
'token'=>'tokenaccesskey' //填写你设定的key
|
|
|
);
|
|
|
$weObj = new Wechat($options);
|
|
|
-$weObj->valid(); //注意, 应用验证通过后,可将此句注释掉, 但会降低网站安全性
|
|
|
+$weObj->valid();//明文或兼容模式可以在接口验证通过后注释此句,但加密模式一定不能注释,否则会验证失败
|
|
|
$type = $weObj->getRev()->getRevType();
|
|
|
switch($type) {
|
|
|
case Wechat::MSGTYPE_TEXT:
|