@Cacheable(cacheNames = "access-token#3600", unless = "#result == null ")
@Override
public String getAccessToken() {
// https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
String uri = miniprogramProperty.getAccessTokenUri();
// + "?appid=" + miniprogramProperty.getAppId()
// + "&secret=" + miniprogramProperty.getAppSecret() + "&grant_type=client_credential&force_refresh=false";
Map<String, Object> params = new HashMap<>();
params.put("appid", miniprogramProperty.getAppId());
params.put("secret", miniprogramProperty.getAppSecret());
params.put("grant_type", "client_credential");
params.put("force_refresh", false);
log.info("请求参数,params={}", params);
// params.put("out_seq_no", TsidCreator.getTsid().toString());
BodyInserter<Map<String, Object>, ReactiveHttpOutputMessage> bodyInserter = BodyInserters.fromValue(params);
Mono<AccessTokenResult> accessTokenMono = WebClient.create()
.post().uri(uri).body(bodyInserter).retrieve().bodyToMono(AccessTokenResult.class);
AccessTokenResult result = accessTokenMono.block();
AssertUtil.isNull(result, "获取AccessToken失败");
AssertUtil.isBlank(result.access_token, "获取AccessToken失败");
// AccessTokenResult accessTokenResult;
// try {
// accessTokenResult = objectMapper.readValue(result, AccessTokenResult.class);
// } catch (JsonProcessingException e) {
// log.error("解析异常accessTokenResult={}", result);
// throw new ServiceException("获取accessToken失败");
// }
return result.access_token();
}