ACCESS微信支付(准备工作简版)

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参数:

参数

描述

ToUserName

开发者微信号

FromUserName

发送方帐号(一个OpenID)

CreateTime

消息创建时间 (整型)

MsgType

消息类型(text、image、voice)

MsgId

消息id,64位整型

 

 

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>

参数

描述

MsgType

text

Content

为用户所发送的消息

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>

参数

描述

MsgType

image

PicUrl

可根据该图片地址查看该图片

MediaId

图片消息媒体id,可以调用多媒体文件下载接口拉取数据。

 

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>

参数

描述

MsgType

语音为voice

MediaId

语音消息媒体id,可以调用多媒体文件下载接口拉取数据。

Format

语音格式,如amr,speex等

4.4得视频信息

XML数据格式:

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>1357290913</CreateTime>

<MsgType><![CDATA]></MsgType>

<MediaId><![CDATA[media_id]]></MediaId>

<ThumbMediaId><![CDATA[thumb_media_id]]></ThumbMediaId>

<MsgId>1234567890123456</MsgId>

</xml>

参数

描述

MsgType

语音为video

MediaId

视频消息媒体id,可以调用多媒体文件下载接口拉取数据。

ThumbMediaId

视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据.

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>

参数

描述

MsgType

小视频为shortvideo,

MediaId

视频消息媒体id,可以调用多媒体文件下载接口拉取数据。

ThumbMediaId

视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。

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>

 

参数

描述

MsgType

location

Location_X

地理位置维度

Location_Y

地理位置经度

Scale

地图缩放大小

Label

地理位置信息

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>

 

参数

描述

MsgType

消息类型,link

Title

消息标题

Description

消息描述

Url

消息链接

5.消息排重(响应微信服务器)

微信于转账信息及我们后台服务的当儿,如果5秒钟里没有回来数据,微信就见面就还转发信息,如此三差。如果三差之后仍旧没有回到数据,则微信公众号会冒出“该群众号暂时无法提供劳务,请稍后再尝试的失实”,为了避免微信重发起消息,也为避免数据重复导致数据错乱,对微信转发的音信进行排重处理:

1.初建类BaseMsg,有三独特性分别是FromUser,MsgFlag,CreateTime。

2.创造个静态列表_queue,用来囤消息列表,列表的门类是List<BaseMsg>.

3.于拍卖微信消息体前,首先判断列表是否实例化,如果无实例化则实例化,否则判断列表的长是否超出或顶50(这个好由定义,用处便是微信并发的消息量),如果过量或等于50,则保留20秒内未响应的音(5秒重试一潮,总共重试3潮,就是15秒,保险起见写20秒)。

4.落当前消息体的信息类型,并因_queue判断时信息ACCESS是否已经呼吁了。如果是事件则回空字符串。如果是平常消息虽然保存MsgFlag。

 

相关文章