zq-erp/src/main/java/com/matrix/system/shopXcx/api/WeChatGzhApiTools.java | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/GzhTemplateMessagePojo.java | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/java/com/matrix/system/wechart/templateMsg/MsgDemo.java | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/resources/config/dev/system.properties | ●●●●● patch | view | raw | blame | history | |
zq-erp/src/main/resources/config/system.properties | ●●●●● 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