935090232@qq.com
2021-01-07 c927efe5490eb43b75d5f6d65631951e891c3f8e
公众号模板消息demo
1 files added
4 files modified
201 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java 134 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java 16 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java 39 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/dev/system.properties 6 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/config/system.properties 6 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java
New file
@@ -0,0 +1,134 @@
package com.matrix.system.shopXcx.api;
import com.matrix.component.tools.HttpRequest;
import com.matrix.component.tools.HttpResponse;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.PropertiesUtil;
import com.matrix.core.tools.StringUtils;
import net.sf.json.JSONObject;
import java.io.IOException;
/***
 * 公众号api工具
 */
public class WeChatGzhApiTools {
    /**
     * 公众号秘钥
     */
    private static final String GZH_SECRET = "gzh_secret";
    /**
     * 公众号appid
     */
    private static final String GZH_APPID = "gzh_appid";
    /**
     * 微信登录url
     */
    private static final String WECHAT_LOGIN_URL = "wechar_login_url";
    /**
     * 上一次获取时间
     */
    private static Long preTime;
    /**
     * 当前有效的微信token
     */
    private static String accessToken = "";
    private static String appid = "";
    private static String secret = "";
    /**
     * 获取公众号APPId
     * @return
     */
    public static String  getAppid(){
        if(StringUtils.isBlank(appid)){
            appid = PropertiesUtil.getString(GZH_APPID);
        }
        return  appid;
    }
    /**
     * 获取公众号秘钥
     * @return
     */
    public static String  getSecret(){
        if(StringUtils.isBlank(secret)){
            secret = PropertiesUtil.getString(GZH_SECRET);
        }
        return  secret;
    }
    /**
     * 清空token
     */
    public static void cleanAccessToken() {
        preTime = null;
        accessToken = "";
    }
    public static String getAccessToken(String gzhAppId, String gzhSecret) {
        if (isTokenInvalid()) {
            synchronized (accessToken) {
                if (isTokenInvalid()) {
                    LogUtil.info("刷新微信accessToken");
                    HttpRequest reqObj = new HttpRequest();
                    HttpResponse result = null;
                    try {
                        result = reqObj
                                .sendHttpGet("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
                                        + gzhAppId+ "&secret=" + gzhSecret, null);
                    } catch (IOException e) {
                        LogUtil.error("获取公众号accessToken失败"+e.getMessage(),e);
                        throw new GlobleException(e.getMessage());
                    }
                    JSONObject json = JSONObject.fromObject(result.getDataString());
                    String errmsg=json.getString("errmsg");
                    if(StringUtils.isNotBlank(errmsg)){
                        throw new GlobleException("获取返回刷新的accessToken失败"+json.toString());
                    }else{
                        String access_token = json.getString("access_token");
                        accessToken = access_token;
                        preTime = System.currentTimeMillis();
                        LogUtil.info("返回刷新的accessToken={}", accessToken);
                        return access_token;
                    }
                } else {
                    return accessToken;
                }
            }
        } else {
            LogUtil.info("返回现有accessToken={}", accessToken);
            return accessToken;
        }
    }
    /**
     * token是否无效
     *  TODO 由于现在有多个环境,为了防止冲突每次都获取新的token
     * @return
     */
    private static boolean isTokenInvalid() {
        /**        if (StringUtils.isNotBlank(accessToken) && preTime != null) {
         Long now = System.currentTimeMillis() / 1000;
         Long pre = preTime / 1000;
         boolean invalid = (now - pre) > 6200;
         return invalid;
         } else {
         return true;
         }*/
        return true;
    }
}
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java
@@ -71,22 +71,6 @@
    public static void main(String[] args) {
        GzhTemplateMessagePojo messagePojo=new GzhTemplateMessagePojo();
        messagePojo.setTouser("123");
        messagePojo.setTemplate_id("543");
        messagePojo.setUrl("231");
        messagePojo.setMiniprogram("65475234","/123/234123412");
        messagePojo.setFirst("1231","#453454");
        messagePojo.setKeyWord("1231","#453454");
        System.out.println(JSONObject.toJSON(messagePojo).toString());
    }
    public void setMiniprogram(String appid,String url){
        this.setMiniprogram(new Miniprogram(appid,url));
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java
@@ -1,5 +1,10 @@
package com.matrix.system.wechart.templateMsg;
import com.alibaba.fastjson.JSONObject;
import com.matrix.component.tools.HttpClientUtil;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.system.shopXcx.api.WeChatGzhApiTools;
import com.matrix.system.shopXcx.bean.ShopAdvertisType;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
@@ -8,13 +13,43 @@
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.swing.text.html.HTML;
import java.io.IOException;
@Controller
@RequestMapping(value = "test")
public class MsgDemo {
    @Value("${gzh_appid}")
    String gzhAppId;
    public static void main(String[] args) {
    @Value("${gzh_secret}")
    String gzhSecret;
    @RequestMapping("/template")
    @ResponseBody
    public AjaxResult template() {
        GzhTemplateMessagePojo messagePojo=new GzhTemplateMessagePojo();
        messagePojo.setTouser("123");
        messagePojo.setTemplate_id("543");
        messagePojo.setUrl("231");
        messagePojo.setMiniprogram("65475234","/123/234123412");
        messagePojo.setFirst("1231","#453454");
        messagePojo.setKeyWord("1231","#453454");
        System.out.println(JSONObject.toJSON(messagePojo).toString());
        String ACCESS_TOKEN=WeChatGzhApiTools.getAccessToken(gzhAppId,gzhSecret);
        String url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+ACCESS_TOKEN;
        JSONObject result= HttpClientUtil.sendPostWithJson(url,JSONObject.toJSON(messagePojo).toString());
        System.out.println(result.toString());
        return AjaxResult.buildSuccessInstance("1");
    }
}
zq-erp/src/main/resources/config/dev/system.properties
@@ -58,6 +58,12 @@
xcx_appid =wx3836ab3c1490ff29
xcx_secret =39a3687ec5b2666ed68e7c8b83b26b47
#公众号
gzh_appid=wx57e6335559bdbda6
gzh_secret=123
#微信支付调试开关
wx_pay_debug_onoff = false
zq-erp/src/main/resources/config/system.properties
@@ -51,6 +51,12 @@
xcx_appid =wx3836ab3c1490ff29
xcx_secret =39a3687ec5b2666ed68e7c8b83b26b47
#公众号
gzh_appid=wx57e6335559bdbda6
gzh_secret=123
#微信支付调试开关
wx_pay_debug_onoff = false