package com.dy.pipIrrWechat.config;
|
|
import com.dy.common.multiDataSource.DataSourceContext;
|
import com.dy.common.util.AES;
|
import com.dy.pipIrrGlobal.pojoSe.SeWechatpay;
|
import com.dy.pipIrrWechat.wechatpay.PayInfo;
|
import com.dy.pipIrrWechat.wechatpay.PaymentSv;
|
import jakarta.servlet.*;
|
import jakarta.servlet.http.HttpServletRequest;
|
import lombok.SneakyThrows;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.context.ApplicationContext;
|
import org.springframework.web.context.support.WebApplicationContextUtils;
|
|
/**
|
* @author ZhuBaoMin
|
* @date 2024-10-23 17:13
|
* @LastEditTime 2024-10-23 17:13
|
* @Description
|
*/
|
|
@Slf4j
|
public class WechatFilter implements Filter {
|
private PaymentSv paymentSv;
|
|
@Override
|
public void init(FilterConfig filterConfig) throws ServletException {
|
// 从ServletContext获取ApplicationContext
|
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(filterConfig.getServletContext());
|
// 从ApplicationContext中获取服务bean
|
paymentSv = applicationContext.getBean(PaymentSv.class);
|
}
|
|
@SneakyThrows
|
@Override
|
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) {
|
HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
|
|
// 配置数据源
|
String wxDataSourceName = httpRequest.getHeader("tag");
|
if (wxDataSourceName != null && wxDataSourceName.trim().length() > 0) {
|
log.info("微信开发,设置数据源名称为:" + wxDataSourceName);
|
//把组织单位标签作为数据源名称
|
DataSourceContext.set(wxDataSourceName);
|
} else {
|
log.info("用户未选择数据源");
|
}
|
|
// 初始化微信支付信息
|
String appId = httpRequest.getHeader("appId");
|
if (appId == null || appId.trim().length() == 0) {
|
log.info("小程序唯一标识不能为空");
|
} else {
|
appId = AES.encrypt(appId);
|
|
SeWechatpay seWechatpay = paymentSv.getWechatpayByAppId(appId);
|
if (seWechatpay != null) {
|
PayInfo.appid = AES.decrypt(seWechatpay.getAppId());
|
PayInfo.secret = AES.decrypt(seWechatpay.getAppSecret());
|
PayInfo.mchid = AES.decrypt(seWechatpay.getMchId());
|
PayInfo.key = AES.decrypt(seWechatpay.getMchKey());
|
PayInfo.serial_no = AES.decrypt(seWechatpay.getSerialNo());
|
PayInfo.notifyUrl = AES.decrypt(seWechatpay.getNotifyUrl());
|
log.info(PayInfo.appid + " ; " + PayInfo.secret);
|
} else {
|
log.info("小程序唯一标识错误或其信息不存在");
|
}
|
}
|
|
filterChain.doFilter(servletRequest, servletResponse);
|
}
|
|
@Override
|
public void destroy() {
|
}
|
}
|