java微信公众号开发思路

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java微信公众号开发思路相关的知识,希望对你有一定的参考价值。

方法一:不开启开发模式,直接在自定义菜单中跳转到网页,适用于流量较小的公众号。
 
方法二:开启开发者模式,关闭自带的自定义菜单和消息回复,接入自己开发的应用
          1、接入校验:创建servlet,在doGet()中进行校验,校验成功表示微信和当前应用接入成功
          2、响应用户发送的消息:在servlet的doPost()中进行响应xml消息,xml消息有以下属性:
                    FromUserName,ToUserName,MsgType,Content
               其中MsgType又分event,text,voice,video,link,location,subscribe等等类型,系统需要先根据MsgType类型来进行响应
          3、通过appId和secretId获取accessToken,用于调用微信的接口。token有效时间一般为2小时。
                    1)可以开启线程用thread.sleep(2000)来不断获取token放到静态字段里,要用的时候到静态字段里取即可
                    2)将token、过期时间保存到redis等数据库中,用的时候取出,然后判断是否过期,过期则重新获取。
          3、创建自定义菜单
               组装自定义菜单(json),通过post请求将自定义菜单连带accessToken发送到微信接口。菜单创建
 
 
  交互图:
 
技术分享

 

  以下是acessToken设计伪代码:
class WxServlet extends HttpServlet{
    doGet(){//接入校验}
    doPost(){//响应消息}
    init(){
      WxUtil.createMenu();
    }
}

class AcessToken{
  pivate String token;
  private String expires;
  //getter setter
}


class WxUtil{
  void createMenu(){
    //获取acessToken
    getAcessToken();
    //组装菜单(json)发送post请求到微信服务器,创建成功
  }

  String getAcessToken(){
    //校验token是否过期,过期重新获取,否则用数据库中的数据
    AcessToken t= getAcessTokenFromDb();
    if(checkExpires(t.exprise))
      return t.token;
    else
      return getAcessTokenFromWx().token;
  }

  AcessToken getAcessTokenFromDb(){}
  AcessToken getAcessTokenFromWx(){
      //通过微信接口请求acessToken,保存到数据库
    saveToken2Db(t);
    //返回token
  }

  void saveToken2Db(t){
    //将token保存到数据库或内存中
  }

}

 

以上是关于java微信公众号开发思路的主要内容,如果未能解决你的问题,请参考以下文章

微信端获取用户信息(思路)

微信公众号抓包思路

java微信公众号开发怎样进行本地联调

微信公众号开发java版-消息回复(普通文字消息和语音消息)

微信公众号开发

Java微信开发_03_使用测试号进行开发