本文分为三大部分为大家进行介绍,具体内容如下
1、微信用户、微信服务器和后台服务器的交互
例:微信用户向公众号发送一条文本消息,这条消息会首先传给微信服务器,微信服务器处理这条信息并将其以xml数据格式传递给后台服务器,后台服务器接受到数据后会对数据进行处理,再响应数据以xml数据格式传递给微信服务器,微信服务器再响应到用户微信界面。
微信用户与微信后台服务器之间的交互过程就是数据传递过程,只不过需要需要通过微信服务器这个中转站。
那么微信服务器这个中转站到底有什么用?
对xml数据进行加工包装后展现在手机屏幕上。我们接受的图文消息,如下:
单图文:
多图文
你会发现微信上几乎所有的图文都是这种格式,板式、大小都是一样,这就是经过微信服务器包装后的结果。
2、交互的数据类型
微信用户可以发送的数据类型
1、文本型(text)
|
1
|
|
2
3
4
5
6
7
|
<xml>
<tousername><![cdata[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[text]]></msgtype>
<content><![cdata[%s]]></content>
</xml>";
|
2、语音(voice)
|
1
|
|
2
3
4
5
6
7
8
9
10
|
<xml>
<tousername><![cdata[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[voice]]></msgtype>
<format><![cdata[amr]]></format>
<msgid>5836982871638042400</msgid>
<mediaid><![cdata[pgkso3lagbvtsfyo7fgu51kuya07d0c_nozz2fn1z6vythosf59ptfl0vaggxkvh]]></mediaid>
<recognition><![cdata[]]></recognition>//recognition表示语音识别的结果
</xml>
|
3、图片( img)
|
1
|
|
2
3
4
5
6
7
8
9
|
<xml>
<tousername><![cdata[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[image]]></msgtype>
<picurl><![cdata[http://mmbiz.qpic.cn/mmbiz/l4qjytoibummhn90t1mnaibyiar8ljyicf3mw7xx3blp1qzgub7ctz0d]]></picurl>
<msgid>5836982871638042400</msgid>
<mediaid><![cdata[pgkso3lagbvtsfyo7fgu51kuya07d0c_nozz2fn1z6vythosf59ptfl0vaggxkvh]]></mediaid>
</xml>
|
每一条消息传给微信服务器后都会被标记一个msgid,上传的图片、视频、语音等也会被标记一个mediaid。
4、视频(video)
|
1
|
|
2
3
4
5
6
7
8
9
10
|
<xml>
<tousername><![cdata[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[vedio]]></msgtype>
<msgid>5836982871638042400</msgid>
<mediaid><![cdata[pgkso3lagbvtsfyo7fgu51kuya07d0c_nozz2fn1z6vythosf59ptfl0vaggxkvh]]></mediaid>
<thumbmediaid><![cdata[mxuj5gcceesjwx2t9qsk62yzi
clcp_hnrdftqcojlpet2g9q3d22ukslybflz01j]]></thumbmediald>;//视频静止时显示那张图片地址
</xml>
|
5、地理位置消息(location)
|
1
|
|
2
3
4
5
6
7
8
9
10
11
12
|
<xml>
<tousername><![cdata[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[location]]></msgtype>
<msgid>5836982871638042400</msgid>
<location_x>22.539968</location_x>
<location_y>113.954980</location_y>
<scale>16</scale>
<label><![cdata[中国广东省深圳市南山区深南大道9001号
邮政编码: 518053]]></label>
</xml>
|
6、链接消息(link)
|
1
|
|
2
3
4
5
6
7
8
9
10
11
|
<xml>
<tousername><![cdata[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[link]]></msgtype>
<msgid>5836982871638042400</msgid>
<title><![cdata[微信公众平台开发者的江湖]]></title>
<description><![cdata[陈坤的微信公众号这段时间大火,大家...]]></description>
<url><![cdata[http://www.cnblogs.com/txw1958/]]></url>
<msgid>5839907284805129867</msgid>
</xml>
|
后台服务器响应的消息类型
1、文本型(text)
2、语音(voice)
|
1
|
|
2
3
4
5
6
7
8
9
10
|
<xml>
<tousername><![cdata[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[voice]]></msgtype>
<msgid>5836982871638042400</msgid>
<voice>
<mediaid><![cdata[pgkso3lagbvtsfyo7fgu51kuya07d0c_nozz2fn1z6vythosf59ptfl0vaggxkvh]]></mediaid>
</voice>
</xml>
|
3、图片( img)
|
1
|
|
2
3
4
5
6
7
8
9
10
|
<xml>
<tousername><![cdata[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[image]]></msgtype>
<msgid>5836982871638042400</msgid>
<image>
<mediaid><![cdata[pgkso3lagbvtsfyo7fgu51kuya07d0c_nozz2fn1z6vythosf59ptfl0vaggxkvh]]></mediaid>
</image>
</xml>
|
4、视频(video)
|
1
|
|
2
3
4
5
6
7
8
9
10
11
12
|
<xml>
<tousername><![cdata[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[vedio]]></msgtype>
<msgid>5836982871638042400</msgid>
<video>
<mediaid><![cdata[pgkso3lagbvtsfyo7fgu51kuya07d0c_nozz2fn1z6vythosf59ptfl0vaggxkvh]]></mediaid>
<thumbmediaid><![cdata[mxuj5gcceesjwx2t9qsk62yzi
clcp_hnrdftqcojlpet2g9q3d22ukslybflz01j]]></thumbmediald>;//视频静止时显示那张图片地址
</video>
</xml>
|
5、音乐(music)
|
1
|
|
2
3
4
5
6
7
8
9
10
11
12
13
|
<xml>
<tousername><![cdata[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[voice]]></msgtype>
<msgid>5836982871638042400</msgid>
<music>
<title><![cdata[最炫民族风]]></title>
<description><![cdata[凤凰传奇]]></description>
<musicurl><![cdata[http://zj189.cn/zj/download/music/zxmzf.mp3]]></musicurl>
<hqmusicurl><![cdata[http://zj189.cn/zj/dodownload/music/zxmzf.mp3]]></hqmusicurl>
</music>
</xml>
|
6、图文(news)
|
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[%s]]></tousername>
<fromusername><![cdata[%s]]></fromusername>
<createtime>%s</createtime>
<msgtype><![cdata[news]]></msgtype>
<msgid>5836982871638042400</msgid>
<content><![cdata[]]></content>
<articlecount>%s</articlecount>
<articles>
<item>
<title><![cdata[ 【深圳】实况 温度:6℃ 湿度:62﹪ 风速:东北风2级]]></title>
<description><![cdata[]]></description>
<picurl><![cdata[http://www.doucube.com/weixin/weather/icon/banner.jpg]]></picurl>
<url><![cdata[]]></url>
</item>
<item>
<title><![cdata[ 【深圳】实况 温度:6℃ 湿度:62﹪ 风速:东北风2级]]></title>
<description><![cdata[]]></description>
<picurl><![cdata[http://www.doucube.com/weixin/weather/icon/banner.jpg]]></picurl>
<url><![cdata[]]></url>
</item>
</articles>
</xml>
|
上面代码在数据填写方面只做参照。以上代码在需要的时候调用即可,这里只是为大家展现以下数据格式。
cdata是一个标记,被其标记的文本数据中不会被xml解析器进行解析。一个 cdata 部件以"
tousername 接收方帐号
fromusername 发送方帐号
createtime 发送事件
msgtype 数据类型
content 文本内容
articlecount 图文数量
msgid 数据id
mediaid 媒介id
title 标题
description 描述
musicurl 音乐连接地址
hqmusicurl 高品质音乐连接地址
2、具体的交互步骤即代码
在上一章图2中,我们为测试号定义了url和token。url就是与微信服务器进行通信的后台服务器地址,而token一个相当于一个令牌。微信服务器与后台服务器进行通信时会出示该令牌,如果后台服务器发现微信服务器与自己携带的令牌相同才会进行通信,不相同则拒绝通信 。这个过程叫做token验证(这个令牌不是token的值)。
上面比较形象的说话,下面我通过代码来解释
例如:url为http://weixinceshi111111.applinzi.com/index2.php
token:weixin
index2.php代码
|
1
|
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|


