一 、微信公众平台消息接口简介
公众平台消息接口为开发者提供了一种新的消息处理方式。
二 、 微信公众平台消息接口申请
点击申请,如实填写负责人姓名 、 手机号和邮箱,填写网址url和token,其中token可由开发者可以任意填写,用作生成签名。
三 、 网址接入
公众平台用户提交信息后,我们将以GET请求方式请求到填写的Url上,并且带上四个参数:
- signature — 微信加密签名
- timestamp — 时间戳
- nonce — 随机数
- echostr — 随机字符串
开发者通过检验signature对网址接入合法性进行校验。若此次GET请求原样返回echostr参数内容,则接入生效,否则接入失败。 验证signature将结合开发者填写的token参数、timestamp参数和nonce参数等,加密流程:
- 将token、timestamp、nonce三个参数进行字典序排序
- 将三个参数字符串拼接成一个字符串进行sha1加密
- 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
四 、 消息推送
当普通微信用户向公众账号发消息时,公众平台将POST该消息到填写的Url上(现支持文本消息以及地理位置消息)。结构如下:
文本消息xml格式
1 2 3 4 5 6 7 |
<xml>
<ToUserName> <![CDATA[toUser]]> </ToUserName> <FromUserName> <![CDATA[fromUser]]> </FromUserName> <CreateTime>1348831860 </CreateTime> <MsgType> <![CDATA[text]]> </MsgType> <Content> <![CDATA[this is a test]]> </Content> </xml> |
ToUserName 消息接收方微信号,一般为公众平台账号微信号
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 文本消息为text
Content 消息内容
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 文本消息为text
Content 消息内容
地理位置消息xml格式
1 2 3 4 5 6 7 8 9 10 |
<xml>
<ToUserName> <![CDATA[toUser]]> </ToUserName> <FromUserName> <![CDATA[fromUser]]> </FromUserName> <CreateTime>1351776360 </CreateTime> <MsgType> <![CDATA[location]]> </MsgType> <Location_X>23.134521 </Location_X> <Location_Y>113.358803 </Location_Y> <Scale>20 </Scale> <Label> <![CDATA[位置信息]]> </Label> </xml> |
ToUserName 消息接收方微信号,一般为公众平台账号微信号
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 消息类型,地理位置为location
Location_X 地理位置纬度
Location_Y 地理位置经度
Scale 地图缩放大小
Label 地理位置信息
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 消息类型,地理位置为location
Location_X 地理位置纬度
Location_Y 地理位置经度
Scale 地图缩放大小
Label 地理位置信息
图片消息结构
1 2 3 4 5 6 7 |
<xml>
<ToUserName> <![CDATA[toUser]]> </ToUserName> <FromUserName> <![CDATA[fromUser]]> </FromUserName> <CreateTime>1348831860 </CreateTime> <MsgType> <![CDATA[image]]> </MsgType> <PicUrl> <![CDATA[this is a url]></PicUrl> </xml> |
ToUserName 消息接收方微信号,一般为公众平台账号微信号
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 消息类型image
PicUrl 图片链接,开发者可以用HTTP GET获取
FromUserName 消息发送方微信号
CreateTime 消息创建时间
MsgType 消息类型image
PicUrl 图片链接,开发者可以用HTTP GET获取
五 、 消息回复
对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行相应操作(现支持回复文本消息 、 回复图文消息和星标操作)。xml结构如下:
回复文本消息格式
1 2 3 4 5 6 7 8 |
<xml>
<ToUserName> <![CDATA[toUser]]> </ToUserName> <FromUserName> <![CDATA[fromUser]]> </FromUserName> <CreateTime>12345678 </CreateTime> <MsgType> <![CDATA[text]]> </MsgType> <Content> <![CDATA[content]]> </Content> <FuncFlag>0 </FuncFlag> </xml> |
参数解释:
FromUserName 消息发送方
ToUserName 消息接收方
CreateTime 消息创建时间
MsgType 消息类型,文本消息必须填写text
Content 消息内容,大小限制在2048字节,字段为空为不合法请求
ToUserName 消息接收方
CreateTime 消息创建时间
MsgType 消息类型,文本消息必须填写text
Content 消息内容,大小限制在2048字节,字段为空为不合法请求
回复图文消息格式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<xml>
<ToUserName> <![CDATA[toUser]]> </ToUserName> <FromUserName> <![CDATA[fromUser]]> </FromUserName> <CreateTime>12345678 </CreateTime> <MsgType> <![CDATA[news]]> </MsgType> <Content> <![CDATA[]]> </Content> <ArticleCount>2 </ArticleCount> <Articles> <item> <Title> <![CDATA[title1]]> </Title> <Description> <![CDATA[description1]]> </Description> <PicUrl> <![CDATA[picurl]]> </PicUrl> <Url> <![CDATA[url]]> </Url> </item> <item> <Title> <![CDATA[title]]> </Title> <Description> <![CDATA[description]]> </Description> <PicUrl> <![CDATA[picurl]]> </PicUrl> <Url> <![CDATA[url]]> </Url> </item> </Articles> <FuncFlag>1 </FuncFlag> </xml> |
参数解释:
FromUserName 消息发送方
ToUserName 消息接收方
CreateTime 消息创建时间
MsgType 消息类型,图文消息必须填写news
Content 消息内容,图文消息可填空
ArticleCount 图文消息个数,限制为10条以内
Articles 多条图文消息信息,默认第一个item为大图
Title 图文消息标题
Description 图文消息描述
PicUrl 图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80,限制图片链接的域名需要与开发者填写的基本资料中的Url一致
Url 点击图文消息跳转链接
ToUserName 消息接收方
CreateTime 消息创建时间
MsgType 消息类型,图文消息必须填写news
Content 消息内容,图文消息可填空
ArticleCount 图文消息个数,限制为10条以内
Articles 多条图文消息信息,默认第一个item为大图
Title 图文消息标题
Description 图文消息描述
PicUrl 图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80,限制图片链接的域名需要与开发者填写的基本资料中的Url一致
Url 点击图文消息跳转链接
星标消息
在xml结构中,有一个FuncFlag字段,开发者可以通过填写FuncFlag字段为1来对消息进行星标,你可以在实时消息的星标消息分类中找到该消息