fix 微信getUserPhoneNumber
This commit is contained in:
@@ -33,6 +33,7 @@ public enum ErrorCodeEnum {
|
|||||||
*/
|
*/
|
||||||
TOKEN_ERROR(2000001,"请求异常,与当前登录企业不匹配",null),
|
TOKEN_ERROR(2000001,"请求异常,与当前登录企业不匹配",null),
|
||||||
FAIL(400000, "FAIL", null),
|
FAIL(400000, "FAIL", null),
|
||||||
|
WX_ACCESS_TOKEN_INVALID(400001, "WX_Invalid token", null),
|
||||||
ACCESS_TOKEN_INVALID(400005, "Invalid token", null),
|
ACCESS_TOKEN_INVALID(400005, "Invalid token", null),
|
||||||
PARAMS_VALIDATE_ERROR(400003, "参数校验失败!", null),
|
PARAMS_VALIDATE_ERROR(400003, "参数校验失败!", null),
|
||||||
LOGIN_ERROR(400004, "登录失败", null),
|
LOGIN_ERROR(400004, "登录失败", null),
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.cool.store.mq.util.HttpRestTemplateService;
|
|||||||
import com.cool.store.utils.RedisUtilPool;
|
import com.cool.store.utils.RedisUtilPool;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -31,6 +32,10 @@ public class WechatRest {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private HttpRestTemplateService httpRestTemplateService;
|
private HttpRestTemplateService httpRestTemplateService;
|
||||||
|
@Value("${weixin.appId}")
|
||||||
|
private String wxAppId;
|
||||||
|
@Value("${weixin.appSecret}")
|
||||||
|
private String wxAppSecret;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 小程序Token 地址
|
* 小程序Token 地址
|
||||||
@@ -97,10 +102,24 @@ public class WechatRest {
|
|||||||
responseStr = httpRestTemplateService.postForObject(reqUrl, requestMap, String.class);
|
responseStr = httpRestTemplateService.postForObject(reqUrl, requestMap, String.class);
|
||||||
log.info("WechatRest#getUserPhoneNumber, reqUrl:{}, response:{}", reqUrl, responseStr);
|
log.info("WechatRest#getUserPhoneNumber, reqUrl:{}, response:{}", reqUrl, responseStr);
|
||||||
if(StringUtils.isNotBlank(responseStr)){
|
if(StringUtils.isNotBlank(responseStr)){
|
||||||
return JSONObject.parseObject(responseStr, PhoneInfoDTO.class);
|
PhoneInfoDTO phoneInfoDTO = JSONObject.parseObject(responseStr, PhoneInfoDTO.class);
|
||||||
|
if (phoneInfoDTO != null && "40001".equals(phoneInfoDTO.getErrCode())) {
|
||||||
|
throw new ServiceException(ErrorCodeEnum.WX_ACCESS_TOKEN_INVALID);
|
||||||
|
}
|
||||||
|
return phoneInfoDTO;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("获取手机号异常", e);
|
log.error("获取手机号异常", e);
|
||||||
|
log.info("重新获取微信token");
|
||||||
|
String cacheAccessToken = "wechat_mini_" + wxAppId;
|
||||||
|
redisUtilPool.delKey(cacheAccessToken);
|
||||||
|
String newAccessToken = getAccessToken(wxAppId, wxAppSecret);
|
||||||
|
reqUrl = String.format(GET_USERPHONENUMBER, newAccessToken);
|
||||||
|
responseStr = httpRestTemplateService.postForObject(reqUrl, requestMap, String.class);
|
||||||
|
log.info("WechatRest#newGetUserPhoneNumber, reqUrl:{}, response:{}", reqUrl, responseStr);
|
||||||
|
if (StringUtils.isNotBlank(responseStr)) {
|
||||||
|
return JSONObject.parseObject(responseStr, PhoneInfoDTO.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user