• 国酒茅台·国之栋梁 希望工程圆梦行动获第十二届人民企业社会责任奖年度案例奖 2019-12-06
  • 湖州日报社党委书记、社长沈振建祝贺人民日报创刊70周年 2019-12-06
  • 是什么时候颠覆了“文艺应当为千千万万劳动人民服务”这一社会主义文艺路线的?!那一股“伤痕潮”功不可灭,可惜的是“旧伤痕”已经烟灭,取代其的是“挖根潮”。留给工农 2019-11-24
  • 我国居民人均预期寿命又提高了 2017年提高至76.7岁 2019-11-24
  • 《格萨尔》史诗藏译汉16册完成终审 2019-11-10
  • 干惊天动地事  做崇德守廉人 2019-10-20
  • 新一代宝马8系首发亮相 运动旗舰正式回归 2019-10-20
  • 全纪录600名工人为“重庆铁路咽喉”动手术  奋战7个通宵为旅客节约1小时 2019-10-19
  • 共享单车押金安全受关注 部分平台已引入银行存管 2019-10-16
  • 视频--江苏频道--人民网 2019-10-16
  • 回复@看着就想笑:历史至今的客观事实是奴隶主剥削奴隶、封建地主剥削农奴、资本家剥削雇佣劳动者、师傅剥削徒弟都是建立在私有制基础上的,而且小私有和他人联合顾工生 2019-10-14
  • 把党的十九大精神全面落实在重庆大地上——华龙网 2019-10-06
  • 高一年级组“经典永流传”诵读比赛精彩回顾—wydzx.blog的博客—强国博客—人民网 2019-10-06
  • 欢迎访问《南开管理评论》官方网站! 2019-10-04
  • 新华网评:秉“真诚”之态 谋共同发展 2019-10-04
  • 青海麻将258 www.jncff.tw 青海麻将258 > QQ技巧 > 微信公众号模板消息发送

    微信公众号模板消息发送

    时间:2018-10-29 11:13 作者:QQ地带 我要评论

    微信官方接口为:
     
    https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277
     
     
     
    自己开发中总结了一下,如下,方便后续备查:
     
    ①微信的模板消息,其实是微信公众号上推送给用户的一条消息记录。
     
    在开发的时候,需要获取到用户的openId(用户关注公众号就会产生一个唯一的openId),然后通过openId 推送给对应的用户,这样用户就能收到这条消息了。
     
    ②订阅号必须升级为服务号才能获取“模板消息” 的接口权限,并且必须通过认证。(服务号接功能更多,但是群发消息由订阅号的每天一条变成了一个月4条。)
     
    ③开通模板消息的时候会让我们选择2个行业,并且每月只能修改一次。我们可以搜索模板,直接使用通用模板。如果我们需要自定义模板,那么就需要自己申请。
     
    ④微信公众号的tokenId,有效期只有2个小时,所以我们需要采用定时器每一个小时50分钟去获取一次,同时,在程序启动完成之后要获取一次。
     
    系统用户登录的时候我们就判断是否有openId,如果没有,那么就去获取openId 。(我们OA系统是开发在微信公众号里面的,所以用户登录系统前就已经关注了公众号)
     
    登录接口调用成功后,调用首页接口,接口中判断如果没有openId,那么就跳转到A接口(微信需要的接口去获取openId,然后存入表中),A接口最后再次请求首页,这时已经有OpenId了,那么直接展示首页内容。
     
    微信模板消息开发流程:
    ①微信用户点击登录调用loginController中的login_login_wechat
    成功后调用weixin_index
     
     /**访问系统首页·微信版
    * @param changeMenu:切换菜单参数
    * @return
    */
    @RequestMapping(value="/weixin_index")
    public ModelAndView login_weixin_index(HttpServletRequest request,HttpServletResponse response){
    ModelAndView mv = this.getModelAndView();
    PageData pd = new PageData();
    pd = this.getPageData();
    try{
    Session session = Jurisdiction.getSession();
    User user = (User)session.getAttribute(Const.sessionUser); //读取session中的用户信息(单独用户信息)
    if (user != null && user.getRole()!=null && !user.getRole().getRights().trim().equals("")) {
    session.setAttribute(Const.sessionUserName, user.getUserName()); //放入用户名到session
    this.getRemortIP(user.getUserName()); //更新登录IP
    mv.setViewName("weixin/index/main");
    mv.addObject("user", user);
    /*
    * 登录后,如果openId为空,则保存openId到用户表中 TODO
    */
    // String weixinOpenId = user.getWeixinOpenId();
    // if(Tools.isEmpty(weixinOpenId)){
    // String ssString = WechatUtils.getUserAuthURL(true,
    // weixinConstant.wReturnPrefix + request.getContextPath()
    // + "/wechatLoginNoOpenId.do","0");
    // response.sendRedirect(ssString);
    // }
    // 我的待办·待审核数量
    String userId = user.getId();
    List<DBTodo> todoList  = new ArrayList<>();
    //登录人待办
     
    }else {
    mv.setViewName("weixin/index/login");//session失效后跳转登录页面
    }
    } catch(Exception e){
    mv.setViewName("weixin/index/login");
    logger.error(e.getMessage(), e);
    }
    mv.addObject("pd",pd);
    return mv;
    }
     
     
     
    /**
    * 微信登录,没有openId
    * @return
    */
    @RequestMapping(value="/wechatLoginNoOpenId")
    @ResponseBody
    public void wechatLoginNoOpenId(HttpServletRequest request,HttpServletResponse response){
    try {
    String code = ServletRequestUtils.getStringParameter(request, "code");
    String result = WechatUtils.getUserOpenId(code);
    if (result != null) {
    JSONObject jSONObject = JSONObject.fromObject(result);
    String openId = jSONObject.getString("openid");
    System.err.println("======================当前登录用户登录微信openId:"+openId);
    User user =(User)Jurisdiction.getSession().getAttribute(Const.sessionUser);
    user.setWeixinOpenId(openId);
    userService.editU(user);
    //再次请求微信首页,这次openId已经有值了直接进入首页
    response.sendRedirect(weixinConstant.wReturnPrefix + request.getContextPath()
    + "/weixin_index.do");
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
     
    web.xml 中
    系统系统完成后获取一次微信的tokenId。
     
      <!-- 程序启动完成执行-->
      <!-- <servlet>  
        <servlet-name>init</servlet-name>  
        <servlet-class>com.kentra.listener.WebAppInitListener</servlet-class>  
        <load-on-startup>3</load-on-startup>
      </servlet> -->
     
     
    模板消息的发送示例,请参考 InformController.java 中的goSend方法
     
    或WechatUtils.java 中的main方法。
     
     
    将所有的 逗号,替换为 分号
     
    "lijianbo,yangmi,li".replace(/,/g, ";" );

    标签: 微信公众号
    顶一下
    (118)
    92.2%
    踩一下
    (10)
    7.8%

    Google提供的广告

  • 国酒茅台·国之栋梁 希望工程圆梦行动获第十二届人民企业社会责任奖年度案例奖 2019-12-06
  • 湖州日报社党委书记、社长沈振建祝贺人民日报创刊70周年 2019-12-06
  • 是什么时候颠覆了“文艺应当为千千万万劳动人民服务”这一社会主义文艺路线的?!那一股“伤痕潮”功不可灭,可惜的是“旧伤痕”已经烟灭,取代其的是“挖根潮”。留给工农 2019-11-24
  • 我国居民人均预期寿命又提高了 2017年提高至76.7岁 2019-11-24
  • 《格萨尔》史诗藏译汉16册完成终审 2019-11-10
  • 干惊天动地事  做崇德守廉人 2019-10-20
  • 新一代宝马8系首发亮相 运动旗舰正式回归 2019-10-20
  • 全纪录600名工人为“重庆铁路咽喉”动手术  奋战7个通宵为旅客节约1小时 2019-10-19
  • 共享单车押金安全受关注 部分平台已引入银行存管 2019-10-16
  • 视频--江苏频道--人民网 2019-10-16
  • 回复@看着就想笑:历史至今的客观事实是奴隶主剥削奴隶、封建地主剥削农奴、资本家剥削雇佣劳动者、师傅剥削徒弟都是建立在私有制基础上的,而且小私有和他人联合顾工生 2019-10-14
  • 把党的十九大精神全面落实在重庆大地上——华龙网 2019-10-06
  • 高一年级组“经典永流传”诵读比赛精彩回顾—wydzx.blog的博客—强国博客—人民网 2019-10-06
  • 欢迎访问《南开管理评论》官方网站! 2019-10-04
  • 新华网评:秉“真诚”之态 谋共同发展 2019-10-04
  • 麻将至尊王 黑龙江p62开奖 大乐透专家 搞养殖业赚钱吗 pk10开奖 河北11选5玩法 波叔一波中特图2018 江苏时时彩计划软件 最不赚钱的高铁 北京快乐8预测