温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

微信模板消息发送

发布时间:2020-08-01 12:28:45 来源:网络 阅读:1322 作者:建波李 栏目:移动开发

整个开发流程,我在“简书” 上看到了一个完整的开发流程。

https://www.jianshu.com/p/eb0e9c4dcdfe

微信官方接口为:

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, ";" );





向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI