当前位置:   article > 正文

小程序关联公众号推送消息(20行代码搞定。公众平台最新版推送接口文档-傻瓜式复制粘贴)_微信公众号小程序代码

微信公众号小程序代码

点个赞哦

背景

最近开发的一个小程序项目需要通过服务号来推送通知。但是在最开始开发小程序的时候使用了一次性消息推送,不是很友好。

在做消息推送时也是踩了无数坑,因为在2021年2月前其他人的文章所使用的案例中调用的小程序模板消息接口都没有用,也没有实质性的帮助,所以我在这篇文章中给出自己摸索出针对统一消息接口做推送的解决方案。

1.首先将小程序绑定到指定的公众号下

2.申请公众号模板

 3.yml中增加小程序和公众号id及消息模板配置

 4.增加配置类

  1. @Data
  2. @Component
  3. @ConfigurationProperties()
  4. public class WxMiniConfigVo {
  5. /**小程序appid*/
  6. @Value("${wxmini.id}")
  7. private String WxMiniAPPID;
  8. /**小程序秘钥*/
  9. @Value("${wxmini.secret}")
  10. private String WxMiniSECRET;
  11. /**小程序数据加密方式*/
  12. @Value("${wxmini.grant_type}")
  13. private String WxMinigrantType;
  14. /**公众号id*/
  15. @Value("${wxmini.gzh_id}")
  16. private String WxGzhId;
  17. /**公众号模板*/
  18. @Value("${wxmini.gzh_template}")
  19. private String WxGzhTemplate;
  20. }

5.编写接口

  1. @Slf4j
  2. @Service
  3. public class SendMiniAppServiceImpl implements SendMiniAppService {
  4. @Autowired
  5. private WxMiniConfigVo wxMiniConfigVo;
  6. @Autowired
  7. private RedisUtil redisUtil;
  8. @Override
  9. public String getAccessToken() {
  10. RestTemplate restTemplate = new RestTemplate();
  11. Map<String, String> params = new HashMap<>();
  12. params.put("APPID", wxMiniConfigVo.getWxMiniAPPID());
  13. params.put("APPSECRET", wxMiniConfigVo.getWxMiniSECRET());
  14. params.put("grant_type", "client_credential");
  15. String tokenUrl="https://api.weixin.qq.com/cgi-bin/token?appid={APPID}&secret={APPSECRET}&grant_type={grant_type}";
  16. ResponseEntity<String> responseEntity = restTemplate.getForEntity(tokenUrl, String.class, params);
  17. String body = responseEntity.getBody();
  18. JSONObject object = JSON.parseObject(body);
  19. String Access_Token = object.getString("access_token");
  20. redisUtil.set("wxMiniToken", Access_Token);
  21. redisUtil.expire("wxMiniToken", Long.parseLong(object.getString("expires_in")));
  22. return Access_Token;
  23. }
  24. @Override
  25. public String push(String openid, Map<String, String> content) {
  26. //获取用户token
  27. String token = String.valueOf(redisUtil.get("wxMiniToken"));
  28. if (token == "null") {
  29. token = getAccessToken();
  30. }
  31. String resultStatus = "0";//0:失败,1:成功
  32. try {
  33. //小程序统一消息推送
  34. String path = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=" + token;
  35. //封装参数
  36. JSONObject jsonData = new JSONObject();
  37. jsonData.put("touser", openid); // 小程序openid
  38. JSONObject jsonObject = new JSONObject();
  39. jsonObject.put("appid", wxMiniConfigVo.getWxGzhId());// 公众号id
  40. jsonObject.put("template_id", wxMiniConfigVo.getWxGzhTemplate());// 公众号消息模板id
  41. //公众号消息数据封装
  42. JSONObject data = new JSONObject();
  43. data.put("first", getValue("请注意!有新告警产生"));//标题
  44. data.put("keyword1", getValue(content.get("deviceId")));//设备编号
  45. data.put("keyword2", getValue(content.get("alarmName")));//设备名称
  46. data.put("keyword3", getValue(content.get("alarmAddress")));//设备地址
  47. data.put("keyword4", getValue(content.get("content")));//告警描述
  48. data.put("keyword5", getValue(content.get("alarmTime")));//告警时间
  49. data.put("remark", getValue("请及时排查并处理!"));
  50. jsonObject.put("data", data);
  51. jsonData.put("mp_template_msg", jsonObject);
  52. HttpRequest.sendPost(path, jsonData.toJSONString());
  53. resultStatus="1";
  54. } catch (Exception e) {
  55. log.error("微信公众号发送消息失败!",e.getMessage());
  56. resultStatus="0";
  57. }
  58. return resultStatus;
  59. }
  60. private JSONObject getValue(String value) {
  61. // TODO Auto-generated method stub
  62. JSONObject json = new JSONObject();
  63. json.put("value", value);
  64. json.put("color", "#173177");
  65. return json;
  66. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/70804
推荐阅读
相关标签
  

闽ICP备14008679号