微信公众号发送模板消息

微信公众号发送模板消息

一、controller方法
@RestController
@RequestMapping("/public/num")
public class SendTemplateMsg {

    @GetMapping("/sendOnlyMsg")
    public String sendOnlyMsg(String openId){
        Map<String, WeChatTemplateMsg> msgHashMap = new HashMap<>();
        msgHashMap.put("name",new WeChatTemplateMsg("张三"));

        RestTemplate accessTemplate = new RestTemplate();
        //公众号appid和秘钥
        String appid = "";
        String s= "";
        String accessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + s;
        String response = accessTemplate.getForObject(accessTokenUrl, String.class);
        JSONObject object = JSONObject.parseObject(response);
        String accessToken = object.getString("access_token");

        //发送消息的url
        String msgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken;
        //封装消息信息
        HashMap<String, Object> bodyMsg = new HashMap<>();
        //模板id
        bodyMsg.put("template_id","");
        //模板内容
        bodyMsg.put("data",msgHashMap);
        //openId
        bodyMsg.put("touser", openId);
      
        //设置跳转小程序页面
        JSONObject miniprogram = new JSONObject();
        //小程序的appid
        miniprogram.put("appid", Configure.appID);
        //跳转页面路径
        miniprogram.put("path", "pages/home/home");
        bodyMsg.put("miniprogram",miniprogram);

	    //url设置后是跳转H5页面
	    bodyMsg.put("url","");
        
        RestTemplate msgTemplate = new RestTemplate();
        ResponseEntity<String> responseEntity = msgTemplate.postForEntity(msgUrl,bodyMsg,String.class);
        if (responseEntity.getStatusCode() != HttpStatus.OK) {
            System.out.println("推送消息异常: " + openId);
        }
        return "成功";
    }

    /**
     * 通过微信接口获得微信公众号订阅者的openid
     * @param accessToken
     * @return
     */
    public static List<String> getOpenIdsFromWX(String accessToken) {
        RestTemplate restTemplate = new RestTemplate();

        String url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + accessToken;
        ResponseEntity<String> response = restTemplate.postForEntity(url, null, String.class);
        JSONObject object = JSONObject.parseObject(response.getBody());
        List<String> openIds = JSONObject.parseArray(object.getJSONObject("data").getString("openid"), String.class);
        return openIds;
    }
}
二、模板信息
@Data
public class WeChatTemplateMsg {

    /**
     * 消息
     */
    private String value;
    /**
     * 消息颜色
     */
    private String color;

    public WeChatTemplateMsg(String value) {
        this.value = value;
        this.color = "#173177";
    }

    public WeChatTemplateMsg(String value, String color) {
        this.value = value;
        this.color = color;
    }
}

一个在学习的开发者,勿喷,欢迎交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值