微信开发(准备工作简版)
2017-07-30 11:49
169 查看
1.准备工作
1.1 首先需要一个url地址,用来接收相关的数据
1.2 注册开发者账号进行开发(可用公众平台测试账号)
1.3 appid,第三方用户唯一凭证(你的AppID)
1.4 secret,第三方用户唯一凭证密钥,即Appsecret
1.3 需要access_token,access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。access_token的存储至少要保留512个字符空间。access_token的有效期为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
2.获取相关数据、配置、验证状态
2.1获取access_token:通过
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的AppID&secret=你的Appsecret 来获取
2.2 验证服务器地址的有效性(确保信息来源为微信服务器)
2.2.1将token、timestamp、nonce进行字典序排序
2.2.2将三个参数拼成一个字符串,并进行sha1加密
2.2.3开发者获得加密后的字符串可与signature对比,进行验证该请求来源于微信,如果验证结果为相等,则请返回echostr字符串、
3.相关的下载地址
3.1多媒体文件下载地址
http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
1)ACCESS_TOKE:你获取的access_token
2)MEDIA_ID:媒体文件ID
4.开始开发——用户通过post请求发送XMl数据包到Url地址
通用XML参数:
4.1获取文本信息
XML格式:
<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>
4.2获取图片信息
XML数据格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[this is a url]]></PicUrl>
<MediaId><![CDATA[media_id]]></MediaId>
<MsgId>1234567890123456</MsgId>
</xml>
4.3获取语音消息
XML数据格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<MsgId>1234567890123456</MsgId>
</xml>
4.4获取视频消息
XML数据格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
<MsgId>1234567890123456</MsgId>
</xml>
4.5获取小视频的消息
XML数据格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[shortvideo]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
<MsgId>1234567890123456</MsgId>
</xml>
4.6获取地理位置消息
XML数据格式:
<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>
<MsgId>1234567890123456</MsgId>
</xml>
4.7获取连接消息
XML数据格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[link]]></MsgType>
<Title><![CDATA[公众平台官网链接]]></Title>
<Description><![CDATA[公众平台官网链接]]></Description>
<Url><![CDATA[url]]></Url>
<MsgId>1234567890123456</MsgId>
</xml>
5.消息排重(响应微信服务器)
微信在转发消息到我们后台服务的时候,如果5秒钟之内没有返回数据,微信就会立即重新转发消息,如此三次。如果三次过后仍然没有返回数据,则微信公众号会出现“该公众号暂时无法提供服务,请稍后再试的错误”,为了避免微信重复发起消息,也为了避免数据重复导致数据混乱,对微信转发的消息进行排重处理:
1.新建类BaseMsg,有三个属性分别是FromUser,MsgFlag,CreateTime。
2.创建个静态列表_queue,用来存储消息列表,列表的类型是List<BaseMsg>.
3.在处理微信消息体前,首先判断列表是否实例化,如果没有实例化则实例化,否则判断列表的长度是否大于或等于50(这个可以自定义,用处就是微信并发的消息量),如果大于或等于50,则保留20秒内未响应的消息(5秒重试一次,总共重试3次,就是15秒,保险起见写20秒)。
4.获取当前消息体的消息类型,并根据_queue判断当前消息是否已经请求了。如果是事件则返回空字符串。如果是普通消息则保存MsgFlag。
1.1 首先需要一个url地址,用来接收相关的数据
1.2 注册开发者账号进行开发(可用公众平台测试账号)
1.3 appid,第三方用户唯一凭证(你的AppID)
1.4 secret,第三方用户唯一凭证密钥,即Appsecret
1.3 需要access_token,access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。access_token的存储至少要保留512个字符空间。access_token的有效期为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
2.获取相关数据、配置、验证状态
2.1获取access_token:通过
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的AppID&secret=你的Appsecret 来获取
2.2 验证服务器地址的有效性(确保信息来源为微信服务器)
2.2.1将token、timestamp、nonce进行字典序排序
2.2.2将三个参数拼成一个字符串,并进行sha1加密
2.2.3开发者获得加密后的字符串可与signature对比,进行验证该请求来源于微信,如果验证结果为相等,则请返回echostr字符串、
3.相关的下载地址
3.1多媒体文件下载地址
http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
1)ACCESS_TOKE:你获取的access_token
2)MEDIA_ID:媒体文件ID
4.开始开发——用户通过post请求发送XMl数据包到Url地址
通用XML参数:
参数 | 描述 |
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 消息类型(text、image、voice) |
MsgId | 消息id,64位整型 |
XML格式:
<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>
参数 | 描述 |
MsgType | text |
Content | 为用户所发送的消息 |
XML数据格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[this is a url]]></PicUrl>
<MediaId><![CDATA[media_id]]></MediaId>
<MsgId>1234567890123456</MsgId>
</xml>
参数 | 描述 |
MsgType | image |
PicUrl | 可根据该图片地址查看该图片 |
MediaId | 图片消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
XML数据格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<Format><![CDATA[Format]]></Format>
<MsgId>1234567890123456</MsgId>
</xml>
参数 | 描述 |
MsgType | 语音为voice |
MediaId | 语音消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
Format | 语音格式,如amr,speex等 |
XML数据格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[video]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
<MsgId>1234567890123456</MsgId>
</xml>
参数 | 描述 |
MsgType | 语音为video |
MediaId | 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
ThumbMediaId | 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据. |
XML数据格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1357290913</CreateTime>
<MsgType><![CDATA[shortvideo]]></MsgType>
<MediaId><![CDATA[media_id]]></MediaId>
<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>
<MsgId>1234567890123456</MsgId>
</xml>
参数 | 描述 |
MsgType | 小视频为shortvideo, |
MediaId | 视频消息媒体id,可以调用多媒体文件下载接口拉取数据。 |
ThumbMediaId | 视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 |
XML数据格式:
<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>
<MsgId>1234567890123456</MsgId>
</xml>
参数 | 描述 |
MsgType | location |
Location_X | 地理位置维度 |
Location_Y | 地理位置经度 |
Scale | 地图缩放大小 |
Label | 地理位置信息 |
XML数据格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1351776360</CreateTime>
<MsgType><![CDATA[link]]></MsgType>
<Title><![CDATA[公众平台官网链接]]></Title>
<Description><![CDATA[公众平台官网链接]]></Description>
<Url><![CDATA[url]]></Url>
<MsgId>1234567890123456</MsgId>
</xml>
参数 | 描述 |
MsgType | 消息类型,link |
Title | 消息标题 |
Description | 消息描述 |
Url | 消息链接 |
微信在转发消息到我们后台服务的时候,如果5秒钟之内没有返回数据,微信就会立即重新转发消息,如此三次。如果三次过后仍然没有返回数据,则微信公众号会出现“该公众号暂时无法提供服务,请稍后再试的错误”,为了避免微信重复发起消息,也为了避免数据重复导致数据混乱,对微信转发的消息进行排重处理:
1.新建类BaseMsg,有三个属性分别是FromUser,MsgFlag,CreateTime。
2.创建个静态列表_queue,用来存储消息列表,列表的类型是List<BaseMsg>.
3.在处理微信消息体前,首先判断列表是否实例化,如果没有实例化则实例化,否则判断列表的长度是否大于或等于50(这个可以自定义,用处就是微信并发的消息量),如果大于或等于50,则保留20秒内未响应的消息(5秒重试一次,总共重试3次,就是15秒,保险起见写20秒)。
4.获取当前消息体的消息类型,并根据_queue判断当前消息是否已经请求了。如果是事件则返回空字符串。如果是普通消息则保存MsgFlag。
相关文章推荐
- 使用Html5+C#+微信 开发移动端游戏详细教程 :(二)准备工作&开发环境
- 微信JSAPI开发教程准备工作绑定域名【第一课】
- 学习node js 之微信公众帐号接口开发 准备工作之三
- 微信小程序开发前的准备工作
- [1]java微信开发-准备工作
- 微信小程序开发准备工作
- 学习node js 之微信公众帐号接口开发 准备工作之三
- ionic开发——微信分享准备工作之签名和包名的获取方法
- 学习node js 之微信公众帐号接口开发 准备工作之二
- 微信小程序开发《1. 准备工作以及工具》
- 开发微信小程序:账号准备工作
- 第一篇 微信开发 准备工作(转载自walkingmanc的专栏)【转】
- 微信开发第1章 预备工作准备账号
- 微信接口开发之前准备工作
- ionic开发——微信分享准备工作之签名和包名的获取方法
- 基于微信小程序的系统开发准备工作
- 微信二次开发准备工作
- 基于微信小程序的系统开发准备工作
- 微信开发准备工作
- 学习node js 之微信公众帐号接口开发 准备工作