You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
7.3 KiB
216 lines
7.3 KiB
package com.ynxbd.wx.config;
|
|
|
|
import com.ynxbd.common.helper.ProperHelper;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
@Slf4j
|
|
public class WeChatConfig {
|
|
private WeChatConfig() {
|
|
}
|
|
|
|
//配置文件读取项
|
|
public static final String APP_ID;
|
|
public static final String APP_SECRET;
|
|
public static final String TOKEN;
|
|
public static final String AES_KEY;
|
|
public static final String MCH_ID;
|
|
public static final String MCH_KEY;
|
|
//
|
|
public static final String PASSWORD;
|
|
//
|
|
private static String BASE_URL;
|
|
private static String WEB_PATH;
|
|
// 开启预结算(第2开关)
|
|
public static boolean IS_RECIPE_PREPAY;
|
|
|
|
static {
|
|
ProperHelper config = new ProperHelper().read("wx.properties");
|
|
IS_RECIPE_PREPAY = config.getBoolean("wx.is_recipe_prepay", false);
|
|
|
|
APP_ID = config.getString("wx.appId");
|
|
APP_SECRET = config.getString("wx.appSecret");
|
|
TOKEN = config.getString("wx.token");
|
|
AES_KEY = config.getString("wx.aesKey");
|
|
BASE_URL = config.getString("wx.baseURL");
|
|
PASSWORD = config.getString("wx.password");
|
|
// 商户
|
|
MCH_ID = config.getString("wx.mchId");
|
|
MCH_KEY = config.getString("wx.mchKey");
|
|
|
|
WEB_PATH = config.getString("wx.webPath");
|
|
if (WEB_PATH == null) {
|
|
WEB_PATH = "";
|
|
}
|
|
|
|
if (BASE_URL == null) {
|
|
log.error("【微信】读取配置文件wx.properties失败");
|
|
}
|
|
}
|
|
|
|
|
|
public static String getBaseUrl() {
|
|
if (BASE_URL == null) {
|
|
BASE_URL = "";
|
|
}
|
|
|
|
if (BASE_URL.length() == 0) return BASE_URL;
|
|
|
|
String suffix = BASE_URL.substring(BASE_URL.length() - 1);
|
|
if (!"/".equals(suffix)) {
|
|
BASE_URL += "/";
|
|
}
|
|
return BASE_URL;
|
|
}
|
|
|
|
public static String getHttpsBaseUrl() {
|
|
String url = getBaseUrl();
|
|
if (url != null && url.contains("http") && !url.contains("https")) {
|
|
url = url.replace("http", "https");
|
|
}
|
|
return url;
|
|
}
|
|
|
|
/**
|
|
* 获取配置中原本的域名
|
|
*/
|
|
public static String getBaseDomain() {
|
|
if (BASE_URL.length() < 4) {
|
|
return BASE_URL;
|
|
}
|
|
return BASE_URL.substring(0, BASE_URL.length() - 4);
|
|
}
|
|
|
|
// 域名
|
|
public static String getDomain(boolean isHttps) {
|
|
if (BASE_URL.length() < 4) {
|
|
return BASE_URL;
|
|
}
|
|
|
|
String url = BASE_URL;
|
|
if (isHttps) {
|
|
int index = url.indexOf("http://");
|
|
if (index == 0) {
|
|
url = "https://" + url.substring(index + 7);
|
|
}
|
|
}
|
|
return url.substring(0, url.length() - 4);
|
|
}
|
|
|
|
public static String getWebPath(boolean isPrefix, boolean isSuffix) {
|
|
if (WEB_PATH == null || WEB_PATH.length() == 0) return "/";
|
|
|
|
String prefix = WEB_PATH.substring(0, 1);
|
|
if ("/".equals(prefix)) {
|
|
WEB_PATH = isPrefix ? WEB_PATH : WEB_PATH.substring(1);
|
|
} else {
|
|
WEB_PATH = isPrefix ? ("/" + WEB_PATH) : WEB_PATH;
|
|
}
|
|
|
|
String suffix = WEB_PATH.substring(WEB_PATH.length() - 1);
|
|
if ("/".equals(suffix)) {
|
|
WEB_PATH = isSuffix ? WEB_PATH : WEB_PATH.substring(0, WEB_PATH.length() - 1);
|
|
} else {
|
|
WEB_PATH = isSuffix ? (WEB_PATH + "/") : WEB_PATH;
|
|
}
|
|
|
|
return WEB_PATH;
|
|
}
|
|
|
|
public static String getWebUrl() {
|
|
String webPath = getWebPath(false, true);
|
|
if ("/".equals(webPath)) {
|
|
webPath = "";
|
|
}
|
|
return getBaseUrl() + webPath;
|
|
}
|
|
|
|
|
|
|
|
// public static String getAccessToken() {
|
|
// String accessToken = ACCESS_TOKEN_CACHE.get(ACCESS_TOKEN_KEY);
|
|
// if (ObjectUtils.isEmpty(accessToken)) {
|
|
// Token token = TokenAPI.token(getAppId(), getAppSecret());
|
|
// if (token == null) {
|
|
// return null;
|
|
// }
|
|
// accessToken = token.getAccess_token();
|
|
// if (token.getExpires_in() > 0 && !ObjectUtils.isEmpty(accessToken)) {
|
|
// ACCESS_TOKEN_CACHE.put("access_token", accessToken);
|
|
// }
|
|
// }
|
|
// return accessToken;
|
|
// }
|
|
//
|
|
//
|
|
// public static Map<String, Object> getWxConfig(String url) {
|
|
// Map<String, Object> map = new HashMap<>();
|
|
// // 时间戳
|
|
// String timestamp = Long.toString((new Date().getTime()) / 1000);
|
|
// // 随机串
|
|
// String nonceStr = UUID.randomUUID().toString();
|
|
// // 根据 token 获取 jstl
|
|
// String urlStr = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + getAccessToken() + "&msgInterface=jsapi";
|
|
// Result result = RequestHelper.get(urlStr, null);
|
|
// System.out.println(result);
|
|
// JSONObject resultJson = JSONObject.parseObject(JSON.toJSONString(result.getData()));
|
|
// String ticket = resultJson.getString("ticket");
|
|
// System.out.println(ticket);
|
|
// System.out.println("要加密的参数:" + nonceStr + " " + ticket + " " + timestamp + " " + url);
|
|
// String signature = getSign(nonceStr, ticket, timestamp, url);
|
|
// map.put("appId", appId);
|
|
// map.put("timestamp", timestamp);
|
|
// map.put("nonceStr", nonceStr);
|
|
// map.put("signature", signature);
|
|
// return map;
|
|
// }
|
|
//
|
|
//
|
|
// private static String getSign(String nonceStr, String jsapiTicket, String timestamp, String url) {
|
|
// String[] paramArr = new String[]{"jsapi_ticket=" + jsapiTicket, "timestamp=" + timestamp, "noncestr=" + nonceStr, "url=" + url};
|
|
// Arrays.sort(paramArr);
|
|
// // 将排序后的结果拼接成一个字符串
|
|
// String content = paramArr[0].concat("&" + paramArr[1]).concat("&" + paramArr[2]).concat("&" + paramArr[3]);
|
|
// String signature;
|
|
// try {
|
|
// MessageDigest md = MessageDigest.getInstance("SHA-1");
|
|
// // 对拼接后的字符串进行 sha1 加密
|
|
// System.out.println("拼接加密签名:" + content);
|
|
// byte[] digest = md.digest(content.getBytes());
|
|
// signature = byteToStr(digest); // 将 sha1 加密后的字符串与 signature 进行对比
|
|
// return signature;
|
|
// } catch (NoSuchAlgorithmException e) {
|
|
// e.printStackTrace();
|
|
// }
|
|
// return null;
|
|
// }
|
|
//
|
|
// /**
|
|
// * 将字节数组转换为十六进制字符串
|
|
// *
|
|
// * @param byteArray 数据
|
|
// * @return
|
|
// */
|
|
// private static String byteToStr(byte[] byteArray) {
|
|
// StringBuilder digest = new StringBuilder();
|
|
// for (byte b : byteArray) {
|
|
// digest.append(byteToHexStr(b));
|
|
// }
|
|
//
|
|
// return digest.toString();
|
|
// }
|
|
//
|
|
// /**
|
|
// * 将字节转换为十六进制字符串
|
|
// *
|
|
// * @param dataByte 数据
|
|
// * @return
|
|
// */
|
|
// private static String byteToHexStr(byte dataByte) {
|
|
// char[] digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
|
// char[] tempArr = new char[2];
|
|
// tempArr[0] = digit[(dataByte >>> 4) & 0X0F];
|
|
// tempArr[1] = digit[dataByte & 0X0F];
|
|
// return new String(tempArr);
|
|
// }
|
|
|
|
}
|
|
|