一月笔记-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:随机字符串,如果消息加解密方式采用安全模式才需验证
我通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1.首选需要获取4个校验参数
2.写个工具类Sha1加密
3.Servlet中调用校验方法,并验证结果,如果检验成功,将得到的随机字符串eahostr原路返回结果给微信平台
4.配置公众平台后台:
进入微信后台配置相关信息:
点击提交,微信将发送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>
其中,各标签所包裹的内容:
2.借助dom4j的jar包,我可以编写方法,将XML格式,转化对Map对象格式,方法实现如下:
PS 实体类就不用多说了
3.将文本消息对象转化为XML合适
4.写完上述两个处理方法后,就可以开始实现【消息的接收与响应】回到最开始的Servlet中,在doPost方法中进行编写操作:
这样就成功的完成了文本消息的接收与响应。用户发送任何消息 返回对应的各类消息
七、微信可提供的消息类型
文本消息——text,语音消息——voice,图片消息——image,
视频消息——video,链接消息——link,位置消息——location,
消息视频消息——shortvideo,
八、支持的事件推送——event
关注——subscribe,取消关注——unsubscribe,上传地理位置——location
菜单点击——点击菜单获取消息时触发click/点击菜单跳转链接时触发view
扫描带参数二维码——未关注时触发subscribe/已关注时触发scan
PS:实现关键词自动回复,就会非常的简单,只需要在原始判断消息类型为Text的if条件中,继续进行二次判断,判断用户发送的消息为“1”、“2”、“?”还是其他内容,详细实现代码如下:
关注事件:
实现关键词自动回复:
总结:微信公众号的开发需要更多的时间来看开发手册 同时我也觉得公众号开发 有很多很多开发的地方 可以实现很多功能 更好的功能 更完美的功能 我会继续补充的。