在一个偶然的机会获取到了一对微信AppId与Secret,于是整理了一下常用和有用的微信公众号信息获取的接口,以下是部分微信接口调用示例和说明。
1、平台开发者获取access_token
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
a、接口调用请求说明
http请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
b、参数说明
参数 是否必须 说明
grant_type 是 获取access_token填写client_credential
appid 是 第三方用户唯一凭证
secret 是 第三方用户唯一凭证密钥,即appsecret
c、返回说明
微信会返回下述JSON数据包给公众号:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
2、获取微信服务器IP地址
如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过该接口获得微信服务器IP地址列表或者IP网段信息。
a、接口调用请求说明
http请求方式: GET
https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN
b、参数说明
参数 是否必须 说明
access_token 是 公众号的access_token
c、返回说明
正常情况下,微信会返回下述JSON数据包给公众号:
{
"ip_list": [
"127.0.0.1",
"127.0.0.2",
"101.226.103.0/25"
]
}
3、自定义菜单查询接口
使用接口创建自定义菜单后,开发者还可使用接口查询自定义菜单的结构。另外请注意,在设置了个性化菜单后,使用本自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息。
a、请求说明
http请求方式:GET
https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN
b、参数说明
参数 是否必须 说明
access_token 是 公众号的access_token
c、返回说明
对应创建接口,正确的Json返回结果:
{
"menu": {
"button": [
{
"type": "click",
"name": "今日歌曲",
"key": "V1001_TODAY_MUSIC",
"sub_button": [ ]
},
{
"name": "菜单",
"sub_button": [
{
"type": "view",
"name": "搜索",
"url": "http://www.soso.com/",
"sub_button": [ ]
}
]
}
]
}
}
4、自定义菜单删除接口
使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。另请注意,在个性化菜单时,调用此接口会删除默认菜单及全部个性化菜单。
a、请求说明
http请求方式:GET
https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN
b、参数说明
参数 是否必须 说明
access_token 是 公众号的access_token
c、返回说明
对应创建接口,正确的Json返回结果:
{"errcode":0,"errmsg":"ok"}
5、添加客服帐号
开发者可以通过本接口为公众号添加客服账号,每个公众号最多添加10个客服账号。
a、接口调用请求
http请求方式: POST
https://api.weixin.qq.com/customservice/kfaccount/add?access_token=ACCESS_TOKEN
b、POST数据示例
{
"kf_account" : "test1@test",
"nickname" : "客服1",
"password" : "pswmd5",
}
c、返回说明
正确时的JSON返回结果
{
"errcode" : 0,
"errmsg" : "ok",
}
6、获取所有客服账号
开发者通过本接口,获取公众号中所设置的客服基本信息,包括客服工号、客服昵称、客服登录账号。
a、接口调用请求
http请求方式: GET
https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=ACCESS_TOKEN
b、返回说明
{
"kf_list": [
{
"kf_account": "test1@test",
"kf_nick": "ntest1",
"kf_id": "1001"
"kf_headimgurl": " http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjfUS8Ym0GSaLic0FD3vN0V8PILcibEGb2fPfEOmw/0"
},
{
"kf_account": "test2@test",
"kf_nick": "ntest2",
"kf_id": "1002"
"kf_headimgurl": " http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjfUS8Ym0GSaLic0FD3vN0V8PILcibEGb2fPfEOmw /0"
}
]
}
7、修改客服帐号
开发者可以通过本接口为公众号修改客服账号。
a、接口调用请求
http请求方式: POST
https://api.weixin.qq.com/customservice/kfaccount/update?access_token=ACCESS_TOKEN
b、POST数据示例
{
"kf_account" : "test1@test",
"nickname" : "客服1",
"password" : "pswmd5",
}
c、返回说明
正确时的JSON返回结果
{
"errcode" : 0,
"errmsg" : "ok",
}
8、删除客服帐号
开发者可以通过该接口为公众号删除客服帐号。
a、接口调用请求
http请求方式: GET
https://api.weixin.qq.com/customservice/kfaccount/del?access_token=ACCESS_TOKEN
b、POST数据示例
{
"kf_account" : "test1@test",
"nickname" : "客服1",
"password" : "pswmd5",
}
c、返回说明
正确时的JSON返回结果
{
"errcode" : 0,
"errmsg" : "ok",
}
9、用户授权登陆第三方应用
第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login)。
第一步
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
参数说明
参数 是否必须 说明
appid 是 应用唯一标识
redirect_uri 是 请使用urlEncode对链接进行处理
response_type 是 填code
scope 是 应用授权作用域,拥有多个作用域用逗号(,)分隔,网页应用目前仅填写snsapi_login即
state 否 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
返回说明
用户允许授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数
redirect_uri?code=CODE&state=STATE
第二步
通过code获取access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
参数说明
参数 是否必须 说明
appid 是 应用唯一标识,在微信开放平台提交应用审核通过后获得
secret 是 应用密钥AppSecret,在微信开放平台提交应用审核通过后获得
code 是 填写第一步获取的code参数
grant_type 是 填authorization_code
返回说明
正确的返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
第三步
获取access_token后,进行接口调用,有以下前提:
1. access_token有效且未超时;
2. 微信用户已授权给第三方应用帐号相应接口作用域(scope)。
接口作用域(scope),能调用的接口有以下
其中snsapi_base属于基础接口,若应用已拥有其它scope权限,则默认拥有snsapi_base的权限。
授权作用域(scope) | 接口 | 接口说明 |
---|---|---|
snsapi_base | /sns/oauth2/access_token | 通过code换取access_token、refresh_token和已授权scope |
snsapi_base | /sns/oauth2/refresh_token | 刷新或续期access_token使用 |
snsapi_base | /sns/auth | 检查access_token有效性 |
snsapi_userinfo | /sns/userinfo | 获取用户个人信息 |
拉取用户信息(需scope为 snsapi_userinfo)
http:GET
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
参数说明
参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid 用户的唯一标识
lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
返回说明
正确时返回的JSON数据包如下:
{"openid":" OPENID",
" nickname": NICKNAME,
"sex":"1",
"province":"PROVINCE"
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
"privilege":[ "PRIVILEGE1" "PRIVILEGE2" ],
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
检验授权凭证(access_token)是否有效
http:GET
https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
参数说明
参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid 用户的唯一标识
返回说明
正确的JSON返回结果:
{ "errcode":0,"errmsg":"ok"}
错误时的JSON返回示例:
{ "errcode":40003,"errmsg":"invalid openid"}
10、批量获取用户基本信息
请求说明
http请求方式: POST
https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN
POST数据示例
{
"user_list": [
{
"openid": "otvxTs4dckWG7imySrJd6jSi0CWE",
"lang": "zh-CN"
},
{
"openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg",
"lang": "zh-CN"
}
]
}
返回说明
{
"user_info_list": [
{
"subscribe": 1,
"openid": "otvxTs4dckWG7imySrJd6jSi0CWE",
"nickname": "iWithery",
"sex": 1,
"language": "zh_CN",
"city": "Jieyang",
"province": "Guangdong",
"country": "China",
"headimgurl": "http://wx.qlogo.cn/mmopen/xbIQx1GRqdvyqkMMhEaGOX802l1CyqMJNgUzKP8MeAeHFicRDSnZH7FY4XB7p8XHXIf6uJA2SCun
TPicGKezDC4saKISzRj3nz/0",
"subscribe_time": 1434093047,
"unionid": "oR5GjjgEhCMJFyzaVZdrxZ2zRRF4",
"remark": "",
"groupid": 0,
"tagid_list":[128,2]
},
{
"subscribe": 0,
"openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg",
"unionid": "oR5GjjjrbqBZbrnPwwmSxFukE41U",
}
]
}
11、获取微信公众号用户列表
调用请求说明
http请求方式: GET(请使用https协议)
https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
参数说明
参数 是否必须 说明
access_token 是 调用接口凭证
next_openid 是 第一个拉取的OPENID,不填默认从头开始拉取
返回说明
正确时返回JSON数据包:
{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
参数说明
参数 说明
total 关注该公众账号的总用户数
count 拉取的OPENID个数,最大值为10000
data 列表数据,OPENID的列表
next_openid 拉取列表的最后一个用户的OPENID
12、企业新版微信客服
获取客服基本信息
http请求方式: GET
https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=ACCESS_TOKEN
返回说明
返回数据示例(正确时的JSON返回结果):
{
"kf_list" : [
{
"kf_account" : "test1@test",
"kf_headimgurl" : "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjfUS8Ym0GSaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
"kf_id" : "1001",
"kf_nick" : "ntest1",
"kf_wx" : "kfwx1"
},
{
"kf_account" : "test3@test",
"kf_headimgurl" : "http://mmbiz.qpic.cn/mmbiz/4whpV1VZl2iccsvYbHvnphkyGtnvjfUS8Ym0GSaLic0FD3vN0V8PILcibEGb2fPfEOmw/0",
"kf_id" : "1003",
"kf_nick" : "ntest3",
"invite_wx" : "kfwx3",
"invite_expire_time" : 123456789,
"invite_status" : "waiting"
}
]
}
参数说明
参数 说明
kf_account 完整客服帐号,格式为:帐号前缀@公众号微信号
kf_nick 客服昵称
kf_id 客服编号
kf_headimgurl 客服头像
kf_wx 如果客服帐号已绑定了客服人员微信号,则此处显示微信号
invite_wx 如果客服帐号尚未绑定微信号,但是已经发起了一个绑定邀请,则此处显示绑定邀请的微信号
invite_expire_time 如果客服帐号尚未绑定微信号,但是已经发起过一个绑定邀请,邀请的过期时间,为unix 时间戳
invite_status 邀请的状态,有等待确认“waiting”,被拒绝“rejected”,过期“expired”
13、获取聊天记录
调用说明
http请求方式: POST
https://api.weixin.qq.com/customservice/msgrecord/getmsglist?access_token=ACCESS_TOKEN
POST数据示例如下:
{
"starttime" : 987654321,
"endtime" : 987654321,
"msgid" : 1,
"number" : 10000
}
参数说明
参数 说明
starttime 起始时间,unix时间戳
endtime 结束时间,unix时间戳,每次查询时段不能超过24小时
msgid 消息id顺序从小到大,从1开始
number 每次获取条数,最多10000条
返回说明
{
"recordlist" : [
{
"openid" : "oDF3iY9WMaswOPWjCIp_f3Bnpljk",
"opercode" : 2002,
"text" : " 您好,客服test1为您服务。",
"time" : 1400563710,
"worker" : "test1@test"
},
{
"openid" : "oDF3iY9WMaswOPWjCIp_f3Bnpljk",
"opercode" : 2003,
"text" : "你好,有什么事情?",
"time" : 1400563731,
"worker" : "test1@test"
}
],
"number":2,
"msgid":20165267
}
参数说明
参数 说明
worker 完整客服帐号,格式为:帐号前缀@公众号微信号
openid 用户标识
opercode 操作码,2002(客服发送信息),2003(客服接收消息)
text 聊天记录
time 操作时间,unix时间戳
参考资料:
2、微信开放平台