微信接口说明
接口开发说明:
接入方在采用微信开发模式对接时,需要进行中转服务和接口的开发
真Token方案:需集成方开发接口说明中"获取微信Token接口"
假Token方案:需集成方开发接口说明中全部接口
1. 接收消息接口
该接口用于发送与接收文字信息,请参考链接中的客服接口-发消息开发规范:消息接收微信文档
消息接收接口规范:(需注意,提供的接口,不能带参数)
正确举例:
https://api.weixin.qq.com/cgi-bin/message/custom/send
错误举例:
https://api.weixin.qq.com/cgi-bin/message/custom/send?name=123
小能发的消息是一个json包,并非XML,格式参考微信规范文档要求:
Json数据类型:Content-type=application/json
各消息类型所需的JSON数据包如下:
发送文本消息
{
"touser":"OPENID",
"msgtype":"text",
"text":
{
"content":"Hello World"
}
}
发送图片消息
{
"touser":"OPENID",
"msgtype":"image",
"image":
{
"media_id":"MEDIA_ID"
}
}
发送语音消息
{
"touser":"OPENID",
"msgtype":"voice",
"voice":
{
"media_id":"MEDIA_ID"
}
}
2. 获取微信Token接口
该接口用于模拟小能方获取微信Token,请参考链接中的获取access-token开发规范:Token接口规范文档
如采用微信真Token方案,需在接口返回与微信进行验证的真实Token值
如采用微信假Token方案,只需根据规范格式返回参数即可
示例:
A:http请求方式: GET
B:正确举例(请勿加参数):
https://api.weixin.qq.com/cgi-bin/token
C:错误举例:
https://api.weixin.qq.com/cgi-bin/token?name=123
D:参数要求(小能访问token接口自动加的参数):
其中appid和secret,这里是模拟微信的要求,所以,此处的这两个值,是假值,并非真的appid和secret
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 获取access_token填写client_credential |
appid | 是 | 第三方用户唯一凭证 |
secret | 是 | 第三方用户唯一凭证密钥,即appsecret |
小能请求中转服务模拟的Token接口,中转服务返回响应,返回格式要求:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200
}
参数 | 说明 |
---|---|
access_token | 获取到的凭证 |
expires_in | 凭证有效时间,单位:秒 |
由于Token接口,appid和secret都是模拟出来的假的,所以,返回的响应,也是按照微信的格式要求
建议:
A:access_token,由于只有小能和中转服务交互使用,最好做成固定的,并非一定要做成动态的
B:多个公众号接入小能,可根据appid和secret,返回access_token做成不同的值,用于openid做映射,区别此openid对应的真实微信原始ID
3. 多媒体文件下载接口
小能从XML消息里面,取出media_id,按照微信的规范要求,去中转服务那里下载此语音文件。这里需要集成方的中转服务开发一个多媒体文件下载接口:下载临时多媒体文件文档
(下面多媒体文件文档说明)
A:http请求方式:GET
B:请勿在接口地址后面添加参数(小能会自动添加)
正确接口样例:
https://api.weixin.qq.com/cgi-bin/media/get
错误接口样例:
https://api.weixin.qq.com/cgi-bin/media/get?name=123
C:小能请求下载接口地址的示例格式:
http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
media_id | 是 | 媒体文件ID |
中转服务返回响应,返回相应说明
返回说明:
正确情况下的返回HTTP头如下:
HTTP/1.1 200 OK
Connection: close
Content-Type: image/jpeg
Content-disposition: attachment; filename="MEDIA_ID.jpg"
Date: Sun, 06 Jan 2013 10:20:18 GMT
Cache-Control: no-cache, must-revalidate
Content-Length: 339721
curl -G "https://api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"
4. 多媒体文件上传接口
小能请求中转服务上传多媒体文件接口,需要集成方的中转服务开发此接口。上传临时多媒体文件文档
A:http请求方式:POST/FORM
B:接口避免添加参数(小能会自动添加参数)
正确格式:
http://api.weixin.qq.com/cgi-bin/media/upload
错误格式:
http://api.weixin.qq.com/cgi-bin/media/upload?name=123
C:调用示例:
http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
参数 | 是否必须 | 描述 |
---|---|---|
access_token | 是 | 调用接口凭证 |
type | 是 | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb) |
media | 是 | form-data中媒体文件标识,有filename、filelength、content-type等信息 |
小能把图片上传给中转服务之后,需中转服务,实时上传给微信
微信收到中转服务上传的图片,返回给中转服务一个响应
正确情况下的返回JSON数据包结果如下:
{
"type":"TYPE",
"media_id":"MEDIA_ID",
"created_at":123456789
}
参数 | 描述 |
---|---|
type | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图) |
media_id | 媒体文件上传后,获取时的唯一标识 |
created_at | 媒体文件上传时间戳 |
5. 获取微信用户昵称信息接口
用于在客服端显示访客微信昵称(不开发默认显示访客openID),需集成方中转服务开发一个用户信息接口:获取用户昵称文档
返回说明,昵称取自nickname字段的值:
{
"subscribe": 1,
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"nickname": "Band",
"sex": 1,
"language": "zh_CN",
"city": "广州",
"province": "广东",
"country": "中国",
"headimgurl":"http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"subscribe_time": 1382694957,
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
"remark": "",
"groupid": 0
}