提交 677d01da 作者: zhenjie

修改-获取稳定版accessToken

上级 6fae0c94
......@@ -18,6 +18,7 @@ public class WxConstant {
public final static String subscribe = "subscribe";
public final static String unsubscribe = "unsubscribe";
public static final String IUAV_MINI_PROGRAM_ACCESS_TOKEN = "IUAV_MINI_PROGRAM_ACCESS_TOKEN";
public static final String IUAV_MINI_PROGRAM_STABLE_ACCESS_TOKEN = "IUAV_MINI_PROGRAM_STABLE_ACCESS_TOKEN";
public static final String SHARE_FLY_SUB_ACCESS_TOKEN = "SHARE_FLY_SUB_ACCESS_TOKEN";
......
......@@ -33,6 +33,12 @@ public interface WxService {
String getAccessToken();
/**
* 获取稳定AccessToken
* @return
*/
String getStableAccessToken() throws Exception;
/**
* 获取公众号AccessToken
* @return
*/
......
......@@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
......@@ -82,6 +83,35 @@ public class WxServiceImpl implements WxService {
}
@Override
public String getStableAccessToken() {
//token有效期为7200s,需要保存起来,先从redis中获取accessToken,没有则请求获取
String accessToken = stringRedisTemplate.opsForValue().get(WxConstant.IUAV_MINI_PROGRAM_STABLE_ACCESS_TOKEN);
if (StringUtils.isBlank(accessToken)){
Map<String, String> params = new HashMap<String, String>();
params.put("grant_type", "client_credential");
params.put("appid", userSystemConstant.getWxAppId());
params.put("secret", userSystemConstant.getWxAppSecret());
String stableAccessTokenUrl = "https://api.weixin.qq.com/cgi-bin/stable_token";
String res = null;
try {
res = HttpsRequestUtil.httpsRequest(stableAccessTokenUrl, "POST", null, JSONObject.toJSONString(params));
} catch (Exception e) {
e.printStackTrace();
}
JSONObject tokenResult = JSONObject.parseObject(res);
if (res.indexOf("access_token") == -1) {
return null;
}
accessToken = tokenResult.getString("access_token");
long expiresIn = tokenResult.getLong("expires_in");
//保存进redis
stringRedisTemplate.opsForValue().set(WxConstant.IUAV_MINI_PROGRAM_STABLE_ACCESS_TOKEN, accessToken, expiresIn, TimeUnit.SECONDS);
return accessToken;
}
return accessToken;
}
@Override
public String getSubAccessToken() {
//token有效期为7200s,需要保存起来,先从redis中获取accessToken,没有则请求获取
String accessToken = stringRedisTemplate.opsForValue().get(WxConstant.SHARE_FLY_SUB_ACCESS_TOKEN);
......@@ -201,7 +231,7 @@ public class WxServiceImpl implements WxService {
public ResultBody getUnLimitedQRCode(String path, String scene) {
String base64 = "";
try {
String accessToken = this.getAccessToken();
String accessToken = this.getStableAccessToken();
JSONObject param = new JSONObject();
param.put("scene", scene);
param.put("page", path);
......@@ -219,7 +249,7 @@ public class WxServiceImpl implements WxService {
@Override
public ResultBody sendAppletMsg(AppletMsgVO appletMsgVO) {
String accessToken = this.getAccessToken();
String accessToken = this.getStableAccessToken();
if (StringUtils.isBlank(accessToken)){
return ResultBody.error(ResultEnum.WX_ACCESS_TOKEN_ERROR.getResultCode(),
ResultEnum.WX_ACCESS_TOKEN_ERROR.getResultMsg());
......@@ -238,7 +268,7 @@ public class WxServiceImpl implements WxService {
@Override
public String createUrlLink(String path, String query) {
try {
String accessToken = this.getAccessToken();
String accessToken = this.getStableAccessToken();
JSONObject param = new JSONObject();
param.put("path", path);
param.put("env_version", userSystemConstant.getEnvVersion());
......@@ -259,12 +289,14 @@ public class WxServiceImpl implements WxService {
@Override
public String getUserPhoneNumber(Integer id, String code) {
try {
String accessToken = this.getAccessToken();
String accessToken = this.getStableAccessToken();
JSONObject param = new JSONObject();
param.put("code", code);
String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + accessToken;
String res = HttpHelper.httpPost(url, param.toString());
JSONObject result = JSONObject.parseObject(res);
log.info("param: id:{},code:{}", id, code);
log.info("getUserPhoneNumber: " + result.toString());
if (result.getString("errcode").equals("0")) {
String phone_info = result.getString("phone_info");
JSONObject phoneInfoObject = JSONObject.parseObject(phone_info);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论