fix 微信getUserPhoneNumber

This commit is contained in:
shuo.wang
2024-11-01 18:12:16 +08:00
parent 81dfe87801
commit f3f69a845c
2 changed files with 21 additions and 1 deletions

View File

@@ -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),

View File

@@ -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;
}