首页 > 编程语言 >java微信公众号 推送消息

java微信公众号 推送消息

时间:2023-06-07 15:55:43浏览次数:42  
标签:Map java String openid 微信 param access token 推送

WxConfig.java  
@Slf4j
@Service
public class WxConfig {
@Resource
private WxClient wxClient;

    // appId
    private static final String appId = "xxxx";

    // appIdSecret
    private static final String appIdSecret = "xxxx";

    private static final String templateId = "xxxxx";


    /**
    * 获取WxToken
    *
    * @return
    */

    public String getWxToken() {
      Map<String, Object> clientCredential = new HashMap<>();
      try {
      clientCredential = wxClient.getUserToken("client_credential", appId, appIdSecret);
      } catch (Exception e) {
        log.info("获取微信token异常,{}", e);
      }
        return clientCredential.get("access_token") != null ? clientCredential.get("access_token").toString() : "500";
      }

      /**
      * 获取 公众号下的 opnid集合
      *
      * @return
      */
      public String getUserList() {
        String wxToken = getWxToken();
        if (wxToken.equals("500")) {
        throw new BaseAppException("获取WxToken失败!");
          }
          Map<String, Object> wxUser = new HashMap<>();
        try {
          wxUser = wxClient.getWxUser(wxToken, "");
          } catch (Exception e) {
            log.info("获取微信openid异常,{}", e);
          }
            JSONObject data = JSONUtil.parseObj(wxUser.get("data"));
            return data.get("openid") != null ? data.get("openid").toString() : "500";
          }


          /**
          * 获取微信openid信息
          *
          * @param opnid
          * @return
          */
          public Map<String, Object> getWxUserInfo(String opnid) {
            String wxToken = getWxToken();
            if (wxToken.equals("500")) {
              throw new BaseAppException("获取WxToken失败!");
              }
              Map<String, Object> resultMap = new HashMap<>();
            try {
            resultMap = wxClient.getWxUserInfo(wxToken, opnid, "zh_CN");
            } catch (Exception e) {
            log.info("获取微信用户信息异常,{}", e);
            }
              return resultMap;
            }


             public void sendWxMsg(String openId) {
                String wxToken = getWxToken();
                if (wxToken.equals("500")) {
                throw new BaseAppException("获取WxToken失败!");
                }
              Map<String, Object> wxUser = wxClient.getWxUser(wxToken, "");
              JSONArray jsonArray = JSONUtil.parseArray(JSONUtil.parseObj(wxUser.get("data")).get("openid"));
              //模板参数
                Map<String, WeChatTemplateMsg> sendMag = new HashMap<String, WeChatTemplateMsg>();
              sendMag.put("body", new WeChatTemplateMsg("测试微信下发接口!!!!!"));
              //请求参数
              Map<String, Object> paramMap = new HashMap<>();
              paramMap.put("touser", jsonArray.get(0)); // openId
              paramMap.put("url", "http://125.46.78.163:15002/fs/notice/17677/031527"); // 点击模板信息跳转地址
              paramMap.put("topcolor", "#FF0000"); // 顶色
              paramMap.put("data", sendMag); // 模板参数
              paramMap.put("template_id", templateId); // 模板Id
              Map<String, Object> resultMap = new HashMap<>();
              try {
                resultMap = wxClient.sendTemplateMsg(wxToken, paramMap);
              } catch (Exception e) {
                log.info("微信消息推送异常,{}", e);
              }
              }

            }     WxClient.java  
