|
@@ -2,42 +2,62 @@ package com.caimei.utils;
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.aliyun.opensearch.sdk.dependencies.org.apache.http.client.HttpClient;
|
|
|
-import com.aliyun.opensearch.sdk.dependencies.org.apache.http.client.ResponseHandler;
|
|
|
-import com.aliyun.opensearch.sdk.dependencies.org.apache.http.client.methods.HttpGet;
|
|
|
-import com.aliyun.opensearch.sdk.dependencies.org.apache.http.impl.client.BasicResponseHandler;
|
|
|
-import com.aliyun.opensearch.sdk.dependencies.org.apache.http.impl.client.DefaultHttpClient;
|
|
|
+import com.caimei.components.RedisService;
|
|
|
+import com.caimei.model.ResponseJson;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* @author Aslee
|
|
|
* @date 2021/7/14
|
|
|
*/
|
|
|
+@Component
|
|
|
+@Slf4j
|
|
|
public class WxUtils {
|
|
|
public final static String GET_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET";
|
|
|
public final static String GET_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";
|
|
|
public final static String GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
|
|
|
public final static String GET_USER_INFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
|
|
|
|
|
|
- @Value("${caimei.appid}")
|
|
|
- public static String appId;
|
|
|
- @Value("${caimei.secret}")
|
|
|
- public static String appSecret;
|
|
|
+ private static RedisService redisService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public void setRedisService(RedisService redisService1) {
|
|
|
+ redisService = redisService1;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取accessToken(公众号配置数据)
|
|
|
* @param appId 公众号appId
|
|
|
* @param appSecret 公众号appSecret
|
|
|
* @return
|
|
|
*/
|
|
|
- public static String getAccessToken(String appId,String appSecret) throws Exception {
|
|
|
- String requestUrl = GET_TOKEN_URL.replace("APPID", appId).replace("SECRET", appSecret);
|
|
|
+ public static Map<String,String> getAccessToken(String appId,String appSecret) throws Exception {
|
|
|
+ Map<String, String> result = new HashMap<>(5);
|
|
|
+ String requestUrl = GET_TOKEN_URL.replace("APPID", appId).replace("SECRET", appSecret);
|
|
|
String response = HttpRequest.sendGet(requestUrl);
|
|
|
- JSONObject tokenJson = JSONObject.parseObject(response);
|
|
|
- return String.valueOf(tokenJson.get("access_token"));
|
|
|
+ JSONObject json = JSONObject.parseObject(response);
|
|
|
+ String errcode = String.valueOf(json.get("errcode"));
|
|
|
+ String errmsg = String.valueOf(json.get("errmsg"));
|
|
|
+ if (StringUtils.isNotEmpty(errcode) && !"null".equals(errcode)) {
|
|
|
+ result.put("code", "-1");
|
|
|
+ result.put("errmsg", errmsg);
|
|
|
+ log.info("获取accessToken异常,错误信息:>>>>>>>" + errmsg);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ String accessToken = String.valueOf(json.get("access_token"));
|
|
|
+ String expiresIn = String.valueOf(json.get("expires_in"));
|
|
|
+ result.put("code", "0");
|
|
|
+ result.put("accessToken", accessToken);
|
|
|
+ // accessToken有效时长:2小时
|
|
|
+ redisService.set("token:" + appId, accessToken, Long.valueOf(expiresIn));
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -45,37 +65,54 @@ public class WxUtils {
|
|
|
* @param accessToken accessToken
|
|
|
* @return
|
|
|
*/
|
|
|
- public static Map<String,String> getJsapiTicket(String accessToken) throws Exception {
|
|
|
+ public static Map<String,String> getJsapiTicket(String appId, String accessToken) throws Exception {
|
|
|
String requestUrl = GET_TICKET_URL.replace("ACCESS_TOKEN", accessToken);
|
|
|
Map<String, String> result = new HashMap<>(4);
|
|
|
String response = HttpRequest.sendGet(requestUrl);
|
|
|
- JSONObject ticketJson = JSONObject.parseObject(response);
|
|
|
- String errcode = String.valueOf(ticketJson.get("errcode"));
|
|
|
- String errmsg = String.valueOf(ticketJson.get("errmsg"));
|
|
|
- String ticket = String.valueOf(ticketJson.get("ticket"));
|
|
|
- String expiresIn = String.valueOf(ticketJson.get("expires_in"));
|
|
|
- result.put("errcode", errcode);
|
|
|
- result.put("errmsg", errmsg);
|
|
|
+ JSONObject json = JSONObject.parseObject(response);
|
|
|
+ String errcode = String.valueOf(json.get("errcode"));
|
|
|
+ String errmsg = String.valueOf(json.get("errmsg"));
|
|
|
+ if (StringUtils.isNotEmpty(errcode) && !"null".equals(errcode) && !"0".equals(errcode)) {
|
|
|
+ result.put("code", "-1");
|
|
|
+ result.put("errmsg", errmsg);
|
|
|
+ log.info("获取ticket异常,错误信息:>>>>>>>" + errmsg);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ String ticket = String.valueOf(json.get("ticket"));
|
|
|
+ String expiresIn = String.valueOf(json.get("expires_in"));
|
|
|
+ // ticket:2小时
|
|
|
+ redisService.set("ticket:" + appId, ticket, Long.valueOf(expiresIn));
|
|
|
+ result.put("code", "0");
|
|
|
result.put("ticket", ticket);
|
|
|
- result.put("expiresIn", expiresIn);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取accessToken(用户授权)
|
|
|
* @param code 公众号appId
|
|
|
+ * @param appId
|
|
|
+ * @param appSecret
|
|
|
* @return
|
|
|
*/
|
|
|
- public static Map<String,String> getAccessToken(String code) throws Exception {
|
|
|
- String requestUrl = GET_ACCESS_TOKEN_URL.replace("APPID", appId).replace("secret",appSecret).replace("CODE", code);
|
|
|
+ public static Map<String,String> getAccessToken(String code, String appId, String appSecret) throws Exception {
|
|
|
+ String requestUrl = GET_ACCESS_TOKEN_URL.replace("APPID", appId).replace("SECRET", appSecret).replace("CODE", code);
|
|
|
Map<String, String> result = new HashMap<>(5);
|
|
|
String response = HttpRequest.sendGet(requestUrl);
|
|
|
- JSONObject ticketJson = JSONObject.parseObject(response);
|
|
|
- String accessToken = String.valueOf(ticketJson.get("access_token"));
|
|
|
- String refreshToken = String.valueOf(ticketJson.get("refresh_token"));
|
|
|
- String openId = String.valueOf(ticketJson.get("openid"));
|
|
|
- String expiresIn = String.valueOf(ticketJson.get("expires_in"));
|
|
|
- String scope = String.valueOf(ticketJson.get("scope"));
|
|
|
+ JSONObject json = JSONObject.parseObject(response);
|
|
|
+ String errcode = String.valueOf(json.get("errcode"));
|
|
|
+ String errmsg = String.valueOf(json.get("errmsg"));
|
|
|
+ if (StringUtils.isNotEmpty(errcode) && !"null".equals(errcode)) {
|
|
|
+ result.put("code", "-1");
|
|
|
+ result.put("errmsg", errmsg);
|
|
|
+ log.info("用户授权异常,错误信息:>>>>>>>" + errmsg);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ String accessToken = String.valueOf(json.get("access_token"));
|
|
|
+ String refreshToken = String.valueOf(json.get("refresh_token"));
|
|
|
+ String openId = String.valueOf(json.get("openid"));
|
|
|
+ String expiresIn = String.valueOf(json.get("expires_in"));
|
|
|
+ String scope = String.valueOf(json.get("scope"));
|
|
|
+ result.put("code", "0");
|
|
|
result.put("accessToken", accessToken);
|
|
|
result.put("refreshToken", refreshToken);
|
|
|
result.put("openId", openId);
|