WeChat Official Account Admin Platform Message API Guide
Keyword: WeChat Message API Text Image Location Link Event Music RichMedia
Author: PondBay Studio[WeChat Developer EXPERT]
Address: http://www.cnblogs.com/txw1958/p/WeChat-Message-API.html
Guide for Message API
Contents[hide] |
Introduction
The WeChat Official Account Admin Platform provides developers with a Message API to manage incoming messages and reply logic.
Apply for Message API
Click Apply and fill in a name, phone and email for a contact person, as well as a URL pointing to your server and a token. The token is used to generate a signature for communication between your app and WeChat.
URL Access
When the application is submitted, a GET request will be sent to the URL provided above with the 4 parameters below:
| Parameter | Description |
|---|---|
| signature | signature for communication encryption |
| timestamp | time stamp |
| nonce | a random number |
| echostr | a random string |
You should check whether the HTTP request is from WeChat by verifying the signature. If the signature is correct, you should return the echostr.
The signature will be generated in the following way using the token (that you provided), timestamp and nonce.
1. Sort the 3 values of token, timestamp and nonce alphabetically.
2. Combine the 3 parameters into one string, encrypt it using SHA-1.
3. Compare the SHA-1 digest string with the signature from the request. If they are the same, the access request is from WeChat.
Pushing Messages
When a WeChat user sends a message to an Official Account, WeChat Official Account Admin Platform will POST it to you via the URL you provided.
Text messages
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
| Parameter | Description |
|---|---|
| ToUserName | WeChat ID of your app |
| FromUserName | a unique ID for the sender |
| CreateTime | create time of the message |
| MsgType | message type ("text" for text messages) |
| Content | message contents |
| MsgId | a unique ID for the message (64 bit integer) |
Image messages
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[this is a url]></PicUrl>
<MsgId>1234567890123456</MsgId>
</xml>
| Parameter | Description |
|---|---|
| ToUserName | WeChat ID of your app |
| FromUserName | a unique ID for the sender |
| CreateTime | create time of the message |
| MsgType | message type ("image" for image messages) |
| PicUrl | URL for the image |
| MsgId | a unique ID for the message (64 bit integer) |
Location data messages
<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[location]]></Label>
<MsgId>1234567890123456</MsgId>
</xml>
| Parameter | Description |
|---|---|
| ToUserName | WeChat ID of your app |
| FromUserName | a unique ID for the sender |
| CreateTime | create time of the message |
| MsgType | message type ("location" for location messages) |
| Location_X | latitude of the location |
| Location_Y | longitude of the location |
| Scale | scale of the map |
| Label | location description |
| MsgId | a unique ID for the message (64 bit integer) |
Link messages
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[link]]></MsgType>
<Title><![CDATA[WeChat Official Account Platform portal]]></Title>
<Description><![CDATA[The URL of the portal]]></Description>
<Url><![CDATA[url]]></Url>
<MsgId>1234567890123456</MsgId>
</xml>
| Parameter | Description |
|---|---|
| ToUserName | WeChat ID of your app |
| FromUserName | a unique ID for the sender |
| CreateTime | create time of the message |
| MsgType | message type ("link" for link messages) |
| Title | title of the message |
| Description | description of the message |
| Url | url which is sent to users |
| MsgId | a unique ID for the message (64 bit integer) |
Event messages
<xml><ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[EVENT]]></Event>
<EventKey><![CDATA[EVENTKEY]]></EventKey>
</xml>
| Parameter | Description |
|---|---|
| ToUserName | WeChat ID of your app |
| FromUserName | a unique ID for the sender |
| CreateTime | create time of the message |
| MsgType | message type ("event" for event messages) |
| Event | event type, currently we have 3 types: subscribe, unsubscribe, CLICK(coming soon) |
| EventKey | for future usage |
Messages Replies
You can reply to incoming messages. Now the platform supports different kinds of messages, including text, image, voice, video and music. You can also do the operation 'add to my favorites'.
If you fail to perform your response within 5 seconds, we will close the connection.
The data structure for a reply message:
Text messages
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[content]]></Content>
<FuncFlag>0</FuncFlag>
</xml>
| Parameter | Description |
|---|---|
| ToUserName | a unique ID for the receiver, you can get it from the request |
| FromUserName | WeChat ID of your app |
| CreateTime | create time of the message, the type is integer |
| MsgType | message type ("text" for text messages) |
| Content | reply message contents |
| FuncFlag | add a star for the message if the bit (0x0001) is set |
Music message
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[TITLE]]></Title>
<Description><![CDATA[DESCRIPTION]]></Description>
<MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>
<HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>
<ThumbMediaId><![CDATA[media_id]]></ThumbMediaId>
</Music>
<FuncFlag>0</FuncFlag>
</xml>
| Parameter | Description |
|---|---|
| ToUserName | a unique ID for the receiver, you can get it from the request |
| FromUserName | WeChat ID of your app |
| CreateTime | create time of the message, the type is integer |
| MsgType | message type("music" for music messages) |
| MusicUrl | URL for the music |
| HQMusicUrl | URL for high quality, WeChat will access it when using WiFi |
| ThumbMediaId | OPTIONAL. You will get this ID after you upload the thumb (80*80) by using the API |
| FuncFlag | add a star for the message if the bit (0x0001) is set |
Rich media messages
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<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>
| Parameter | Description |
|---|---|
| ToUserName | a unique ID for the receiver, you can get it from the request |
| FromUserName | WeChat ID of your app |
| CreateTime | create time of the message, the type is integer |
| MsgType | message type ("news" for rich media messages) |
| ArticleCount | quantity of rich media messages (no larger than 10) |
| Articles | contents of rich media messages. The first item will be displayed in large image by default. |
| Title | title of the rich media message |
| Description | description of the rich media message |
| PicUrl | URL of images in the rich media message. Domain name of this URL should be the same as the one of URL provided in basic info. Recommended image size: 640*320 (large image); 80*80 (small image) |
| Url | redirection link of the rich media message |
Notes
1. One user's unique ID is different for different Official Accounts.
2. Recommend you use port 80 for your app server.
Sample code
PHP:Download
PondBay Studio is the Expert of WeChat Development, and has a lots of cases in China, Japan, Europe and US. The Founder has served the top companies such as China HuaWei and Israel Company. You can Contact US via email 
WeChat Official Account Admin Platform Message API Guide的更多相关文章
- WeChat Official Account Admin Platform API Introduction
Keyword: WeChat API Introduction Message and GeneralAuthor: PondBay Studio[WeChat Developer EXPERT] ...
- Django REST Framework API Guide 08
1.Filtering 2.Pagination FIltering GenericAPIView的子类筛选queryset的简单方法是重写.get_quueryset()方法. 1.根据当前用户进行 ...
- Django REST Framework API Guide 01
之前按照REST Framework官方文档提供的简介写了一系列的简单的介绍博客,说白了就是翻译了一下简介,而且翻译的很烂.到真正的生产时,就会发现很鸡肋,连熟悉大概知道rest framework都 ...
- Story of Jerry Wang's Wechat subscription account
As an SAP Techinical Ambassador,Jerry is always willing to share his SAP expertise to various social ...
- TrineaAndroidCommon API Guide
android-common-lib 关于我,欢迎关注微博:Trinea 主页:trinea.cn 邮箱:trinea.cn#gmail.com 微信:codek2 主要包括:缓存( ...
- Django REST Framework API Guide 03
本节大纲 1.Routers 2.Parsers 3.Renderers Routers Usage from rest_framework import routers router = route ...
- Django REST Framework API Guide 06
本节大纲 1.Validators 2.Authentication Validators 在REST框架中处理验证的大多数时间,您将仅仅依赖于缺省字段验证,或在序列化器或字段类上编写显式验证方法.但 ...
- Django REST Framework API Guide 04
本节大纲 1.serializers 1.Serializers Serializers允许复杂的数据,像queryset和模型实例转换成源生的Python数据类型.从而可以更简单的被渲染成JSON, ...
- Django REST Framework API Guide 07
本节大纲 1.Permissions 2.Throttling Permissions 权限是用来授权或者拒绝用户访问API的不同部分的不同的类的.基础的权限划分 1.IsAuthenticated ...
随机推荐
- python optparse模块
为了从更快的的使用这个模块,我们会省略一些东西,开始吧. 1. 加载模块 from optparse import OptionParser 2. 实例化OptionParse,可以理解为表明usea ...
- java -version
- 设计模式之工厂方法模式VS简单工厂方法模式
名词解释: 简单工厂:这个实在是没什么解释的,就是一个工厂类,然后有一个方法,根据传递的参数可以通过switch(你也可以是if,或者是使用高端的反射 )来进行对象的创建. 工厂方法:定义一个用于创建 ...
- *Linux之rm命令
自己瞅: [root@winner ~]# rm --help//rm-->remove用法:rm [选项]... 文件... 删除 (unlink) 文件. -f, --force 强制删除. ...
- 离线应用Application Cache详解
特点: 1.离线可访问 - 没有网络仍可访问整个应用 2.很小的服务器负载 - 缓存在本地,不需要到服务器请求 3.高速 ...
- /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found错误的解决
升级cmake时,提示"Error when bootstrapping CMake:Problem while running initial CMake",第二次运行./boo ...
- 对github中项目进行更新
进入本地仓库文件夹,我的仓库名是tufujiegit,然后 进入 git clone 接着将先前记录下来的地址复制到后面,回车 将下载github中该仓库的所有文件及文件夹,包括.git文件夹在内 ...
- 设置图片Alpha
Drawable ico = getResources().getDrawable(R.drawable.search_box); mSearchLayou ...
- fastdfs-client-java 文件上传
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合以文件为载体的在线服务,如相 ...
- Android获取SharedPreferences失败,且App无法启动
说明: 一个app访问另外一个app的SharedPreferences,程序启动之后没有显示界面就卡死了,无任何提示信息. 错误原因: 应用调用createPackageContext失败,但是也不 ...