微信公众号开发 demo 项目示例

本贴最后更新于 2187 天前,其中的信息可能已经物是人非

本文主要分享微信公众号开发的 demo 项目示例,并介绍项目中的一些内容。
demo 项目 WeixinDemo 的 github 地址:https://github.com/dksky/WeixinDemo

一、成为微信公众平台开发者(握手)

官网文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319

  1. 在微信公众平台上填写服务器配置,如下图:
    a895baf9ea6a43cbad3b499646c5993b-image.png
    URL:请填写为"项目根目录/f/wx/core"
    Token:随意填,但填的值要记下来,之后填写在服务端的配置文件中。
    同时要记录下微信公众号的 appIdsecret,之后同样需要填写在服务端的配置文件 global.properties 中。

  2. 验证消息是否来自微信服务器
    WeiXinFrontController 接收对应 url 的 get 请求,获取参数 signaturetimestampnonceechostr。根据 signaturetimestampnonce 三个参数调用 SignUtil 进行验证请求是否来自微信。校验流程如下:
    (1) 将 tokentimestampnonce 三个参数进行字典序排序
    (2) 将三个参数字符串拼接成一个字符串进行 sha1 加密
    (3) 开发者获得加密后的字符串可与 signature 对比,标识该请求来源于微信

  3. 返回对应的随机字符串 echostr,表示验证成功。

二、消息与事件通知,返回信息给用户

握手成功,成为开发者之后,用户每次向微信公众号发送消息、或者产生自定义菜单、或产生微信支付订单等情况时,开发者填写的服务器配置 URL 将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应,如回复消息。

  1. 接收微信服务器推送的消息和事件。WeiXinFrontController 接收对应 url 的 post 请求。
  2. ProcessRequest 解析消息,并将消息和事件分类,交给对应的输入信息 Handler 进行处理。
  3. 对应类别信息处理 Handler 中执行业务逻辑。
  4. 若要返回信息给用户,则调用输出信息 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 调用待继续更新完善。

  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    130 引用 • 793 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...