zoukankan      html  css  js  c++  java
  • 微信开发(准备工作简版)

    1.准备工作

    1.1 首先需要一个url地址,用来接收相关的数据
    1.2 注册开发者账号进行开发(可用公众平台测试账号)

    1.3 appid,第三方用户唯一凭证(你的AppID)

    1.4 secret,第三方用户唯一凭证密钥,Appsecret

    1.3 需要access_token,access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_tokenaccess_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.1tokentimestampnonce进行字典序排序

    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[video]]></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,有三个属性分别是FromUserMsgFlagCreateTime

    2.创建个静态列表_queue,用来存储消息列表,列表的类型是List<BaseMsg>.

    3.在处理微信消息体前,首先判断列表是否实例化,如果没有实例化则实例化,否则判断列表的长度是否大于或等于50(这个可以自定义,用处就是微信并发的消息量),如果大于或等于50,则保留20秒内未响应的消息(5秒重试一次,总共重试3次,就是15秒,保险起见写20秒)。

    4.获取当前消息体的消息类型,并根据_queue判断当前消息是否已经请求了。如果是事件则返回空字符串。如果是普通消息则保存MsgFlag

  • 相关阅读:
    Windows Driver Mode 1
    一个程序员的奋斗经历 2
    JavaScript判断文件是否存在
    流程图个图标详解
    wget for windows
    软件的开发周期
    Firefox支持activex的插件
    第二次作业
    C/C++字符串使用整理
    c#学习小记录(1)
  • 原文地址:https://www.cnblogs.com/zhang102137/p/7258687.html
Copyright © 2011-2022 走看看