package cc.mrbird.febs.pay.configure; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cn.hutool.core.util.StrUtil; import com.github.binarywang.wxpay.config.WxPayConfig; import com.github.binarywang.wxpay.service.WxPayService; import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; import lombok.AllArgsConstructor; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @ConditionalOnClass(WxPayService.class) @AllArgsConstructor public class WxPayConfiguration { private DataDictionaryCustomMapper dataDictionaryCustomMapper; @Bean @ConditionalOnMissingBean public WxPayService wxService() { String appId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.XCX_APP_ID.getType(), DataDictionaryEnum.XCX_APP_ID.getCode() ).getValue(); String mchId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.XCX_MCH_ID.getType(), DataDictionaryEnum.XCX_MCH_ID.getCode() ).getValue(); String mchKey = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.XCX_MCH_KEY.getType(), DataDictionaryEnum.XCX_MCH_KEY.getCode() ).getValue(); String keyPath = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getType(), DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getCode() ).getValue(); String notifyUrl = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.XCX_NOTICE_URL.getType(), DataDictionaryEnum.XCX_NOTICE_URL.getCode() ).getValue(); WxPayConfig payConfig = new WxPayConfig(); payConfig.setAppId(StrUtil.trim(appId)); payConfig.setMchId(StrUtil.trim(mchId)); payConfig.setMchKey(StrUtil.trim(mchKey)); payConfig.setKeyPath(StrUtil.trim(keyPath)); payConfig.setNotifyUrl(StrUtil.trim(notifyUrl)); // 可以指定是否使用沙箱环境 payConfig.setUseSandboxEnv(false); WxPayService wxPayService = new WxPayServiceImpl(); wxPayService.setConfig(payConfig); return wxPayService; } }