赞
踩
分布式技术专题+面试解析+相关的手写和学习的笔记pdf
还有更多Java笔记分享如下:
我的java后台是基于springboot开发的,如果你不了解spring boot,建议你先去了解下springboot再回来接着学习。
还有RestTemplate是我们java后台做get和post请求必须的,我们和微信服务器交互就用的RestTemplate
1 首先根据官方推送所需字段组装java-bean
这里用到两个javabean
/* * 小程序推送所需数据 * qcl 微信:2501902696 * */ @Data public class WxMssVo { private String touser;//用户openid private String template_id;//模版id private String page = "index";//默认跳到小程序首页 private String form_id;//收集到的用户formid private String emphasis_keyword = "keyword1.DATA";//放大那个推送字段 private Map<String, TemplateData> data;//推送文字 }
/* * 设置推送的文字和颜色 * qcl 微信:2501902696 * */ @Data public class TemplateData { //keyword1:订单类型,keyword2:下单金额,keyword3:配送地址,keyword4:取件地址,keyword5备注 private String value;//,,依次排下去 // private String color;//字段颜色(微信官方已废弃,设置没有效果) }
到这里请求推送的数据就组装好了,解下来我们去实现推送功能。
奥不对,还有一个重要的字段需要获取到:access_token
access_token的获取
/* * 获取access_token * appid和appsecret到小程序后台获取,当然也可以让小程序开发人员给你传过来 * */ public String getAccess_token(String appid, String appsecret) { //获取access_token String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential" + "&appid=" + appid + "&secret=" + appsecret; String json = restTemplate.getForObject(url, String.class); AccessToken accessToken = new Gson().fromJson(json, AccessToken.class); return accessToken.getAccess_token(); }
这次是真正的可以来请求微信服务器来实现消息推送了
/* * 微信小程序推送单个用户 * */ public String pushOneUser(String openid, String formid) { //获取access_token String access_token = getAccess_token(ConstantUtils.SCHOOL_APPID, ConstantUtils.SCHOOL_APPSECRET); String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send" + "?access_token=" + access_token; //拼接推送的模版 WxMssVo wxMssVo = new WxMssVo(); wxMssVo.setTouser(openid);//用户openid wxMssVo.setTemplate_id("LzeDP0G5PLgHoOjCMfhu44wfUluhW11Zeezu3r_dC24");//模版id wxMssVo.setForm_id(formid);//formid Map<String, TemplateData> m = new HashMap<>(5); //keyword1:订单类型,keyword2:下单金额,keyword3:配送地址,keyword4:取件地址,keyword5备注 TemplateData keyword1 = new TemplateData(); keyword1.setValue("新下单待抢单"); m.put("keyword1", keyword1); TemplateData keyword2 = new TemplateData(); keyword2.setValue("这里填下单金额的值"); m.put("keyword2", keyword2); wxMssVo.setData(m); TemplateData keyword3 = new TemplateData(); keyword3.setValue("这里填配送地址"); m.put("keyword3", keyword3); wxMssVo.setData(m); TemplateData keyword4 = new TemplateData(); keyword4.setValue("这里填取件地址"); m.put("keyword4", keyword4); wxMssVo.setData(m); TemplateData keyword5 = new TemplateData(); keyword5.setValue("这里填备注"); m.put("keyword5", keyword5); wxMssVo.setData(m); ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, wxMssVo, String.class); log.error("小程序推送结果={}", responseEntity.getBody()); return responseEntity.getBody(); }
openid可以让小程序开发人员给你传过来,也可以自己获取。
formid需要小程序开发给你传过来,你也可以把formid存到数据库里,什么时候需要直接拿出来用就可以了。
注意:formid必须和用户openid对应。
package com.qcl.paotuischool.wechat; import com.google.gson.Gson; import com.qcl.userwechat.bean.AccessToken; import com.qcl.utils.ConstantUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.Map; import lombok.extern.slf4j.Slf4j; /** * Created by qcl on 2018/9/11. * 微信小程序推送服务, * 包含获取access_token的服务 */ @Service @Slf4j public class WxPushServiceQcl { //用来请求微信的get和post @Autowired private RestTemplate restTemplate; /* * 微信小程序推送单个用户 * */ public String pushOneUser(String openid, String formid) { //获取access_token String access_token = getAccess_token(ConstantUtils.SCHOOL_APPID, ConstantUtils.SCHOOL_APPSECRET); String url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send" + "?access_token=" + access_token; //拼接推送的模版 WxMssVo wxMssVo = new WxMssVo(); wxMssVo.setTouser(openid);//用户openid wxMssVo.setTemplate_id("LzeDP0G5PLgHoOjCMfhu44wfUluhW11Zeezu3r_dC24");//模版id wxMssVo.setForm_id(formid);//formid Map<String, TemplateData> m = new HashMap<>(5); //keyword1:订单类型,keyword2:下单金额,keyword3:配送地址,keyword4:取件地址,keyword5备注 TemplateData keyword1 = new TemplateData(); keyword1.setValue("新下单待抢单"); m.put("keyword1", keyword1); TemplateData keyword2 = new TemplateData(); keyword2.setValue("这里填下单金额的值"); m.put("keyword2", keyword2); wxMssVo.setData(m); TemplateData keyword3 = new TemplateData(); keyword3.setValue("这里填配送地址"); m.put("keyword3", keyword3); wxMssVo.setData(m); TemplateData keyword4 = new TemplateData(); keyword4.setValue("这里填取件地址"); m.put("keyword4", keyword4); wxMssVo.setData(m); TemplateData keyword5 = new TemplateData(); keyword5.setValue("这里填备注"); m.put("keyword5", keyword5); wxMssVo.setData(m); ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, wxMssVo, String.class); log.error("小程序推送结果={}", responseEntity.getBody()); return responseEntity.getBody(); } /* * 获取access_token * appid和appsecret到小程序后台获取,当然也可以让小程序开发人员给你传过来 * */ public String getAccess_token(String appid, String appsecret) { //获取access_token ### 最后 光给面试题不给答案不是我的风格。这里面的面试题也只是凤毛麟角,还有答案的话会极大的**增加文章的篇幅**,减少文章的可读性 # Java面试宝典2021版 ![](https://img-blog.csdnimg.cn/img_convert/b8b6cc42b9608ddffcf9c648d473ac68.webp?x-oss-process=image/format,png) ![](https://img-blog.csdnimg.cn/img_convert/7436801337b039513504b123e5fc6676.webp?x-oss-process=image/format,png) # 最常见Java面试题解析(2021最新版) ![](https://img-blog.csdnimg.cn/img_convert/72df55cfe18d4c711fcee2297ce494f7.webp?x-oss-process=image/format,png) ![](https://img-blog.csdnimg.cn/img_convert/9dc7f3ca65283108047d595313622b94.webp?x-oss-process=image/format,png) # 2021企业Java面试题精选 ![](https://img-blog.csdnimg.cn/img_convert/55a1feb9e7eb372c38318892c47395e7.webp?x-oss-process=image/format,png) ![](https://img-blog.csdnimg.cn/img_convert/d27a92257e2dc26e2ac66100eb3837b1.webp?x-oss-process=image/format,png) > **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录** **[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)** 15536710486)] # 最常见Java面试题解析(2021最新版) [外链图片转存中...(img-tOsOA6Xk-1715536710486)] [外链图片转存中...(img-rHUlIXlm-1715536710486)] # 2021企业Java面试题精选 [外链图片转存中...(img-L5Avy22Y-1715536710487)] [外链图片转存中...(img-pY8Jk4dv-1715536710487)] > **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录** **[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。