MSGTYPE_TEXT
MSGTYPE_TEXT = 'text'
微信公众平台PHP-SDK, 官方API部分
@author dodge dodgepudding@gmail.com
xml_encode(mixed $data, string $root = 'xml', string $item = 'item', string $attr = '', string $id = 'id', string $encoding = 'utf-8') : string
XML编码
mixed | $data | 数据 |
string | $root | 根节点名 |
string | $item | 数字索引的子节点名 |
string | $attr | 根节点属性 |
string | $id | 数字索引子节点key转换的属性名 |
string | $encoding | 数据编码 |
createMenu(array $data) : mixed
创建菜单(认证后的订阅号可用)
array | $data | 菜单数组数据 example: array ( 'button' => array ( 0 => array ( 'name' => '扫码', 'sub_button' => array ( 0 => array ( 'type' => 'scancode_waitmsg', 'name' => '扫码带提示', 'key' => 'rselfmenu_0_0', ), 1 => array ( 'type' => 'scancode_push', 'name' => '扫码推事件', 'key' => 'rselfmenu_0_1', ), ), ), 1 => array ( 'name' => '发图', 'sub_button' => array ( 0 => array ( 'type' => 'pic_sysphoto', 'name' => '系统拍照发图', 'key' => 'rselfmenu_1_0', ), 1 => array ( 'type' => 'pic_photo_or_album', 'name' => '拍照或者相册发图', 'key' => 'rselfmenu_1_1', ) ), ), 2 => array ( 'type' => 'location_select', 'name' => '发送位置', 'key' => 'rselfmenu_2_0' ), ), ) type可以选择为以下几种,其中5-8除了收到菜单事件以外,还会单独收到对应类型的信息。 1、click:点击推事件 2、view:跳转URL 3、scancode_push:扫码推事件 4、scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框 5、pic_sysphoto:弹出系统拍照发图 6、pic_photo_or_album:弹出拍照或者相册发图 7、pic_weixin:弹出微信相册发图器 8、location_select:弹出地理位置选择器 |
uploadForeverMedia(array $data, mixed $type, bool $is_video = false, array $video_info = array()) : bool|array
上传永久素材(认证后的订阅号可用) 新增的永久素材也可以在公众平台官网素材管理模块中看到 注意:上传大文件时可能需要先调用 set_time_limit(0) 避免超时 注意:数组的键值任意,但文件名前必须加@,使用单引号以避免本地路径斜杠被转义
array | $data | {"media":'@Path\filename.jpg'} |
mixed | $type | |
bool | $is_video | 是否为视频文件,默认为否 |
array | $video_info | 视频信息数组,非视频素材不需要提供 array('title'=>'视频标题','introduction'=>'描述') |
getForeverList(string $type, int $offset, int $count) : bool|array
获取永久素材列表(认证后的订阅号可用)
string | $type | 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news) |
int | $offset | 全部素材的偏移位置,0表示从第一个素材 |
int | $count | 返回素材的数量,取值在1到20之间 |
返回数组格式: array( 'total_count'=>0, //该类型的素材的总数 'item_count'=>0, //本次调用获取的素材的数量 'item'=>array() //素材列表数组,内容定义请参考官方文档 )
sendMassMessage(array $data) : bool|array
高级群发消息, 根据OpenID列表群发图文消息(订阅号不可用) 注意:视频需要在调用uploadMedia()方法后,再使用 uploadMpVideo() 方法生成, 然后获得的 mediaid 才能用于群发,且消息类型为 mpvideo 类型。
array | $data | 消息结构 { "touser"=>array( "OPENID1", "OPENID2" ), "msgtype"=>"mpvideo", // 在下面5种类型中选择对应的参数内容 // mpnews | voice | image | mpvideo => array( "media_id"=>"MediaId") // text => array ( "content" => "hello") } |
sendGroupMassMessage(array $data) : bool|array
高级群发消息, 根据群组id群发图文消息(认证后的订阅号可用) 注意:视频需要在调用uploadMedia()方法后,再使用 uploadMpVideo() 方法生成, 然后获得的 mediaid 才能用于群发,且消息类型为 mpvideo 类型。
array | $data | 消息结构 { "filter"=>array( "is_to_all"=>False, //是否群发给所有用户.True不用分组id,False需填写分组id "group_id"=>"2" //群发的分组id ), "msgtype"=>"mpvideo", // 在下面5种类型中选择对应的参数内容 // mpnews | voice | image | mpvideo => array( "media_id"=>"MediaId") // text => array ( "content" => "hello") } |
previewMassMessage(array $data) : bool|array
高级群发消息, 预览群发消息(认证后的订阅号可用) 注意:视频需要在调用uploadMedia()方法后,再使用 uploadMpVideo() 方法生成, 然后获得的 mediaid 才能用于群发,且消息类型为 mpvideo 类型。
array | $data | 消息结构 { "touser"=>"OPENID", "msgtype"=>"mpvideo", // 在下面5种类型中选择对应的参数内容 // mpnews | voice | image | mpvideo => array( "media_id"=>"MediaId") // text => array ( "content" => "hello") } |
getDatacube(string $type, string $subtype, string $begin_date, string $end_date = '') : bool|array
获取统计数据
string | $type | 数据分类(user|article|upstreammsg|interface)分别为(用户分析|图文分析|消息分析|接口分析) |
string | $subtype | 数据子分类,参考 DATACUBE_URL_ARR 常量定义部分 或者README.md说明文档 |
string | $begin_date | 开始时间 |
string | $end_date | 结束时间 |
成功返回查询结果数组,其定义请看官方文档
sendTemplateMessage(array $data) : bool|array
发送模板消息
array | $data | 消息结构 { "touser":"OPENID", "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY", "url":"http://weixin.qq.com/download", "topcolor":"#FF0000", "data":{ "参数名1": { "value":"参数", "color":"#173177" //参数颜色 }, "Date":{ "value":"06月07日 19时24分", "color":"#173177" }, "CardNumber":{ "value":"0426", "color":"#173177" }, "Type":{ "value":"消费", "color":"#173177" } } } |
getCustomServiceOnlineKFlist() : bool|array
获取多客服在线客服接待信息
{ "kf_online_list": [ { "kf_account": "test1@test", //客服账号@微信别名 "status": 1, //客服在线状态 1:pc在线,2:手机在线,若pc和手机同时在线则为 1+2=3 "kf_id": "1001", //客服工号 "auto_accept": 0, //客服设置的最大自动接入数 "accepted_case": 1 //客服当前正在接待的会话数 } ] }
getKFSessionlist(mixed $kf_account) : bool
获取指定客服的会话列表
mixed | $kf_account |
| array //成功返回json数组 array( 'sessionlist' => array ( array ( 'openid'=>'OPENID', //客户 openid 'createtime'=>123456789, //会话创建时间,UNIX 时间戳 ), array ( 'openid'=>'OPENID', //客户 openid 'createtime'=>123456789, //会话创建时间,UNIX 时间戳 ), ) )
getKFSessionWait() : bool
获取未接入会话列表
| array //成功返回json数组 array ( 'count' => 150 , //未接入会话数量 'waitcaselist' => array ( array ( 'openid'=>'OPENID', //客户 openid 'kf_account ' =>'', //指定接待的客服,为空则未指定 'createtime'=>123456789, //会话创建时间,UNIX 时间戳 ), array ( 'openid'=>'OPENID', //客户 openid 'kf_account ' =>'', //指定接待的客服,为空则未指定 'createtime'=>123456789, //会话创建时间,UNIX 时间戳 ) ) )
addKFAccount(string $account, string $nickname, string $password) : bool|array
添加客服账号
string | $account | //完整客服账号,格式为:账号前缀@公众号微信号,账号前缀最多10个字符,必须是英文或者数字字符 |
string | $nickname | //客服昵称,最长6个汉字或12个英文字符 |
string | $password | //客服账号明文登录密码,会自动加密 |
成功返回结果 { "errcode": 0, "errmsg": "ok", }
updateKFAccount(string $account, string $nickname, string $password) : bool|array
修改客服账号信息
string | $account | //完整客服账号,格式为:账号前缀@公众号微信号,账号前缀最多10个字符,必须是英文或者数字字符 |
string | $nickname | //客服昵称,最长6个汉字或12个英文字符 |
string | $password | //客服账号明文登录密码,会自动加密 |
成功返回结果 { "errcode": 0, "errmsg": "ok", }
querySemantic(string $uid, string $query, string $category, float $latitude, float $longitude, string $city = "", string $region = "") : bool|array
语义理解接口
string | $uid | 用户唯一id(非开发者id),用户区分公众号下的不同用户(建议填入用户openid) |
string | $query | 输入文本串 |
string | $category | 需要使用的服务类型,多个用“,”隔开,不能为空 |
float | $latitude | 纬度坐标,与经度同时传入;与城市二选一传入 |
float | $longitude | 经度坐标,与纬度同时传入;与城市二选一传入 |
string | $city | 城市名称,与经纬度二选一传入 |
string | $region | 区域名称,在城市存在的情况下可省略;与经纬度二选一传入 |
createCardQrcode(mixed $card_id, string $code = '', string $openid = '', int $expire_seconds, bool $is_unique_code = false, string $balance = '') : bool|string
生成卡券二维码 成功则直接返回ticket值,可以用 getQRUrl($ticket) 换取二维码url
mixed | $card_id | |
string | $code | 指定卡券 code 码,只能被领一次。use_custom_code 字段为 true 的卡券必须填写,非自定义 code 不必填写。 |
string | $openid | 指定领取者的 openid,只有该用户能领取。bind_openid 字段为 true 的卡券必须填写,非自定义 openid 不必填写。 |
int | $expire_seconds | 指定二维码的有效时间,范围是 60 ~ 1800 秒。不填默认为永久有效。 |
bool | $is_unique_code | 指定下发二维码,生成的二维码随机分配一个 code,领取后不可再次扫描。填写 true 或 false。默认 false。 |
string | $balance | 红包余额,以分为单位。红包类型必填(LUCKY_MONEY),其他卡券类型不填。 |
consumeCardCode(string $code, string $card_id = '') : bool|array
消耗 code 自定义 code(use_custom_code 为 true)的优惠券,在 code 被核销时,必须调用此接口。
string | $code | 要消耗的序列号 |
string | $card_id | 要消耗序列号所述的 card_id,创建卡券时use_custom_code 填写 true 时必填。 |
{ "errcode":0, "errmsg":"ok", "card":{"card_id":"pFS7Fjg8kV1IdDz01r4SQwMkuCKc"}, "openid":"oFS7Fjl0WsZ9AMZqrI80nbIq8xrA" }
checkCardCode(string $code) : bool|array
查询 code 的有效性(非自定义 code)
string | $code |
{ "errcode":0, "errmsg":"ok", "openid":"oFS7Fjl0WsZ9AMZqrI80nbIq8xrA", //用户 openid "card":{ "card_id":"pFS7Fjg8kV1IdDz01r4SQwMkuCKc", "begin_time": 1404205036, //起始使用时间 "end_time": 1404205036, //结束时间 } }
updateCardCode(string $code, string $card_id, string $new_code) : bool
更改 code 为确保转赠后的安全性,微信允许自定义code的商户对已下发的code进行更改。 注:为避免用户疑惑,建议仅在发生转赠行为后(发生转赠后,微信会通过事件推送的方式告知商户被转赠的卡券code)对用户的code进行更改。
string | $code | 卡券的 code 编码 |
string | $card_id | 卡券 ID |
string | $new_code | 新的卡券 code 编码 |
applyShakeAroundDevice(array $data) : bool|mixed
[applyShakeAroundDevice 申请配置设备所需的UUID、Major、Minor。 若激活率小于50%,不能新增设备。单次新增设备超过500 个,需走人工审核流程。 审核通过后,可用迒回的批次ID 用“查询设备列表”接口拉取本次申请的设备ID]
array | $data | array( "quantity" => 3,//申请的设备ID 的数量,单次新增设备超过500 个,需走人工审核流程(必填) "apply_reason" => "测试",//申请理由(必填) "comment" => "测试专用",//备注(非必填) "poi_id" => 1234 //设备关联的门店ID(非必填) ) |
{ "data": { "apply_id": 123, "device_identifiers":[ { "device_id":10100, "uuid":"FDA50693-A4E2-4FB1-AFCF-C6EB07647825", "major":10001, "minor":10002 } ] }, "errcode": 0, "errmsg": "success." }
apply_id:申请的批次ID,可用在“查询设备列表”接口按批次查询本次申请成功的设备ID device_identifiers:指定的设备ID 列表 device_id:设备编号 uuid、major、minor audit_status:审核状态。0:审核未通过、1:审核中、2:审核已通过;审核会在三个工作日内完成 audit_comment:审核备注,包括审核不通过的原因
searchShakeAroundDevice(array $data) : bool|mixed
[searchShakeAroundDevice 查询已有的设备ID、UUID、Major、Minor、激活状态、备注信息、关联门店、关联页面等信息。 可指定设备ID 或完整的UUID、Major、Minor 查询,也可批量拉取设备信息列表。]
array | $data | $data 三种格式: ①查询指定设备时:$data = array( "device_identifiers" => array( array( "device_id" => 10100, "uuid" => "FDA50693-A4E2-4FB1-AFCF-C6EB07647825", "major" => 10001, "minor" => 10002 ) ) ); device_identifiers:指定的设备 device_id:设备编号,若填了UUID、major、minor,则可不填设备编号,若二者都填,则以设备编号为优先 uuid、major、minor:三个信息需填写完整,若填了设备编号,则可不填此信息 +------------------------------------------------------------------------------------------------------------- ②需要分页查询或者指定范围内的设备时: $data = array( "begin" => 0, "count" => 3 ); begin:设备列表的起始索引值 count:待查询的设备个数 +------------------------------------------------------------------------------------------------------------- ③当需要根据批次ID 查询时: $data = array( "apply_id" => 1231, "begin" => 0, "count" => 3 ); apply_id:批次ID +------------------------------------------------------------------------------------------------------------- |
正确迒回JSON 数据示例: 字段说明 { "data": { "devices": [ //指定的设备信息列表 { "comment": "", //设备的备注信息 "device_id": 10097, //设备编号 "major": 10001, "minor": 12102, "page_ids": "15369", //与此设备关联的页面ID 列表,用逗号隔开 "status": 1, //激活状态,0:未激活,1:已激活(但不活跃),2:活跃 "poi_id": 0, //门店ID "uuid": "FDA50693-A4E2-4FB1-AFCF-C6EB07647825" }, { "comment": "", //设备的备注信息 "device_id": 10098, //设备编号 "major": 10001, "minor": 12103, "page_ids": "15368", //与此设备关联的页面ID 列表,用逗号隔开 "status": 1, //激活状态,0:未激活,1:已激活(但不活跃),2:活跃 "poi_id": 0, //门店ID "uuid": "FDA50693-A4E2-4FB1-AFCF-C6EB07647825" } ], "total_count": 151 //商户名下的设备总量 }, "errcode": 0, "errmsg": "success." }
bindLocationShakeAroundDevice(string $device_id, int $poi_id, string $comment, string $uuid, int $major, int $minor) : bool|mixed
[bindLocationShakeAroundDevice 修改设备关联的门店ID、设备的备注信息。 可用设备ID 或完整的UUID、Major、Minor指定设备,二者选其一。]
string | $device_id | 设备编号,若填了UUID、major、minor,则可不填设备编号,若二者都填,则以设备编号为优先 |
int | $poi_id | 待关联的门店ID |
string | $comment | 设备的备注信息 |
string | $uuid | UUID、major、minor,三个信息需填写完整,若填了设备编号,则可不填此信息 |
int | $major | |
int | $minor |
正确返回JSON 数据示例: { "data": { }, "errcode": 0, "errmsg": "success." }
bindPageShakeAroundDevice(string $device_id, array $page_ids = array(), \number $bind = 1, \number $append = 1, string $uuid, int $major, int $minor) : bool|mixed
[bindPageShakeAroundDevice 配置设备与页面的关联关系。 支持建立或解除关联关系,也支持新增页面或覆盖页面等操作。 配置完成后,在此设备的信号范围内,即可摇出关联的页面信息。 若设备配置多个页面,则随机出现页面信息]
string | $device_id | 设备编号,若填了UUID、major、minor,则可不填设备编号,若二者都填,则以设备编号为优先 |
array | $page_ids | 待关联的页面列表 |
\number | $bind | 关联操作标志位, 0 为解除关联关系,1 为建立关联关系 |
\number | $append | 新增操作标志位, 0 为覆盖,1 为新增 |
string | $uuid | UUID、major、minor,三个信息需填写完整,若填了设备编号,则可不填此信息 |
int | $major | |
int | $minor |
正确返回JSON 数据示例: { "data": { }, "errcode": 0, "errmsg": "success." }
addShakeAroundPage(string $title, string $description, \sting $icon_url, string $page_url, string $comment = '') : bool|mixed
[addShakeAroundPage 增加摇一摇出来的页面信息,包括在摇一摇页面出现的主标题、副标题、图片和点击进去的超链接。]
string | $title | 在摇一摇页面展示的主标题,不超过6 个字 |
string | $description | 在摇一摇页面展示的副标题,不超过7 个字 |
\sting | $icon_url | 在摇一摇页面展示的图片, 格式限定为:jpg,jpeg,png,gif; 建议120120 , 限制不超过200200 |
string | $page_url | 跳转链接 |
string | $comment | 页面的备注信息,不超过15 个字,可不填 |
正确返回JSON 数据示例: { "data": { "page_id": 28840 //新增页面的页面id } "errcode": 0, "errmsg": "success." }
updateShakeAroundPage(int $page_id, string $title, string $description, \sting $icon_url, string $page_url, string $comment = '') : bool|mixed
[updateShakeAroundPage 编辑摇一摇出来的页面信息,包括在摇一摇页面出现的主标题、副标题、图片和点击进去的超链接。]
int | $page_id | |
string | $title | 在摇一摇页面展示的主标题,不超过6 个字 |
string | $description | 在摇一摇页面展示的副标题,不超过7 个字 |
\sting | $icon_url | 在摇一摇页面展示的图片, 格式限定为:jpg,jpeg,png,gif; 建议120120 , 限制不超过200200 |
string | $page_url | 跳转链接 |
string | $comment | 页面的备注信息,不超过15 个字,可不填 |
正确返回JSON 数据示例: { "data": { "page_id": 28840 //编辑页面的页面ID } "errcode": 0, "errmsg": "success." }
searchShakeAroundPage(array $page_ids = array(), int $begin, int $count = 1) : bool|mixed
[searchShakeAroundPage 查询已有的页面,包括在摇一摇页面出现的主标题、副标题、图片和点击进去的超链接。 提供两种查询方式,①可指定页面ID 查询,②也可批量拉取页面列表。]
array | $page_ids | |
int | $begin | |
int | $count | ①需要查询指定页面时: { "page_ids":[12345, 23456, 34567] } +------------------------------------------------------------------------------------------------------------- ②需要分页查询或者指定范围内的页面时: { "begin": 0, "count": 3 } +------------------------------------------------------------------------------------------------------------- |
正确返回JSON 数据示例: { "data": { "pages": [ { "comment": "just for test", "description": "test", "icon_url": "https://www.baidu.com/img/bd_logo1.png", "page_id": 28840, "page_url": "http://xw.qq.com/testapi1", "title": "测试1" }, { "comment": "just for test", "description": "test", "icon_url": "https://www.baidu.com/img/bd_logo1.png", "page_id": 28842, "page_url": "http://xw.qq.com/testapi2", "title": "测试2" } ], "total_count": 2 }, "errcode": 0, "errmsg": "success." } 字段说明: total_count 商户名下的页面总数 page_id 摇周边页面唯一ID title 在摇一摇页面展示的主标题 description 在摇一摇页面展示的副标题 icon_url 在摇一摇页面展示的图片 page_url 跳转链接 comment 页面的备注信息
deleteShakeAroundPage(array $page_ids = array()) : bool|mixed
[deleteShakeAroundPage 删除已有的页面,包括在摇一摇页面出现的主标题、副标题、图片和点击进去的超链接。 只有页面与设备没有关联关系时,才可被删除。]
array | $page_ids | { "page_ids":[12345,23456,34567] } |
正确返回JSON 数据示例: { "data": { }, "errcode": 0, "errmsg": "success." }
getShakeInfoShakeAroundUser(string $ticket) : bool|mixed
[getShakeInfoShakeAroundUser 获取设备信息,包括UUID、major、minor,以及距离、openID 等信息。]
string | $ticket | 摇周边业务的ticket,可在摇到的URL 中得到,ticket生效时间为30 分钟 |
正确返回JSON 数据示例: { "data": { "page_id ": 14211, "beacon_info": { "distance": 55.00620700469034, "major": 10001, "minor": 19007, "uuid": "FDA50693-A4E2-4FB1-AFCF-C6EB07647825" }, "openid": "oVDmXjp7y8aG2AlBuRpMZTb1-cmA" }, "errcode": 0, "errmsg": "success." } 字段说明: beacon_info 设备信息,包括UUID、major、minor,以及距离 UUID、major、minor UUID、major、minor distance Beacon 信号与手机的距离 page_id 摇周边页面唯一ID openid 商户AppID 下用户的唯一标识 poi_id 门店ID,有的话则返回,没有的话不会在JSON 格式内
deviceShakeAroundStatistics(int $device_id, int $begin_date, int $end_date, string $uuid, int $major, int $minor) : bool|mixed
[deviceShakeAroundStatistics description]
int | $device_id | 设备编号,若填了UUID、major、minor,即可不填设备编号,二者选其一 |
int | $begin_date | 起始日期时间戳,最长时间跨度为30 天 |
int | $end_date | 结束日期时间戳,最长时间跨度为30 天 |
string | $uuid | UUID、major、minor,三个信息需填写完成,若填了设备编辑,即可不填此信息,二者选其一 |
int | $major | |
int | $minor |
正确返回JSON 数据示例: { "data": [ { "click_pv": 0, "click_uv": 0, "ftime": 1425052800, "shake_pv": 0, "shake_uv": 0 }, { "click_pv": 0, "click_uv": 0, "ftime": 1425139200, "shake_pv": 0, "shake_uv": 0 } ], "errcode": 0, "errmsg": "success." } 字段说明: ftime 当天0 点对应的时间戳 click_pv 点击摇周边消息的次数 click_uv 点击摇周边消息的人数 shake_pv 摇周边的次数 shake_uv 摇周边的人数