一月笔记-JAVA-微信公众平台开发

一、 初始微信公众平台

什么是微信公众号?我在网上找了一些答案:微信公众平台,即我们平时所说的“公众号”,曾用名“官方平台”、“媒体平台”,但最终命名为“公众平台”。从微信的命名我可以发现,公众平台不只是官方、媒体使用的平台,而是对所有公众都开放的统一平台。

微信公众平台地址:https://mp.weixin.qq.com/

微信公众平台公分4大板块:订阅号、服务号、小程序、企业号。

 

二、 开发账号准备

1、 账号注册

进入微信公众平台https://mp.weixin.qq.com ,点击右上角立即注册,选择“服务号”或“订阅号”注册(服务号仅限机构用户注册,个人用户只能选择订阅号)

注册时需填写一系列信息,根据提示填写即可,此处不做赘述。

2、 测试账号申请

三、 开发环境准备

1、 外网映射工具

Ngrock:内网转发 具体操作流程 参考官网https://www.ngrok.cc

四、微信公众平台数据交互原理

    微信公众平台实际只是起到一个桥梁作用,实际处理业务、提供服务的代码,依然是放在我自己的服务器或者公网映射上面。那么,我就可以在自己的电脑(服务器)上面编写后台代码,并通过映射工具提供公网能够访问的URL,然后将此URL绑定到微信后台即可。

五、 开发模式接入

1.填写服务器配置

进入微信公众平台,点击左侧【开发——基本配置】,选择【服务器配置】。即可进入配置页面:

其中:

URL:后台服务器公网访问地址

Token:开发者自定的验证口令

EncodingAESKey:随机字符串,如果消息加解密方式采用安全模式才需验证

一月笔记-JAVA-微信公众平台开发

我通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

1.首选需要获取4个校验参数

一月笔记-JAVA-微信公众平台开发

2.写个工具类Sha1加密

一月笔记-JAVA-微信公众平台开发

3.Servlet中调用校验方法,并验证结果,如果检验成功,将得到的随机字符串eahostr原路返回结果给微信平台

4.配置公众平台后台:

进入微信后台配置相关信息:
一月笔记-JAVA-微信公众平台开发

 

点击提交,微信将发送Get指令到Servlet,并调用doGet方法,进行我编写的验证操作,最后如果顺利返回随机字符串,则绑定成功。

六、打开开发文档,点击左侧的“消息管理”——“接受普通消息”即普通消息的接收与响应。

1.微信将发送Get请求给我的校验方法。当我接收消息的时候,微信将向我发送Post请求,并以XML的格式发送与接收数据。

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>

其中,各标签所包裹的内容:

一月笔记-JAVA-微信公众平台开发

2.借助dom4j的jar包,我可以编写方法,将XML格式,转化对Map对象格式,方法实现如下:

一月笔记-JAVA-微信公众平台开发

PS 实体类就不用多说了

一月笔记-JAVA-微信公众平台开发

3.将文本消息对象转化为XML合适

一月笔记-JAVA-微信公众平台开发

 

4.写完上述两个处理方法后,就可以开始实现【消息的接收与响应】回到最开始的Servlet中,在doPost方法中进行编写操作:

一月笔记-JAVA-微信公众平台开发

这样就成功的完成了文本消息的接收与响应。用户发送任何消息 返回对应的各类消息

微信可提供的消息类型

文本消息——text语音消息——voice图片消息——image

视频消息——video链接消息——link,位置消息——location,

消息视频消息——shortvideo

八、支持的事件推送——event

关注——subscribe取消关注——unsubscribe,上传地理位置——location

菜单点击——点击菜单获取消息时触发click/点击菜单跳转链接时触发view

扫描带参数二维码——未关注时触发subscribe/已关注时触发scan

PS:实现关键词自动回复,就会非常的简单,只需要在原始判断消息类型为Text的if条件中,继续进行二次判断,判断用户发送的消息为“1”、“2”、“?”还是其他内容,详细实现代码如下:

一月笔记-JAVA-微信公众平台开发

关注事件:

一月笔记-JAVA-微信公众平台开发

实现关键词自动回复:

一月笔记-JAVA-微信公众平台开发

总结:微信公众号的开发需要更多的时间来看开发手册 同时我也觉得公众号开发 有很多很多开发的地方 可以实现很多功能 更好的功能 更完美的功能 我会继续补充的。