微信公众平台开发接口.docx
《微信公众平台开发接口.docx》由会员分享,可在线阅读,更多相关《微信公众平台开发接口.docx(24页珍藏版)》请在冰豆网上搜索。
微信公众平台开发接口
微信公众平台开发接口
一、消息接口
∙消息接口指南
二、通用接口
∙接口文档
三、自定义菜单接口
∙接口文档
四、使用限制
∙接口权限
五、返回码说明
消息接口指南
返回
出自开放平台
跳转到:
导航,搜索
[隐藏]
∙1简介
∙2申请消息接口
∙3网址接入
∙4消息推送
o4.1文本消息
o4.2图片消息
o4.3地理位置消息
o4.4链接消息
o4.5事件推送
∙5消息回复
o5.1回复文本消息
o5.2回复音乐消息
o5.3回复图文消息
∙6注意事项
∙7示例代码
简介
公众平台消息接口为开发者提供了一种新的消息处理方式。
申请消息接口
点击申请,填写网址url和token,其中token可由开发者可以任意填写,用作生成签名。
网址接入
公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数:
参数
描述
signature
微信加密签名
timestamp
时间戳
nonce
随机数
echostr
随机字符串
开发者通过检验signature对请求进行校验(下面有校验方式)。
若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。
signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
加密/校验流程:
1.将token、timestamp、nonce三个参数进行字典序排序
2.将三个参数字符串拼接成一个字符串进行sha1加密
3.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
消息推送
当普通微信用户向公众账号发消息时,微信服务器将POST该消息到填写的URL上。
结构如下:
文本消息
[CDATA[toUser]]>
[CDATA[fromUser]]>
1348831860
[CDATA[text]]>
[CDATA[thisisatest]]>
1234567890123456
参数
描述
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间(整型)
MsgType
text
Content
文本消息内容
MsgId
消息id,64位整型
图片消息
[CDATA[toUser]]>
[CDATA[fromUser]]>
1348831860
[CDATA[image]]>
[CDATA[thisisaurl]]>
1234567890123456
参数
描述
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间(整型)
MsgType
image
PicUrl
图片链接
MsgId
消息id,64位整型
地理位置消息
[CDATA[toUser]]>
[CDATA[fromUser]]>
1351776360
[CDATA[location]]>
23.134521
113.358803
20
1234567890123456
参数
描述
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间(整型)
MsgType
location
Location_X
地理位置纬度
Location_Y
地理位置经度
Scale
地图缩放大小
Label
地理位置信息
MsgId
消息id,64位整型
链接消息
[CDATA[toUser]]>
[CDATA[fromUser]]>
1351776360
[CDATA[link]]>
[CDATA[公众平台官网链接]]>
[CDATA[公众平台官网链接]]>
[CDATA[url]]>
1234567890123456
参数
描述
ToUserName
接收方微信号
FromUserName
发送方微信号,若为普通用户,则是一个OpenID
CreateTime
消息创建时间
MsgType
消息类型,link
Title
消息标题
Description
消息描述
Url
消息链接
MsgId
消息id,64位整型
事件推送
事件推送只支持微信4.5版本,目前开启自定义菜单接口事件推送、关注与取消关注事件推送。
其余功能即将开放,敬请期待。
[CDATA[toUser]]>
[CDATA[FromUser]]>
123456789
[CDATA[event]]>
[CDATA[EVENT]]>
[CDATA[EVENTKEY]]>
参数
描述
ToUserName
接收方微信号
FromUserName
发送方微信号,若为普通用户,则是一个OpenID
CreateTime
消息创建时间
MsgType
消息类型,event
Event
事件类型,subscribe(订阅)、unsubscribe(取消订阅)、CLICK(自定义菜单点击事件)
EventKey
事件KEY值,与自定义菜单接口中KEY值对应
消息回复
对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行响应(现支持回复文本、图文、语音、视频、音乐和对收到的消息进行星标操作)。
微信服务器在五秒内收不到响应会断掉连接。
回复xml结构如下:
回复文本消息
[CDATA[toUser]]>
[CDATA[fromUser]]>
12345678
[CDATA[text]]>
[CDATA[content]]>
0
参数
描述
ToUserName
接收方帐号(收到的OpenID)
FromUserName
开发者微信号
CreateTime
消息创建时间
MsgType
text
Content
回复的消息内容,长度不超过2048字节
FuncFlag
位0x0001被标志时,星标刚收到的消息。
回复音乐消息
[CDATA[toUser]]>
[CDATA[fromUser]]>
12345678
[CDATA[music]]>
[CDATA[TITLE]]>
[CDATA[DESCRIPTION]]>
[CDATA[MUSIC_Url]]>
[CDATA[HQ_MUSIC_Url]]>
0
参数
描述
ToUserName
接收方帐号(收到的OpenID)
FromUserName
开发者微信号
CreateTime
消息创建时间
MsgType
music
MusicUrl
音乐链接
HQMusicUrl
高质量音乐链接,WIFI环境优先使用该链接播放音乐
FuncFlag
位0x0001被标志时,星标刚收到的消息。
回复图文消息
[CDATA[toUser]]>
[CDATA[fromUser]]>
12345678
[CDATA[news]]>
2
[CDATA[title1]]>
[CDATA[description1]]>
[CDATA[picurl]]>
[CDATA[url]]>
[CDATA[title]]>
[CDATA[description]]>
[CDATA[picurl]]>
[CDATA[url]]>
1
参数
描述
ToUserName
接收方帐号(收到的OpenID)
FromUserName
开发者微信号
CreateTime
消息创建时间
MsgType
news
ArticleCount
图文消息个数,限制为10条以内
Articles
多条图文消息信息,默认第一个item为大图
Title
图文消息标题
Description
图文消息描述
PicUrl
图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80。
Url
点击图文消息跳转链接
注意事项
1.用户OpenID对一个公众号是固定唯一的串
2.请使用80端口
示例代码
PHP:
下载
=====PHP示例代码==============
php
/**
*wechatphptest
*/
//defineyourtoken
define("TOKEN","weixin");
$wechatObj=newwechatCallbackapiTest();
$wechatObj->valid();
classwechatCallbackapiTest
{
publicfunctionvalid()
{
$echoStr=$_GET["echostr"];
//validsignature,option
if($this->checkSignature()){
echo$echoStr;
exit;
}
}
publicfunctionresponseMsg()
{
//getpostdata,Maybeduetothedifferentenvironments
$postStr=$GLOBALS["HTTP_RAW_POST_DATA"];
//extractpostdata
if(!
empty($postStr)){
$postObj=simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
$fromUsername=$postObj->FromUserName;
$toUsername=$postObj->ToUserName;
$keyword=trim($postObj->Content);
$time=time();
$textTpl="
[CDATA[%s]]>
[CDATA[%s]]>
%s
[CDATA[%s]]>
[CDATA[%s]]>
0
";
if(!
empty($keyword))
{
$msgType="text";
$contentStr="Welcometowechatworld!
";
$resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo$resultStr;
}else{
echo"Inputsomething...";
}
}else{
echo"";
exit;
}
}
privatefunctioncheckSignature()
{
$signature=$_GET["signature"];
$timestamp=$_GET["timestamp"];
$nonce=$_GET["nonce"];
$token=TOKEN;
$tmpArr=array($token,$timestamp,$nonce);
sort($tmpArr);
$tmpStr=implode($tmpArr);
$tmpStr=sha1($tmpStr);
if($tmpStr==$signature){
returntrue;
}else{
returnfalse;
}
}
}
>
===========================end==========================
通用接口文档
返回
出自开放平台
跳转到:
导航,搜索
简介
通用接口是使用HTTP请求,让开发者直接与微信服务器交互,实现媒体文件上传、媒体文件获取等功能,达到获取图片、语音、视频等媒体文件的目的。
调用接口所需要的access_token必须通过获取凭证接口获取。
获取凭证
接口说明
在使用通用接口前,你需要做以下两步工作:
1.拥有一个微信公众账号,并获取到appid和appsecret(在公众平台申请内测资格,审核通过后可获得)
2.通过获取凭证接口获取到access_token
注意:
access_token是第三方访问api资源的票据;
access_token对应于公众号是全局唯一的票据,重复获取将导致上次获取的access_token失效。
请求说明
http请求方式:
GET
参数说明
参数
是否必须
说明
grant_type
是
获取access_token填写client_credential
appid
是
第三方用户唯一凭证
secret
是
第三方用户唯一凭证密钥,既appsecret
返回说明
正确的Json返回结果:
{"access_token":
"ACCESS_TOKEN","expires_in":
7200}
参数
说明
access_token
获取到的凭证
expires_in
凭证有效时间,单位:
秒
错误的Json返回示例:
{"errcode":
40013,"errmsg":
"invalidappid"}
统一返回码说明
返回码说明
返回
出自开放平台
跳转到:
导航,搜索
返回码说明
返回码
说明
-1
系统繁忙
0
请求成功
40001
验证失败
40002
不合法的凭证类型
40003
不合法的OpenID
40004
不合法的媒体文件类型
40005
不合法的文件类型
40006
不合法的文件大小
40007
不合法的媒体文件id
40008
不合法的消息类型
40009
不合法的图片文件大小
40010
不合法的语音文件大小
40011
不合法的视频文件大小
40012
不合法的缩略图文件大小
40013
不合法的APPID
40014
不合法的access_token
40014
不合法的access_token
40015
不合法的菜单类型
40016
不合法的按钮个数
40017
不合法的按钮个数
40018
不合法的按钮名字长度
40019
不合法的按钮KEY长度
40020
不合法的按钮URL长度
40021
不合法的菜单版本号
40022
不合法的子菜单级数
40023
不合法的子菜单按钮个数
40024
不合法的子菜单按钮类型
40025
不合法的子菜单按钮名字长度
40026
不合法的子菜单按钮KEY长度
40027
不合法的子菜单按钮URL长度
40028
不合法的自定义菜单使用用户
41001
缺少access_token参数
41002
缺少appid参数
41003
缺少refresh_token参数
41004
缺少secret参数
41005
缺少多媒体文件数据
41006
缺少media_id参数
41007
缺少子菜单数据
42001
access_token超时
43001
需要GET请求
43002
需要POST请求
43003
需要HTTPS请求
44001
多媒体文件为空
44002
POST的数据包为空
44003
图文消息内容为空
45001
多媒体文件大小超过限制
45002
消息内容超过限制
45003
标题字段超过限制
45004
描述字段超过限制
45005
链接字段超过限制
45006
图片链接字段超过限制
45007
语音播放时间超过限制
45008
图文消息超过限制
45009
接口调用超过限制
45010
创建菜单个数超过限制
46001
不存在媒体数据
46002
不存在的菜单版本
46003
不存在的菜单数据
47001
解析JSON/XML内容错误
取自“
窗体顶端
自定义菜单接口
返回
出自开放平台
跳转到:
导航,搜索
[隐藏]
∙1简介
∙2菜单创建
∙3菜单查询
∙4菜单删除
简介
开发者获取使用凭证(如何获取凭证)后,可以使用该凭证对公众账号的自定义菜单进行创建、查询和删除等操作。
自定义菜单接口可实现以下类型按钮:
click(点击事件):
用户点击click类型按钮后,微信服务器会通过消息接口(event类型)推送点击事件给开发者,并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值进行消息回复。
创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。
建议测试时可以尝试取消关注公众账号后,再次关注,则可以看到创建后的效果。
菜单创建
接口说明
通过POST一个特定结构体,实现在微信客户端创建自定义菜单。
请求说明
http请求方式:
POST
请求示例
{
"button":
[
{
"type":
"click",
"name":
"今日歌曲",
"key":
"V1001_TODAY_MUSIC"
},
{
"type":
"click",
"name":
"歌手简介",
"key":
"V1001_TODAY_SINGER"
},
{
"name":
"菜单",
"sub_button":
[
{
"type":
"click",
"name":
"helloword",
"key":
"V1001_HELLO_WORLD"
},