微信公众号平台开发(二)信息的分类.md

在上一篇博客中,我们只是简单地与微信服务器建立了连接,接下来就是从微信服务器中接收信息了。在SecurityController中,我定义了两个方法(get和post)。Get方法是我们用来与微信服务器建立连接,而我们将通过Post方法来接收微信服务器发给我们的响应。

当我们完成服务器验证后,以后用户对公众号的每个事件,微信服务器都会通过我们配置的URL推送到我们自己的服务器,然后我们服务器根据自身业务逻辑进行响应!



在正式实现用户与服务器之间的沟通前,我们需要进行一些知识储备和对信息的分类。

(一)消息体的类型:

当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。

1. 普通消息类型:文本消息、图片消息、语音消息、视频消息、小视频消息、地理位置消息和链接消息等;

2. 事件推送类型:关注/取消关注事件、扫描带参数二维码事件、上报地理位置事件、自定义菜单事件、点击菜单拉取消息时的事件推送、点击菜单跳转链接时的事件推送等。

(二)额外知识

  • 消息重试机制:  
    微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。
  • 信息加密/解密机制:

    为了保证更高的安全保障,开发者可以在公众平台官网的开发者中心处设置消息加密。开启加密后,用户发来的消息会被加密,公众号被动回复用户的消息也需要加密(但开发者通过客服接口等API调用形式向用户发送消息,则不受影响)。

关于消息加解密的详细说明,请见“[消息加解密说明]”。

(三)接收信息的分类和实体的创建

篇幅关系,将省略所有实体类的Get和Set方法。

根据各种信息类型,我们将其分为一个基础类和六个实体。

1. 接收消息基础类

public class BaseMessage {
    //开发者微信号
    private String ToUserName;
    //发送方账号(OpenID)
    private String FromUserName;
    //消息创建时间(整型)
    private long CreateTime;
    //消息类型(text/image/location/link/video/shortvideo)
    private String MsgType;
    //消息id,64位整型
    private long MsgId;
}

1. 图片消息实体

public class ImageMessage extends BaseMessage {
    //图片链接
    private String PicUrl;
}

链接消息实体

public class LinkMessage extends BaseMessage {
    //消息标题
    private String Title;
    //消息描述
    private String Description;
    //消息链接
    private String Url;
}

地理位置消息实体

public class LocationMessage extends BaseMessage {
    //地理位置纬度
    private String Location_X;
    //地理位置经度
    private String Location_Y;
    //地图缩放大小
    private String Scale;
    //地图位置信息
    private String Label;
}

文本消息实体

public class TextMessage extends BaseMessage {
    //消息内容
    private String Content;
}

视频消息实体

public class VideoMessage extends BaseMessage {
    //视频消息媒体id,可以调用多媒体文件下载接口拉取数据
    private String MediaId;
    //视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据
    private String ThumbMediaId;
}

语音消息实体

public class VoiceMessage extends BaseMessage {
    //媒体Id
    private String MediaId;
    //语音格式
    private String Format;
}

(四)反馈信息的分类和实体的创建

篇幅关系,将省略所有实体类的Get和Set方法。

根据各种反馈信息类型,我们将其分为一个基础类和六个实体(五个信息体)。

1. 反馈信息基础类

public class BaseMessage {

    //接收方账号(OpenID)
    private String ToUserName;
    //开发者微信号
    private String FromUserName;
    //消息创建时间(整型)
    private long CreateTime;
    //消息类型(text/music/news……)
    private String MsgType;
}

文本信息实体

public class TextMessage extends BaseMessage {
    //回复消息内容
    private String Content;
}

图片信息体 和 图片信息实体

public class Image {
    //图片信息id
    private String MediaId;
}
public class ImageMessage extends BaseMessage {
    private Image image;
}

图文信息体 和 图文信息实体

public class Article {
    //图文消息名称
    private String Title;
    //图文消息描述
    private String Description;
    //图片链接,支持JPG、PNG格式
    private String PicUrl;
    //点击图文消息跳转链接
    private String Url;
}
public class NewsMessage extends BaseMessage {
    //图文消息个数,一般限制为10条以内
    private int ArticleCount;
    //多图文消息信息
    private List<Article>  Articles;
}

语音信息体 和 语音信息实体

public class Voice {
    private String MediaId;
}
public class VoiceMessage extends BaseMessage {
    private Voice voice;
}

音乐信息体 和 音乐信息实体

public class Music {
    //音乐名称
    private String Title;
    //音乐描述
    private String Description;
    //音乐链接
    private String MusicUrl;
    //高质量音乐链接,WIFI环境下优先使用该链接
    private String HQMusicUrl;
}
public class MusicMessage extends BaseMessage {
    private Music music;
}

视频信息体 和 视频信息实体

public class Video {
    //多媒体链接
    private String MediaId;
    //视频标题
    private String Title;
    //视频描述
    private String Description;
}
public class VideoMessage extends BaseMessage {
    private Video video;
}

(五)总结

这一篇博客主要为我们服务器与用户进行交流时,准备好各种实体类型。通过对开发者文档的阅读,我们可以很快就完成实体的创建。但在阅读的过程中,我们也将考虑到许多问题:如何进行实体与XML格式之间的转化?什么鬼之类的。

