WeixinPushUtool.java 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package com.idea.weixinPush;
  2. import cn.hutool.core.date.DateUtil;
  3. import cn.hutool.http.HttpUtil;
  4. import cn.hutool.json.JSONObject;
  5. import cn.hutool.json.JSONUtil;
  6. import org.apache.commons.lang.StringUtils;
  7. import java.util.Date;
  8. import java.util.HashMap;
  9. import java.util.Map;
  10. public class WeixinPushUtool {
  11. public static String access_token = null;
  12. public static Date access_token_time = null;
  13. public static final String TOKENURL = "https://api.weixin.qq.com/cgi-bin/token";
  14. public static final String MSGURL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send";
  15. //获取接口调用凭证
  16. public static String getAccessToken(){
  17. String grant_type = "client_credential";
  18. String appid = "wx85a804d3b1e38801";
  19. String secret = "961bb9e9eeab427d436434dcb05656c2";
  20. String result = HttpUtil.get(TOKENURL+"?grant_type="+grant_type+"&appid="+appid+"&secret="+secret);
  21. JSONObject jsonObject = JSONUtil.parseObj(result);
  22. return jsonObject.get("access_token").toString();
  23. }
  24. //发送微信订阅消息
  25. public void sendWXmsg(MsgTempleEnum tem, String userOpenId, String url, MiniprogramStateEnum state, Map<String, Object> data){
  26. if(!useful(access_token, access_token_time)){
  27. access_token = getAccessToken();
  28. access_token_time = new Date();
  29. }
  30. System.err.println("access_token——:"+access_token);
  31. HashMap<String, Object> paramMap = new HashMap<>();
  32. paramMap.put("access_token", access_token);
  33. paramMap.put("touser", userOpenId);
  34. paramMap.put("template_id", tem.getValue());
  35. if(StringUtils.isNotBlank(url))
  36. paramMap.put("page", url);
  37. System.err.println("数据——:"+JSONUtil.toJsonStr(data));
  38. paramMap.put("data", data);
  39. if(null != state)
  40. paramMap.put("miniprogram_state", state.getValue());
  41. String result = HttpUtil.post(MSGURL+"?access_token="+access_token, JSONUtil.toJsonStr(paramMap));
  42. System.err.println("发送消息接口返回——:"+result);
  43. }
  44. //判断参数是否有效
  45. public static boolean useful(String str, Date data){
  46. if(StringUtils.isBlank(str))
  47. return false;
  48. if(DateUtil.offsetHour(data, 1).getTime() < new Date().getTime())
  49. return false;
  50. return true;
  51. }
  52. public static void main(String[] args) {
  53. getAccessToken();
  54. // System.err.println("getAccessToken_:"+);
  55. }
  56. }