| New file | 
|  |  |  | 
|---|
|  |  |  | 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() { | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|