在一个偶然的机会获取到了一对微信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时间戳

参考资料:

1、微信公众平台开发概述

2、微信开放平台





# web安全  

tocToc: