提交 1beaa28b 作者: zhenjie

调用微信相关接口

上级 5a420129
package com.mmc.iuav.user.service; package com.mmc.iuav.user.service;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.vo.WxLoginVO; import com.mmc.iuav.user.model.vo.WxLoginVO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** /**
* @author: zj * @author: zj
* @Date: 2023/5/16 13:43 * @Date: 2023/5/16 13:43
...@@ -26,4 +30,35 @@ public interface WxService { ...@@ -26,4 +30,35 @@ public interface WxService {
* @return * @return
*/ */
String getAccessToken(); String getAccessToken();
/**
* 获取公众号AccessToken
* @return
*/
String getSubAccessToken();
/**
* 监控微信公众号的事件变化通知
* @param request
* @param response
*/
void receiveSubAccountEvents(HttpServletRequest request, HttpServletResponse response);
/**
* 推送订阅消息
* @return
*/
ResultBody sendSubMsg();
/**
* 获取不限制的小程序码
* @param path
* @param scene
*/
void getUnLimitedQRCode(String path, String scene);
} }
package com.mmc.iuav.user.service.impl; package com.mmc.iuav.user.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.mmc.iuav.http.HttpsRequestUtil; import com.mmc.iuav.http.HttpsRequestUtil;
import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.constant.UserSystemConstant; import com.mmc.iuav.user.constant.UserSystemConstant;
import com.mmc.iuav.user.constant.WxConstant; import com.mmc.iuav.user.constant.WxConstant;
import com.mmc.iuav.user.model.vo.WxLoginVO; import com.mmc.iuav.user.model.vo.WxLoginVO;
import com.mmc.iuav.user.service.WxService; import com.mmc.iuav.user.service.WxService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** /**
* @author: zj * @author: zj
* @Date: 2023/5/16 13:44 * @Date: 2023/5/16 13:44
...@@ -19,16 +25,16 @@ public class WxServiceImpl implements WxService { ...@@ -19,16 +25,16 @@ public class WxServiceImpl implements WxService {
@Override @Override
public String appLogin(WxLoginVO wxLoginVO) { public String appLogin(WxLoginVO wxLoginVO) {
String url = WxConstant.CODE2_SESSION_URL + "?appid=" + userSystemConstant.getWxAppId() + "&secret=" + userSystemConstant.getWxAppSecret() + "&js_code=" + wxLoginVO.getCode() String url = WxConstant.CODE2_SESSION_URL + "?appid=" + userSystemConstant.getWxAppId() + "&secret=" +
+ "&grant_type=" + WxConstant.GRANT_TYPE; userSystemConstant.getWxAppSecret() + "&js_code=" + wxLoginVO.getCode() + "&grant_type=" + WxConstant.GRANT_TYPE;
String data = HttpsRequestUtil.httpsGet(url, null); String data = HttpsRequestUtil.httpsGet(url, null);
return data; return data;
} }
@Override @Override
public String pcLogin(WxLoginVO wxLoginVO) { public String pcLogin(WxLoginVO wxLoginVO) {
String url = WxConstant.ACCESS_TOKEN_URL + "?appid=" + userSystemConstant.getWxAppId() + "&secret=" + userSystemConstant.getWxAppSecret() + "&code=" + wxLoginVO.getCode() String url = WxConstant.ACCESS_TOKEN_URL + "?appid=" + userSystemConstant.getWxAppId() + "&secret=" + userSystemConstant.getWxAppSecret() +
+ "&grant_type=" + WxConstant.GRANT_TYPE; "&code=" + wxLoginVO.getCode() + "&grant_type=" + WxConstant.GRANT_TYPE;
String data = HttpsRequestUtil.httpsGet(url, null); String data = HttpsRequestUtil.httpsGet(url, null);
return data; return data;
} }
...@@ -36,6 +42,43 @@ public class WxServiceImpl implements WxService { ...@@ -36,6 +42,43 @@ public class WxServiceImpl implements WxService {
@Override @Override
public String getAccessToken() { public String getAccessToken() {
//token有效期为7200s,需要保存起来 //token有效期为7200s,需要保存起来
//先从redis中获取accessToken,没有则请求获取
String accessToken = null;
if (StringUtils.isBlank(accessToken)){
String getAccessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token" + "?grant_type=client_credential" + "&appid=" +
userSystemConstant.getWxAppId() + "&secret" + userSystemConstant.getWxAppSecret();
String accessTokenMsg = HttpsRequestUtil.httpsGet(getAccessTokenUrl, null);
JSONObject tokenResult = JSONObject.parseObject(accessTokenMsg);
if (accessTokenMsg.indexOf("access_token") == -1) {
System.out.println("获取用户信息有误:access_token请求失败:" + tokenResult);
return null;
}
accessToken = tokenResult.getString("access_token");
long expiresIn = tokenResult.getLong("expires_in");
//保存进redis
return accessToken;
}else {
return accessToken;
}
}
@Override
public String getSubAccessToken() {
return null;
}
@Override
public void receiveSubAccountEvents(HttpServletRequest request, HttpServletResponse response) {
}
@Override
public ResultBody sendSubMsg() {
return null; return null;
} }
@Override
public void getUnLimitedQRCode(String path, String scene) {
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论