准备工作
-
服务器配置
url:格式为http://外网IP/wx,端口必须为80端口
token:和微信服务器约定好的一串字符串,区别于access_token,只用于验证开发服务器
-
验证token
提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,若验证成功,则说明验证成功
验证过程如下:
微信数据通信
微信向服务器推送的消息格式为XML
MsgType主要有:event,text,image,voice,video等,服务器一般都是通过MsgType来区分公众号推送过来的信息类别。
[event]
- 关注【subscribe】
<xml>
<ToUserName><![CDATA[xxxxxxx]]></ToUserName>
<FromUserName><![CDATA[ociip1cY31Nl9jOq3ENbQAQEooiI]]></FromUserName>
<CreateTime>1543031324</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[]]></EventKey>
</xml>
- 取关【unsubscribe】
<xml>
<ToUserName><![CDATA[xxxxxxx]]></ToUserName>
<FromUserName><![CDATA[ociip1cY31Nl9jOq3ENbQAQEooiI]]></FromUserName>
<CreateTime>1543031206</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[unsubscribe]]></Event>
<EventKey><![CDATA[]]></EventKey>
</xml>
- 菜单点击【CLICK】
<xml>
<ToUserName><![CDATA[xxxxxx]]></ToUserName>
<FromUserName><![CDATA[ociip1cY31Nl9jOq3ENbQAQEooiI]]></FromUserName>
<CreateTime>1543031358</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[CLICK]]></Event>
<EventKey><![CDATA[V1001_COUNT]]></EventKey>
</xml>
- 扫码【SCAN】
<xml>
<ToUserName><![CDATA[xxxxxx]]></ToUserName>
<FromUserName><![CDATA[ociip1cY31Nl9jOq3ENbQAQEooiI]]></FromUserName>
<CreateTime>1543032160</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[SCAN]]></Event>
<EventKey><![CDATA[ociip1ZNZRZR6EuxHd0JXyiQg1iE]]></EventKey>
<Ticket><![CDATA[gQGE8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyYXpDLTVqT0VlRmwxMGtWdmhzY3QAAgQUrPdbAwQAjScA]]></Ticket>
</xml>
[text]
<xml>
<ToUserName><![CDATA[xxxxxx]]></ToUserName>
<FromUserName><![CDATA[ociip1cY31Nl9jOq3ENbQAQEooiI]]></FromUserName>
<CreateTime>1543031692</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
<MsgId>6627270654256482055</MsgId>
</xml>
[voice]
<xml>
<ToUserName><![CDATA[xxxxxx]]></ToUserName>
<FromUserName><![CDATA[ociip1cY31Nl9jOq3ENbQAQEooiI]]></FromUserName>
<CreateTime>1543031726</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[kJrNmz_hRrfwdAaDYD0vcHf8rrVp24Djv4ysM2MVyQ2X3gWx9ZLsWyWmPx3MVq1l]]></MediaId>
<Format><![CDATA[amr]]></Format>
<MsgId>6627270800285370121</MsgId>
<Recognition><![CDATA[]]></Recognition>
</xml>
[image]
<xml>
<ToUserName><![CDATA[xxxxxxx]]></ToUserName>
<FromUserName><![CDATA[ociip1cY31Nl9jOq3ENbQAQEooiI]]></FromUserName>
<CreateTime>1543031789</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[http://mmbiz.qpic.cn/mmbiz_jpg/0dDHCuba7H6iaCUQIQDKd4m2y9UtQwDgN7gb2cake7Tgoe5LsxuANfl3obicxqCicc502ngg4SvEjtynmIkKJX7vw/0]]></PicUrl>
<MsgId>6627271070868309772</MsgId>
<MediaId><![CDATA[yTnqFo7p6rDqttx--yj0WzUkf21yVvvsaNk896GGGHIqzQx2DdbFW8WjD-vot6G5]]></MediaId>
</xml>
[video]
<xml>
<ToUserName><![CDATA[xxxxxxxxxx]]></ToUserName>
<FromUserName><![CDATA[ociip1cY31Nl9jOq3ENbQAQEooiI]]></FromUserName>
<CreateTime>1543031840</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<MediaId><![CDATA[P57rdEOvyFq5M4snSTpRaYHR4gtr5RKaTLnV8z52mDm64aDyLCqVPlUBxLww1YQ0]]></MediaId>
<ThumbMediaId><![CDATA[cvoGQ_dz9yIwW11TSNxrDUzkStjyRwJCzvH7ldo_EyHE51zrgUtKUIKo7JgD5TVA]]></ThumbMediaId>
<MsgId>6627271289911641869</MsgId>
</xml>
Access Token
1. access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token
2. 用appid和secret来换取access_token
2. access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效
3. access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值
基础消息能力
模板消息
模板消息分为自定义模板(需审核)和官方模板(模板库中模板,可直接使用)
客服消息
自动回复
根据MsgType=text筛选出用户发送的关键词,根据后台的自动回复规则处理不同的逻辑
选择回复
<a href="weixin://bizmsgmenu?msgmenucontent=创建企业数字名片&msgmenuid=1">创建企业数字名片</a>
素材管理
素材分为临时素材和永久素材。素材多用于使用接口发送消息时,通过media_id来获取
临时素材:媒体文件在微信后台保存时间为3天,即3天后media_id失效
永久素材:通过接口上传后返回media_id和url,之后可永久访问
注:1.图片上传支持的大小为10M
2.返回的url只能在腾讯系域名下访问,其他域名下图片将被屏蔽