本文主要分享微信公众号开发的 demo 项目示例,并介绍项目中的一些内容。
demo 项目 WeixinDemo 的 github 地址:https://github.com/dksky/WeixinDemo
一、成为微信公众平台开发者(握手)
官网文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319
-
在微信公众平台上填写服务器配置,如下图:
URL:请填写为"项目根目录/f/wx/core"
Token:随意填,但填的值要记下来,之后填写在服务端的配置文件中。
同时要记录下微信公众号的 appId,secret,之后同样需要填写在服务端的配置文件 global.properties 中。 -
验证消息是否来自微信服务器
WeiXinFrontController 接收对应 url 的 get 请求,获取参数 signature、timestamp、nonce 和 echostr。根据 signature、timestamp、nonce 三个参数调用 SignUtil 进行验证请求是否来自微信。校验流程如下:
(1) 将 token、timestamp、nonce 三个参数进行字典序排序
(2) 将三个参数字符串拼接成一个字符串进行 sha1 加密
(3) 开发者获得加密后的字符串可与 signature 对比,标识该请求来源于微信 -
返回对应的随机字符串 echostr,表示验证成功。
二、消息与事件通知,返回信息给用户
握手成功,成为开发者之后,用户每次向微信公众号发送消息、或者产生自定义菜单、或产生微信支付订单等情况时,开发者填写的服务器配置 URL 将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应,如回复消息。
- 接收微信服务器推送的消息和事件。WeiXinFrontController 接收对应 url 的 post 请求。
- ProcessRequest 解析消息,并将消息和事件分类,交给对应的输入信息 Handler 进行处理。
- 对应类别信息处理 Handler 中执行业务逻辑。
- 若要返回信息给用户,则调用输出信息 Handler 进行返回信息构造,并返回信息给微信服务器即可。
三、全局定时获取 access_token 和 jsapi_ticket
官网文档:
获取 access_token:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
获取 jsapi_ticket:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
access_token 和 jsapi_ticket 的有效期目前都为 2 个小时,故需要定时刷新。
定时任务类 ObtainAccessTokenScheduler 中定时使用 appId 和 secret 调用微信接口获取 access_token 的值,使用 access_token 调用微信接口获取 jsapi_ticket 的值。
其他微信 api 调用待继续更新完善。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于