From b3f3e0e3742c9a75a8bc2b35cdd74977fd24e9b0 Mon Sep 17 00:00:00 2001 From: jyx <1584081113@qq.com> Date: Tue, 26 Feb 2019 18:21:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=B5=8B=E8=AF=95=E5=8F=B7?= =?UTF-8?q?=E7=BD=91=E9=A1=B5=E6=8E=88=E6=9D=83=E5=8F=8A=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/weixin/bean/UserInfo.java | 18 ++ .../demo/weixin/bean/authorize/CodeToken.java | 14 ++ .../controller/WeixinCoreController.java | 39 +++- .../weixin/service/WeixinCoreServiceImpl.java | 1 + .../demo/weixin/util/WechatConstants.java | 17 ++ .../util/connection/WechatCommonUtil.java | 167 ++++++++++++++++++ .../util/{ => connection}/WeixinSignUtil.java | 2 +- .../https/HttpRequestUtil.java | 13 +- .../https/MyX509TrustManager.java | 2 +- .../weixin/util/menu/WechatCommonUtil.java | 52 ------ .../weixin/util/menu/WechatConstants.java | 8 - .../util/menu/WechatCreatDefaultMenu.java | 7 +- .../util/menu/WechatMenuManagerUtil.java | 6 +- .../demo/weixin/util/menu/WechatMenuUtil.java | 3 +- .../src/main/resources/application.properties | 18 +- demo/src/main/resources/application.yml | 28 +-- 16 files changed, 301 insertions(+), 94 deletions(-) create mode 100644 demo/src/main/java/com/example/demo/weixin/bean/UserInfo.java create mode 100644 demo/src/main/java/com/example/demo/weixin/bean/authorize/CodeToken.java create mode 100644 demo/src/main/java/com/example/demo/weixin/util/WechatConstants.java create mode 100644 demo/src/main/java/com/example/demo/weixin/util/connection/WechatCommonUtil.java rename demo/src/main/java/com/example/demo/weixin/util/{ => connection}/WeixinSignUtil.java (97%) rename demo/src/main/java/com/example/demo/weixin/{service => util}/https/HttpRequestUtil.java (83%) rename demo/src/main/java/com/example/demo/weixin/{service => util}/https/MyX509TrustManager.java (96%) delete mode 100644 demo/src/main/java/com/example/demo/weixin/util/menu/WechatCommonUtil.java delete mode 100644 demo/src/main/java/com/example/demo/weixin/util/menu/WechatConstants.java diff --git a/demo/src/main/java/com/example/demo/weixin/bean/UserInfo.java b/demo/src/main/java/com/example/demo/weixin/bean/UserInfo.java new file mode 100644 index 0000000..0fed350 --- /dev/null +++ b/demo/src/main/java/com/example/demo/weixin/bean/UserInfo.java @@ -0,0 +1,18 @@ +package com.example.demo.weixin.bean; + +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +public class UserInfo { + private String openid; //用户的唯一标识 + private String nickname; //用户昵称 + private String sex; //用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 + private String province; //用户个人资料填写的省份 + private String city; //普通用户个人资料填写的城市 + private String country; //国家,如中国为CN + private String headimgurl; //用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。 + private String privilege; //用户特权信息,json 数组,如微信沃卡用户为(chinaunicom) + private String unionid; //只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。 +} diff --git a/demo/src/main/java/com/example/demo/weixin/bean/authorize/CodeToken.java b/demo/src/main/java/com/example/demo/weixin/bean/authorize/CodeToken.java new file mode 100644 index 0000000..5d37ece --- /dev/null +++ b/demo/src/main/java/com/example/demo/weixin/bean/authorize/CodeToken.java @@ -0,0 +1,14 @@ +package com.example.demo.weixin.bean.authorize; + +import lombok.Getter; +import lombok.Setter; + +@Setter +@Getter +public class CodeToken { + private String openid; + private String Access_token; + private int Expires_in; + private String refresh_token; + private String scope; +} diff --git a/demo/src/main/java/com/example/demo/weixin/controller/WeixinCoreController.java b/demo/src/main/java/com/example/demo/weixin/controller/WeixinCoreController.java index 6097fcf..590166f 100644 --- a/demo/src/main/java/com/example/demo/weixin/controller/WeixinCoreController.java +++ b/demo/src/main/java/com/example/demo/weixin/controller/WeixinCoreController.java @@ -1,8 +1,11 @@ package com.example.demo.weixin.controller; +import com.example.demo.weixin.bean.UserInfo; +import com.example.demo.weixin.bean.authorize.CodeToken; import com.example.demo.weixin.service.DataProcess; import com.example.demo.weixin.service.WeixinCoreService; -import com.example.demo.weixin.util.WeixinSignUtil; +import com.example.demo.weixin.util.connection.WechatCommonUtil; +import com.example.demo.weixin.util.connection.WeixinSignUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +16,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import static com.example.demo.weixin.util.WechatConstants.appid; +import static com.example.demo.weixin.util.WechatConstants.appsecret; + @RestController @RequestMapping(value = "/wechat") public class WeixinCoreController { @@ -23,6 +29,8 @@ public class WeixinCoreController { @Autowired private WeixinSignUtil weixinSignUtil; @Autowired + private WechatCommonUtil wechatCommonUtil; + @Autowired private DataProcess dataProcess; @Autowired private WeixinCoreService weixinCoreService; @@ -69,4 +77,33 @@ public class WeixinCoreController { } } + @RequestMapping(value = "/auth",method = RequestMethod.GET) + public UserInfo auth(HttpServletRequest request,HttpServletResponse response)throws Exception{ + logger.info("--------进入auth的方法--------"); + + String code = request.getParameter("code"); + logger.info("code={}",code); + + CodeToken codeToken = wechatCommonUtil.getCodeToken(appid,appsecret,code); + UserInfo userInfo = new UserInfo(); + if(codeToken!=null){ + try{ + String openid = codeToken.getOpenid(); + String refresh_token = codeToken.getRefresh_token(); + String access_token = codeToken.getAccess_token(); + //判断access_token是否过期 + if(!wechatCommonUtil.isTokenValid(access_token,appid)){ + wechatCommonUtil.refreshToken(appid,refresh_token); + } + logger.info("开始获取用户信息"); + userInfo = wechatCommonUtil.getUserInfo(access_token,openid); + }catch (Exception e){ + userInfo = null; + } + }else{ + logger.info("用户授权失败"); + } + return userInfo; + } + } diff --git a/demo/src/main/java/com/example/demo/weixin/service/WeixinCoreServiceImpl.java b/demo/src/main/java/com/example/demo/weixin/service/WeixinCoreServiceImpl.java index 7402bc2..04d8ec6 100644 --- a/demo/src/main/java/com/example/demo/weixin/service/WeixinCoreServiceImpl.java +++ b/demo/src/main/java/com/example/demo/weixin/service/WeixinCoreServiceImpl.java @@ -144,6 +144,7 @@ public class WeixinCoreServiceImpl implements WeixinCoreService { } // 自定义菜单((自定义菜单URl视图)) else if (eventType.equals(weixinMessageUtil.EVENT_TYPE_VIEW)) { + respMessage = "自定义菜单uri视图"; System.out.println("处理自定义菜单URI视图"); } diff --git a/demo/src/main/java/com/example/demo/weixin/util/WechatConstants.java b/demo/src/main/java/com/example/demo/weixin/util/WechatConstants.java new file mode 100644 index 0000000..3ff4ac0 --- /dev/null +++ b/demo/src/main/java/com/example/demo/weixin/util/WechatConstants.java @@ -0,0 +1,17 @@ +package com.example.demo.weixin.util; + +public class WechatConstants { + public static String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; + public static String MENU_CREATE_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN"; + public static String MENU_GET_URL = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN"; + public static String MENU_DELETE_URL = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN"; + public static String appid = "wx473235c6be5c945a"; + public static String appsecret = "69a0c7bcccf20833fd549ae9a530d299"; + public static String redirect_url = "http://loan.ngrok.xiaomiqiu.cn/wechat/auth"; + public static String ACCESS_TOKEN_URL_BY_CODE = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code"; + public static String CODE_URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid + +"&redirect_uri="+redirect_url+"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; //scope=snsapi_base获取用户openid + public static String REFRESH_TOKEN = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN"; + public static String SNSAPI_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN"; + public static String IS_TOKEN_VAILD = "https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID"; +} diff --git a/demo/src/main/java/com/example/demo/weixin/util/connection/WechatCommonUtil.java b/demo/src/main/java/com/example/demo/weixin/util/connection/WechatCommonUtil.java new file mode 100644 index 0000000..460c807 --- /dev/null +++ b/demo/src/main/java/com/example/demo/weixin/util/connection/WechatCommonUtil.java @@ -0,0 +1,167 @@ +package com.example.demo.weixin.util.connection; + +import com.example.demo.weixin.bean.UserInfo; +import com.example.demo.weixin.bean.authorize.CodeToken; +import com.example.demo.weixin.bean.menu.AccessToken; +import com.example.demo.weixin.util.WechatConstants; +import com.example.demo.weixin.util.https.HttpRequestUtil; +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + + +/** + * 编写获取access_token的工具类 + */ + + +@Component +public class WechatCommonUtil { + Logger logger = LoggerFactory.getLogger(WechatCommonUtil.class); + + //获取access_token接口 + private static String token_url = WechatConstants.ACCESS_TOKEN_URL; + //@Autowired + HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); + + /** + * @Description: 获取微信调用高级接口的凭证(access_token) + * @Parameters: + * @Return: + */ + public AccessToken getAccessToken(String appid,String appsecret){ + //将公众号的appid和appsecret替换进url + //String.replace()替换原字符串中的子串 + String url = token_url.replace("APPID", appid).replace("APPSECRET", appsecret); + AccessToken accessToken = new AccessToken(); + //发起get请求获取凭证 + JSONObject jsonObject = httpRequestUtil.httpsRequest(url,"GET",null); + logger.info("获取到的json格式的Token为:"+jsonObject); + if (jsonObject!=null) { + try { + accessToken.setAccess_token(jsonObject.getString("access_token")); + accessToken.setExpires_in(jsonObject.getInt("expires_in")); + } catch (Exception e) { + accessToken = null; + //获取token失败 + logger.error("获取token失败 errcode:{} errmsg:{}", + jsonObject.getInt("errcode"), + jsonObject.getString("errmsg")); + } + } + return accessToken; + } + + + /** + * @Description: 用户同意授权,用code得到授权access_token + * @Parameters: + * @Return: + */ + public CodeToken getCodeToken(String appid,String secret,String code){ + token_url = WechatConstants.ACCESS_TOKEN_URL_BY_CODE; + //将appid,secret,code替换进url + String url = token_url.replace("APPID",appid).replace("SECRET",secret).replace("CODE",code); + CodeToken codeToken = new CodeToken(); + + //发起get请求获取凭证 + JSONObject jsonObject = httpRequestUtil.httpsRequest(url,"GET",null); + logger.info("获取到的json格式的Token为:"+jsonObject); + if(jsonObject!=null){ + try{ + codeToken.setAccess_token(jsonObject.getString("access_token")); + codeToken.setExpires_in(jsonObject.getInt("expires_in")); + codeToken.setOpenid(jsonObject.getString("openid")); + codeToken.setRefresh_token(jsonObject.getString("refresh_token")); + codeToken.setScope(jsonObject.getString("scope")); + }catch(Exception e){ + codeToken = null; + //获取token失败 + logger.error("获取token失败 errcode:{} errmsg:{}", + jsonObject.getInt("errcode"), + jsonObject.getString("errmsg")); + } + } + return codeToken; + } + + /** + * 刷新access_token + */ + public CodeToken refreshToken(String appid,String refresh_token){ + token_url = WechatConstants.REFRESH_TOKEN; + String url = token_url.replace("APPID",appid).replace("refresh_token",refresh_token); + CodeToken codeToken = new CodeToken(); + + JSONObject jsonObject = httpRequestUtil.httpsRequest(url,"GET",null); + if(jsonObject!=null){ + try{ + codeToken.setScope(jsonObject.getString("scope")); + codeToken.setRefresh_token(jsonObject.getString("refresh_token")); + codeToken.setAccess_token(jsonObject.getString("access_token")); + codeToken.setExpires_in(jsonObject.getInt("expires_in")); + codeToken.setOpenid(jsonObject.getString("openid")); + }catch (Exception e){ + codeToken = null; + //获取token失败 + logger.error("获取token失败 errcode:{} errmsg:{}", + jsonObject.getInt("errcode"), + jsonObject.getString("errmsg")); + } + + } + return codeToken; + + } + + /** + * 获取用户信息 + */ + public UserInfo getUserInfo(String access_token,String openid){ + token_url = WechatConstants.SNSAPI_USERINFO_URL; + String url = token_url.replace("ACCESS_TOKEN",access_token).replace("OPENID",openid); + UserInfo userInfo = new UserInfo(); + + JSONObject jsonObject = httpRequestUtil.httpsRequest(url,"GET",null); + if(jsonObject!=null){ + try{ + userInfo.setCity(jsonObject.getString("city")); + userInfo.setCountry(jsonObject.getString("country")); + userInfo.setHeadimgurl(jsonObject.getString("headimgurl")); + userInfo.setNickname(jsonObject.getString("nickname")); + userInfo.setOpenid(jsonObject.getString("openid")); + userInfo.setPrivilege(jsonObject.getString("privilege")); + userInfo.setProvince(jsonObject.getString("province")); + userInfo.setSex(jsonObject.getString("sex")); + userInfo.setUnionid(jsonObject.getString("unionid")); + }catch (Exception e){ + userInfo = null; + //获取信息失败 + logger.info("获取信息失败:errcode:{} errmsg:{}", + jsonObject.getInt("errcode"), + jsonObject.getString("errmsg")); + } + } + return userInfo; + + } + + /** + * 验证access_token是否有效 + */ + public boolean isTokenValid(String access_token,String openid)throws Exception{ + token_url = WechatConstants.IS_TOKEN_VAILD; + String url = token_url.replace("ACCESS_TOKEN",access_token).replace("OPENID",openid); + + JSONObject jsonObject = httpRequestUtil.httpsRequest(url,"GET",null); + boolean flag = false; + if(jsonObject!=null){ + if(jsonObject.getInt("errcode")==0)flag=true; + } + logger.info("errcode:{} errmsg:{}", + jsonObject.getInt("errcode"), + jsonObject.getString("errmsg")); + return flag; + } +} diff --git a/demo/src/main/java/com/example/demo/weixin/util/WeixinSignUtil.java b/demo/src/main/java/com/example/demo/weixin/util/connection/WeixinSignUtil.java similarity index 97% rename from demo/src/main/java/com/example/demo/weixin/util/WeixinSignUtil.java rename to demo/src/main/java/com/example/demo/weixin/util/connection/WeixinSignUtil.java index ae73ef4..344adba 100644 --- a/demo/src/main/java/com/example/demo/weixin/util/WeixinSignUtil.java +++ b/demo/src/main/java/com/example/demo/weixin/util/connection/WeixinSignUtil.java @@ -2,7 +2,7 @@ * 检测signature,标识该请求来自于微信 */ -package com.example.demo.weixin.util; +package com.example.demo.weixin.util.connection; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/demo/src/main/java/com/example/demo/weixin/service/https/HttpRequestUtil.java b/demo/src/main/java/com/example/demo/weixin/util/https/HttpRequestUtil.java similarity index 83% rename from demo/src/main/java/com/example/demo/weixin/service/https/HttpRequestUtil.java rename to demo/src/main/java/com/example/demo/weixin/util/https/HttpRequestUtil.java index bc3f925..a410565 100644 --- a/demo/src/main/java/com/example/demo/weixin/service/https/HttpRequestUtil.java +++ b/demo/src/main/java/com/example/demo/weixin/util/https/HttpRequestUtil.java @@ -1,4 +1,4 @@ -package com.example.demo.weixin.service.https; +package com.example.demo.weixin.util.https; import net.sf.json.JSONObject; import org.slf4j.Logger; @@ -43,7 +43,14 @@ public class HttpRequestUtil { HttpsURLConnection httpsURLConnection = (HttpsURLConnection)url.openConnection(); httpsURLConnection.setSSLSocketFactory(sslSocket); - httpsURLConnection.setDoOutput(true); /*httpUrlConnection.setDoOutput(true);以后就可以使用conn.getOutputStream().write() httpUrlConnection.setDoInput(true);以后就可以使用conn.getInputStream().read(); get请求用不到conn.getOutputStream(),因为参数直接追加在地址后面,因此默认是false。 post请求(比如:文件上传)需要往服务区传输大量的数据,这些数据是放在http的body里面的,因此需要在建立连接以后,往服务端写数据。 因为总是使用conn.getInputStream()获取服务端的响应,因此默认值是true。 */ + httpsURLConnection.setDoOutput(true); + /** + *httpUrlConnection.setDoOutput(true);以后就可以使用conn.getOutputStream().write() + *httpUrlConnection.setDoInput(true);以后就可以使用conn.getInputStream().read(); + *get请求用不到conn.getOutputStream(),因为参数直接追加在地址后面,因此默认是false。 + *post请求(比如:文件上传)需要往服务区传输大量的数据,这些数据是放在http的body里面的,因此需要在建立连接以后,往服务端写数据。 + *因为总是使用conn.getInputStream()获取服务端的响应,因此默认值是true。 + */ httpsURLConnection.setDoInput(true); httpsURLConnection.setUseCaches(false); //设置请求方式 GET/POST @@ -72,7 +79,7 @@ public class HttpRequestUtil { bufferedReader.close(); inputStreamReader.close(); inputStream.close(); - inputStream = null; + inputStream = null; httpsURLConnection.disconnect(); //将字符串转换为json对象 jsonObject = JSONObject.fromObject(stringBuffer.toString()); diff --git a/demo/src/main/java/com/example/demo/weixin/service/https/MyX509TrustManager.java b/demo/src/main/java/com/example/demo/weixin/util/https/MyX509TrustManager.java similarity index 96% rename from demo/src/main/java/com/example/demo/weixin/service/https/MyX509TrustManager.java rename to demo/src/main/java/com/example/demo/weixin/util/https/MyX509TrustManager.java index 965ea59..f403515 100644 --- a/demo/src/main/java/com/example/demo/weixin/service/https/MyX509TrustManager.java +++ b/demo/src/main/java/com/example/demo/weixin/util/https/MyX509TrustManager.java @@ -2,7 +2,7 @@ * 对于https请求,我们需要一个证书信任管理器, 这个管理器类需要自己定义,需要实现X509TrustManager接口代码 */ -package com.example.demo.weixin.service.https; +package com.example.demo.weixin.util.https; import javax.net.ssl.X509TrustManager; import java.security.cert.CertificateEncodingException; diff --git a/demo/src/main/java/com/example/demo/weixin/util/menu/WechatCommonUtil.java b/demo/src/main/java/com/example/demo/weixin/util/menu/WechatCommonUtil.java deleted file mode 100644 index 3caba1f..0000000 --- a/demo/src/main/java/com/example/demo/weixin/util/menu/WechatCommonUtil.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.example.demo.weixin.util.menu; - -import com.example.demo.weixin.bean.menu.AccessToken; -import com.example.demo.weixin.service.https.HttpRequestUtil; -import net.sf.json.JSONObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Component; - - -/** - * 编写获取access_token的工具类 - */ - - -@Component -public class WechatCommonUtil { - Logger logger = LoggerFactory.getLogger(WechatCommonUtil.class); - - //获取access_token接口 - private static String token_url = WechatConstants.ACCESS_TOKEN_URL; - //@Autowired - HttpRequestUtil httpRequestUtil = new HttpRequestUtil(); - - /** - * @Description: 获取微信调用高级接口的凭证(access_token) - * @Parameters: - * @Return: - */ - public AccessToken getAccessToken(String appid,String appsecret){ - //将公众号的appid和appsecret替换进url - //String.replace()替换原字符串中的子串 - String url = token_url.replace("APPID", appid).replace("APPSECRET", appsecret); - AccessToken accessToken = new AccessToken(); - //发起get请求获取凭证 - JSONObject jsonObject = httpRequestUtil.httpsRequest(url,"GET",null); - logger.info("获取到的json格式的Token为:"+jsonObject); - if (jsonObject!=null) { - try { - accessToken.setAccess_token(jsonObject.getString("access_token")); - accessToken.setExpires_in(jsonObject.getInt("expires_in")); - } catch (Exception e) { - accessToken = null; - //获取token失败 - logger.error("获取token失败 errcode:{} errmsg:{}", - jsonObject.getInt("errcode"), - jsonObject.getString("errmsg")); - } - } - return accessToken; - } -} diff --git a/demo/src/main/java/com/example/demo/weixin/util/menu/WechatConstants.java b/demo/src/main/java/com/example/demo/weixin/util/menu/WechatConstants.java deleted file mode 100644 index d0fa716..0000000 --- a/demo/src/main/java/com/example/demo/weixin/util/menu/WechatConstants.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.example.demo.weixin.util.menu; - -public class WechatConstants { - public static String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; - public static String MENU_CREATE_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN"; - public static String MENU_GET_URL = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN"; - public static String MENU_DELETE_URL = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN"; -} diff --git a/demo/src/main/java/com/example/demo/weixin/util/menu/WechatCreatDefaultMenu.java b/demo/src/main/java/com/example/demo/weixin/util/menu/WechatCreatDefaultMenu.java index 1c63afa..13b4fba 100644 --- a/demo/src/main/java/com/example/demo/weixin/util/menu/WechatCreatDefaultMenu.java +++ b/demo/src/main/java/com/example/demo/weixin/util/menu/WechatCreatDefaultMenu.java @@ -2,6 +2,10 @@ package com.example.demo.weixin.util.menu; import com.example.demo.weixin.bean.menu.Menu; +import com.example.demo.weixin.util.connection.WechatCommonUtil; + +import static com.example.demo.weixin.util.WechatConstants.appid; +import static com.example.demo.weixin.util.WechatConstants.appsecret; /** * @Description: 创建自定义菜单主方法 @@ -13,8 +17,7 @@ public class WechatCreatDefaultMenu { WechatCommonUtil wechatCommonUtil = new WechatCommonUtil(); WechatMenuUtil wechatMenuUtil = new WechatMenuUtil(); WechatMenuManagerUtil wechatMenuManagerUtil = new WechatMenuManagerUtil(); - String appid = "wx473235c6be5c945a"; - String appsecret = "69a0c7bcccf20833fd549ae9a530d299"; + //获取access_token String accessToken = wechatCommonUtil.getAccessToken(appid, appsecret).getAccess_token(); diff --git a/demo/src/main/java/com/example/demo/weixin/util/menu/WechatMenuManagerUtil.java b/demo/src/main/java/com/example/demo/weixin/util/menu/WechatMenuManagerUtil.java index 16324b8..165b102 100644 --- a/demo/src/main/java/com/example/demo/weixin/util/menu/WechatMenuManagerUtil.java +++ b/demo/src/main/java/com/example/demo/weixin/util/menu/WechatMenuManagerUtil.java @@ -2,6 +2,8 @@ package com.example.demo.weixin.util.menu; import com.example.demo.weixin.bean.menu.*; +import static com.example.demo.weixin.util.WechatConstants.CODE_URL; + /** * @Description: 菜单管理器类 @@ -23,7 +25,7 @@ public class WechatMenuManagerUtil { ViewButton firstViewButton = new ViewButton(); firstViewButton.setName("业务介绍"); firstViewButton.setType("view"); - firstViewButton.setUrl("http://loan.ngrok.xiaomiqiu.cn/personalCenter.html"); + firstViewButton.setUrl(CODE_URL); ViewButton secondViewButton = new ViewButton(); secondViewButton.setName("我要贷款"); @@ -34,7 +36,7 @@ public class WechatMenuManagerUtil { ViewButton viewButton1 = new ViewButton(); viewButton1.setType("view"); - viewButton1.setName("个人中心"); + viewButton1.setName("中心"); viewButton1.setUrl("http://loan.ngrok.xiaomiqiu.cn/personalCenter.html"); ViewButton viewButton2 = new ViewButton(); diff --git a/demo/src/main/java/com/example/demo/weixin/util/menu/WechatMenuUtil.java b/demo/src/main/java/com/example/demo/weixin/util/menu/WechatMenuUtil.java index 0d23295..1a78e58 100644 --- a/demo/src/main/java/com/example/demo/weixin/util/menu/WechatMenuUtil.java +++ b/demo/src/main/java/com/example/demo/weixin/util/menu/WechatMenuUtil.java @@ -1,7 +1,8 @@ package com.example.demo.weixin.util.menu; import com.example.demo.weixin.bean.menu.Menu; -import com.example.demo.weixin.service.https.HttpRequestUtil; +import com.example.demo.weixin.util.WechatConstants; +import com.example.demo.weixin.util.https.HttpRequestUtil; import net.sf.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/demo/src/main/resources/application.properties b/demo/src/main/resources/application.properties index c3208d2..b537b73 100644 --- a/demo/src/main/resources/application.properties +++ b/demo/src/main/resources/application.properties @@ -1,9 +1,9 @@ -spring.datasource.url=jdbc:mysql://127.0.0.1:3306/soft?serverTimezone=GMT%2B8 -spring.datasource.username=root -spring.datasource.password=123456789 -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -#spring.datasource.max-idle=10 -#spring.datasource.max-wait=10000 -#spring.datasource.min-idle=5 -#spring.datasource.initial-size=5 - +#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/soft?serverTimezone=GMT%2B8 +#spring.datasource.username=root +#spring.datasource.password=123456789 +#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +##spring.datasource.max-idle=10 +##spring.datasource.max-wait=10000 +##spring.datasource.min-idle=5 +##spring.datasource.initial-size=5 +# diff --git a/demo/src/main/resources/application.yml b/demo/src/main/resources/application.yml index 6efe302..d93eb14 100644 --- a/demo/src/main/resources/application.yml +++ b/demo/src/main/resources/application.yml @@ -1,14 +1,14 @@ -#spring: -# mvc: -# view: -# prefix: -# suffix: .html -# datasource: -# url: jdbc:mysql://127.0.0.1:3306/soft?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 -# username: root -# password: -# driver-class-name: com.mysql.cj.jdbc.Driver -#mybatis: -# type-aliases-package: com.example.demo.Dao -##server: -## path: 80 +spring: + mvc: + view: + prefix: + suffix: .html + datasource: + url: jdbc:mysql://127.0.0.1:3306/loan?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 + username: root + password: 12345678 + driver-class-name: com.mysql.cj.jdbc.Driver +mybatis: + type-aliases-package: com.example.demo.Dao +server: + port: 80