fix 微信getUserPhoneNumber
This commit is contained in:
@@ -33,6 +33,7 @@ public enum ErrorCodeEnum {
|
||||
*/
|
||||
TOKEN_ERROR(2000001,"请求异常,与当前登录企业不匹配",null),
|
||||
FAIL(400000, "FAIL", null),
|
||||
WX_ACCESS_TOKEN_INVALID(400001, "WX_Invalid token", null),
|
||||
ACCESS_TOKEN_INVALID(400005, "Invalid token", null),
|
||||
PARAMS_VALIDATE_ERROR(400003, "参数校验失败!", null),
|
||||
LOGIN_ERROR(400004, "登录失败", null),
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.cool.store.mq.util.HttpRestTemplateService;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -31,6 +32,10 @@ public class WechatRest {
|
||||
|
||||
@Resource
|
||||
private HttpRestTemplateService httpRestTemplateService;
|
||||
@Value("${weixin.appId}")
|
||||
private String wxAppId;
|
||||
@Value("${weixin.appSecret}")
|
||||
private String wxAppSecret;
|
||||
|
||||
/**
|
||||
* 小程序Token 地址
|
||||
@@ -97,10 +102,24 @@ public class WechatRest {
|
||||
responseStr = httpRestTemplateService.postForObject(reqUrl, requestMap, String.class);
|
||||
log.info("WechatRest#getUserPhoneNumber, reqUrl:{}, response:{}", reqUrl, 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) {
|
||||
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user