总结:
遇到的坑:
①要想调用微信的模版消息,我们就需要获取该用户关注的这个公众号 openId,
要获取 openId 就要获取进入时候的 code 参数,code 参数通过一个链接获取。那么我们在进入公众号后的时候就需要回调这个链接,然后获取到 openId。
这里回调里面有一个 redirect_uri 参数,这个是回调的 URL 编码后的值。我们既然要回调,就需要在公众号管理端将回调域名设置为我们请求的域名(注意域名一个月只能修改三次)。
②在调用微信获取 code 的链接时,不能是 ajax 请求,否则回调将无法完成。应该是微信拒绝 ajax 请求。
/*
* 登录后,如果openId为空,则保存openId到用户表中
*/
String weixinOpenId = user.getWeixinOpenId();
if(Tools.isEmpty(weixinOpenId)){
String ssString = WechatUtils.getUserAuthURL(true,
weixinConstant.wReturnPrefix + request.getContextPath()
+ "/wechatLoginNoOpenId.do","0");
response.sendRedirect(ssString);
}
③请求的参数中 url 为模板消息点击后跳转的页面。
if(!Tools.isEmpty(openId)){
//将参数转为json
String templateMsgJson = WechatUtils.wrapJsonData(openId,
weixinConstant.wReturnPrefix
+ weixinConstant.ContextPath
+ "/inform/informWXView.do?id="+id,
weixinConstant.template_id_inform,
weixinConstant.firstData_inform,
"李建波",
"下午三点开会",//TODO
"请及时处理",
weixinConstant.remarkData);
//发送模板通知
WechatUtils.sendTemplateMsg(templateMsgJson);
}else{
System.err.println("----------------通知人员的openId为空");
}
原文:http://blog.51cto.com/jianboli/2050774
来源: http://www.bubuko.com/infodetail-2428951.html