接下来的,我们下一篇博客再讲ヾ( ̄▽ ̄)Bye~Bye~

时间: 2024-11-14 11:07:38

微信公众号平台开发(二)信息的分类.md的相关文章

C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)

文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们的绑定的地址上,通过解析XML数据,获取到微信用户发送的消息,让根据微信消息(文本:关键字,图片,语音等等)回复XML格式的数据给微信服务器,微信服务器再将接收到的消息返回给用户微信. 我们所需要做的:接收消息和返回消息 一.创建实体类 首先看文档http://mp.weixin.qq.com/wi

[转载红鱼儿]delphi 实现微信开发(2)接入微信公众号平台

先要学习一下接入的资料,在这里,因为原理都在,所以一定要认真阅读,然后,利用Delphi实现一个对应函数: function CheckSignature(const signature, timestamp, nonce, token: string): boolean; var strs: TStringList;   tmpStr: string; begin strs := TStringList.Create;   try     strs.Add(token);     strs.A

C#微信公众号接口开发,灵活利用网页授权、带参数二维码、模板消息,提升用户体验之完成用户绑定个人微信及验证码获取

一.前言 当下微信公众号几乎已经是每个公司必备的,但是大部分微信公众账号用户体验都欠佳,特别是涉及到用户绑定等,需要用户进行复杂的操作才可以和网站绑定,或者很多公司直接不绑定,而是每次都让用户填写账号密码.作为微信接口开发人员我们知道网页授权可以用作微信网页用作安全登录,带参数二维码的使用用作记录用户来源,模板消息用作购物消费等消息的通知,但是很少看到有综合利用这些高级接口做出体验比较好的公众账号,这里分享一些我开发的用户绑定和验证码的一些心得.所需要的接口有基础的回复.网页授权.带参数二维码.

基于phpcms v9开发的微信公众号平台管理模块

前沿 在公司为一家酒店联盟开发了一个微信公众号平台,期间因为要赶做其它项目,停停顿顿,整整 改改估计用在开发微信模块的时间大概一个多月,前期的开发基本上已经完成,因为这个微信公众号管理平台是在运用phpcms v9开发的,是phpcms v9的一个模块,所以给它取一个名称,就叫phpcmsv9-weinxin吧. 先上图 phpcmsv9-weinxin模块介绍 之所以叫做微信模块,是因为它是基于phpcms v9的一个插件,安装与卸载随性所欲.phpcms v9是中国领先的内容管理系统,将微信

微信公众号平台接口开发:基础支持,获取access_token

新建Asp.net MVC 4.0项目 WeChatSubscript是项目UI层 WeChatTools是封装操作访问公众号接口的一些方法类库 获取AccssToken 我们要的得到AccessToken,这是所有接口访问的基础,我们看看官方给出的接口调用文档 很简单明了,grant_type=client_credential,这是固定的不会变 appid与secret就是前面一章我叫大家记起来的那个认证口令数据. 下边我们来实现这个功能,新建WeCharBase.cs 1 public c

微信公众号平台接口开发:基础支持,获取微信服务器IP地址

官方说明 目前看不出来这个接口有哪些具体运用,但是既然有这个接口,那我们就试试能不能用 访问接口 修改WeCharBase.cs,新增以下2个方法 1 public static string ServerIPs 2 { 3 get { return GetServerIPs(); } 4 } 5 6 /// <summary>获取所有服务器IP</summary> 7 /// <returns></returns> 8 private static str

微信公众号退款开发

博主是小菜鸟,这篇文章仅是自己开发的随笔记录,不足博友可以指出来,一起进步 1.[微信支付]公众号支付开发者文档链接地址 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4 调用微信退款接口,需要发送特定的xml格式字符串到到微信退款接口: 2.微信申请退款需要双向证书, JAVA只需要使用apiclient_cert.p12即可,证书从 https://pay.weixin.qq.com/index.php/core/hom

微信公众号项目笔记 二

一.项目介绍  通过公众号页面调用系统接口,完成物流系统客户签收功能. 1界面展示使用html5+css布局,使用weui样式库. 2Web项目使用asp.net MVC4技术.接口调用使用jquery库Ajax异步调用. 3 服务器环境server2008系统,Web容器IIS6 运行环境.net4.0 集成模式 二.用到知识点 1.  用户权限管理,首次登录保存用户token(openId)客户唯一标识符,微信公众号平台获取关注公众号的用户返回给系统调用,系统通过与工作号绑定的webAPI接

抛砖微信公众号应用开发

现在微信营销,真是炙手可热,各行各业都在利用微信这个社交平台,基于微信服务器这个服务网关,开发自己的应用服务,通过微信进行传播,真是方便快捷高效!大体的通信架构如下图所示. 由于工作的需要,我也着手研究微信公众平台的开发,在这过去的一周的时间,折腾了一个小实验环境,打通微信的两个基本验证关卡. 第一道验证,就是URL,Token填写完成后,点击提交的过程.(后面会详述) 第二道验证,就是公众号服务器上面的帖子进行分享等操作时,为了让别人看到友好的“标题”+“描述”+“缩略图”这种模式的帖子,必须