微信后端代码
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.

73 lines
2.2 KiB

package com.ynxbd.wx.config;
import com.ynxbd.common.helper.ProperHelper;
import com.ynxbd.common.helper.common.HMACHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import javax.servlet.http.HttpServletRequest;
/**
* 智能导诊
*/
@Slf4j
public class AIGuidanceConfig {
private AIGuidanceConfig() {
}
final public static boolean IS_ENABLE;
//配置文件读取项
final public static String HOS_ID;
// 密钥
final public static String KEY;
final public static String PARTNER_ID;
final public static String HOS_NAME;
final public static String HOS_ADDRESS;
final public static String HOS_INTRO;
final public static String HOS_LEVEL;
final public static String HOS_TELEPHONE;
static {
ProperHelper config = new ProperHelper().read("ai-guidance.properties");
IS_ENABLE = config.getBoolean("ai.is_enable", false);
config.setIsEnable(IS_ENABLE);
PARTNER_ID = config.getString("ai.partner_id");
KEY = config.getString("ai.key");
HOS_ID = config.getString("ai.hos_id");
HOS_NAME = config.getString("ai.hos_name");
HOS_ADDRESS = config.getString("ai.hos_address");
HOS_INTRO = config.getString("ai.hos_intro");
HOS_LEVEL = config.getString("ai.hos_level");
HOS_TELEPHONE = config.getString("ai.hos_telephone");
if (PARTNER_ID == null) {
log.error("读取AI配置文件失败");
}
}
/**
* 验签
*
* @param request 请求
* @return 是否通过
*/
public static boolean isVerifySign(HttpServletRequest request) {
if (!IS_ENABLE) {
return false;
}
String signature = request.getHeader("god-portal-signature"); // 签名
if (ObjectUtils.isEmpty(signature)) {
return false;
}
String timestamp = request.getHeader("god-portal-timestamp"); // 时间戳
log.info("[智能导诊]验签 timestamp={}, signature={}", timestamp, signature);
String str = PARTNER_ID + timestamp;
String cacheSign = HMACHelper.sha256(str, KEY);
return signature.equals(cacheSign);
}
}