public interface WxClient {

/**
* 获取token
*
* @param grant_type
* @param appid
* @param secret
* @return
*/

@Get("https://api.weixin.qq.com/cgi-bin/token")
Map<String, Object> getUserToken(@Query("grant_type") String grant_type, @Query("appid") String appid, @Query("secret") String secret);

/**
* 获取用户openId
*
* @param access_token
* @param next_openid
* @return
*/

@Get("https://api.weixin.qq.com/cgi-bin/user/get")
Map<String, Object> getWxUser(@Query("access_token") String access_token, @Query("next_openid") String next_openid);


/**
* 默认值 lang=zh_CN
*
* @param access_token
* @param openid
* @param lang
* @return
*/
@Get("https://api.weixin.qq.com/cgi-bin/user/info")
Map<String, Object> getWxUserInfo(@Query("access_token") String access_token, @Query("openid") String openid, @Query("lang") String lang);


/**
* 发送模板消息
* @param access_token
* @param paramMap
* @return
*/
@Post("https://api.weixin.qq.com/cgi-bin/message/template/send")
Map<String, Object> sendTemplateMsg(@Query("access_token") String access_token, @JSONBody Map<String, Object> paramMap);

}

标签:Map,java,String,openid,微信,param,access,token,推送
From: https://www.cnblogs.com/message-hrp/p/17463525.html

相关文章

  • java代码调用Python代码
    1,使用runtime调用Python脚本String[]arguments=newString[]{"E:\\ProgramFiles\\python.exe","E:\\wzCode\\signal.py",Arrays.toString(datas),String.valueOf(Num)};......
  • Java7新特性: 多异常捕获
    在Java7中引入了一种新的异常处理机制,即多异常捕获。在之前的版本中,我们通常使用单个catch块来捕获所有可能抛出的异常。但是,这种方式可能导致代码变得冗长且难以阅读。多异常捕获机制可以使代码更加简洁、易读,并且可以更准确地处理不同类型的异常情况。接下来就让我们大家一起来看......
  • 蓝桥杯十一届JavaA组-C++解题
    随便乱写,目前正确性未知C.本质上升序列#include<bits/stdc++.h>usingnamespacestd;boolaccess[4][4];intdfs(intidx,intx,inty){ if(x<0||y<0||x>=4||y>=4) return0; if(access[y][x]) return0; if(idx>=15) return1; intcount=0; access......
  • JS 模拟 Java 动态数组(类)
     Code:/***动态数组*@class*/varDArray=(function(){/***数据数组*@type{*[]}*/letdata;/***数组中的元素个数*@type{number}*/letsize;/***调整数组容器大小*@param{number}new_capacity*/co......
  • Java多线程-工具篇-BlockingQueue
    前言:   在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认......
  • 你是怎么学习 Java 技术的?
    一、Java语言Java语言不只是一门语言。Java学习不是一蹴而就就可以达成的,它是一个循序渐进,由浅入深,由表及里的过程。尤其需要注意的是不能有浅尝辄耻,不求甚解的态度。每个地方只抓一点,等于什么也没得到。每个小范畴内的学习都必须讲究系统性,完整性。二、知识的获取你是......
  • JAVA获取上月、本月的第一天和最后一天
    1、获取【上个月】第一天和上个月最后一天/***获取上个月第一天和上个月最后一天**@throwsParseException*/publicstaticMap<String,String>getLastOneMonthDay(){SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-dd");Map<String,String......
  • Java中如何动态创建接口的实现
    下面用JDK动态代理加一点简单的代码来演示这个过程:1、接口packagecom.yhouse.modules.daos;publicinterfaceIUserDao{publicStringgetUserName();}2、创建代理 packagecom.yhouse.modules.daos;importjava.lang.reflect.Proxy;/***创建代理*@authorcl......
  • java.lang.OutOfMemoryError:GC overhead limit exceeded异常
    java.lang.OutOfMemoryError异常解决方法 原因:常见的有以下几种:1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据;2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;3.代码中存在死循环或循环产生过多重复的对象实体;4.使用的第三方软件中的BUG;5.启动参数内存......
  • 微信H5适配 解决微信调整字体大小导致Html5页面混乱
    最近开发公众号遇到一个问题:iOS、Android加载页面,如果用户调整了微信自带的字体大小,那么我们的页面就会跟随调整字体大小,导致页面错乱无法适配。所以希望能够禁止微信的字体放大功能。找了一些方法总结如下:原理:阻止ios和安卓调整字体大小时候的事件,ios通过添加css属性,安卓通过......