公众号如何向用户发送重要的服务通知?

模板消息

微信开发文档地址

工具类:

package com.XXXXX.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

/**
 * 
 * @Date: 2021/12/17 0017 13:38
 */
@Slf4j
public class WxUtils {
    //APP ID 公众号
    private static final String APP_ID="XXXXXXX";
    //APP 密钥 公众号
    private static final String APP_SECRET="XXXXXXX";

    //根据code获取token和openid 请求地址 
    private static final String WX_GET_TOKEN_GZH_URL="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+APP_ID+"&secret="+APP_SECRET+"&grant_type=authorization_code&code=";

    //获取access_token
    private static final String WX_GET_ACCESS_TOKEN_URL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+APP_ID+"&secret="+APP_SECRET;

    //微信公众号发送模板消息
    private static final String WX_POST_SEND_TEMPLATE_URL="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";

    /**
     * 获取access_token,公众号的全局唯一接口调用凭据
     * @return
     */
    public static String getAccessToken(){
        String result=HttpClientUtil.doGet(WX_GET_ACCESS_TOKEN_URL);
        JSONObject wxObject=JSON.parseObject(result);
        return String.valueOf(wxObject.get("access_token"));
    }


    /**
     *          微信公众号发送模板消息
     * @param touser  接收者id
     * @param template_id  模板id
     * @param url    回调地址
     * @param topcolor  字体样式
     * @param data   发送的内容JSON
     * @return
     */
    public static String wxSendMsg(String touser, String template_id, String url, String topcolor, JSON data) throws IOException {
        net.sf.json.JSONObject json = new net.sf.json.JSONObject();
        json.accumulate("touser",touser);
        json.accumulate("template_id",template_id);
        json.accumulate("url",url);
        json.accumulate("topcolor",topcolor);
        json.accumulate("data",data);
        String msg = json.toString();
        String result = HttpClientUtil.sendPost(WX_POST_SEND_TEMPLATE_URL+getAccessToken(), msg);
        System.out.println(result);
        return result;
    }


    /**
     * 根据code拿取openid
     * @param code
     * @return
     */
    public static String getOpenId(String code){
        String result=HttpClientUtil.doGet(WX_GET_TOKEN_GZH_URL+code);
        JSONObject wxObject=JSON.parseObject(result);
        return String.valueOf(wxObject.get("openid"));
    }

}

你可能感兴趣的:(项目,微信)