目的:调用微信上传图片接口时,需要获取用到微信accessToken和ticket,下面主要说明怎么获取
一、controller方法
public Map<String,Object> weixinInfo(){
try {
//1、获取AccessToken jsapi_ticket
String accessToken="";
String jsapiTicket="";
Map<String,String> tokenMap=AccessTokenUtils.getAccessToken();AccessTokenUtils见第二步
if(tokenMap!=null){
accessToken =tokenMap.get("access_token");
jsapiTicket =tokenMap.get("jsapi_ticket");
}
//3、时间戳和随机字符串
String noncestr = UUID.randomUUID().toString().replace("-", "").substring(0, 16);//随机字符串
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);//时间戳
//4、获取url
String url = R.getRequest().getScheme()+"://"+ R.getRequest().getServerName()+R.getRequest().getRequestURI();
if(StringUtils.isNoneBlank(R.getRequest().getQueryString())){
url = R.getRequest().getScheme()+"://"+ R.getRequest().getServerName()+R.getRequest().getRequestURI()+"?"+R.getRequest().getQueryString();
}
//5、将参数排序并拼接字符串
String str = "jsapi_ticket="+jsapiTicket+"&noncestr="+noncestr+"×tamp="+timestamp+"&url="+url;
logger.info("参数拼接的字符串:"+str);
//6、将字符串进行sha1加密
String signature =WeiXinUtils.SHA1(str);
logger.info("签名:"+signature);
Map<String,Object> data=new HashMap<>();
data.put("timestamp", timestamp);
data.put("nonceStr", noncestr);