2023-05-11 16:45:44 +08:00
|
|
|
|
package com.jsowell.adapay.config;
|
|
|
|
|
|
|
|
|
|
|
|
import com.huifu.adapay.Adapay;
|
|
|
|
|
|
import com.huifu.adapay.model.MerConfig;
|
2023-08-15 14:32:49 +08:00
|
|
|
|
import com.jsowell.adapay.factory.AdapayConfigFactory;
|
2023-12-25 14:27:16 +08:00
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
2023-06-08 09:58:19 +08:00
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
2023-05-11 16:45:44 +08:00
|
|
|
|
import org.springframework.boot.CommandLineRunner;
|
|
|
|
|
|
import org.springframework.core.annotation.Order;
|
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
2023-08-15 14:32:49 +08:00
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
2023-12-25 14:27:16 +08:00
|
|
|
|
@Slf4j
|
2023-05-11 16:45:44 +08:00
|
|
|
|
@Component
|
2024-07-15 11:33:11 +08:00
|
|
|
|
@Order(2)
|
2023-08-15 14:32:49 +08:00
|
|
|
|
public class InitializeAdapayConfig implements CommandLineRunner {
|
2023-05-11 16:45:44 +08:00
|
|
|
|
|
2023-06-08 09:58:19 +08:00
|
|
|
|
@Value("${adapay.debugFlag}")
|
|
|
|
|
|
private boolean DEBUG_FLAG;
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${adapay.prodMode}")
|
|
|
|
|
|
private boolean PROD_MODE;
|
|
|
|
|
|
|
2023-08-15 11:02:02 +08:00
|
|
|
|
@Value("${adapay.jsowell.apiKey}")
|
|
|
|
|
|
private String JSOWELL_API_KEY;
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${adapay.jsowell.mockApiKey}")
|
|
|
|
|
|
private String JSOWELL_MOCK_API_KEY;
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${adapay.jsowell.rsaPrivateKey}")
|
|
|
|
|
|
private String JSOWELL_RSA_PRIVATE_KEY;
|
|
|
|
|
|
|
2023-05-11 16:45:44 +08:00
|
|
|
|
@Override
|
|
|
|
|
|
public void run(String... args) throws Exception {
|
2023-08-15 14:32:49 +08:00
|
|
|
|
/*
|
|
|
|
|
|
单商户
|
|
|
|
|
|
*/
|
2023-08-16 14:44:03 +08:00
|
|
|
|
// singleMerchant();
|
2023-08-15 14:32:49 +08:00
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
多商户
|
|
|
|
|
|
目前有jsowell和xixiao
|
|
|
|
|
|
*/
|
2023-08-16 14:44:03 +08:00
|
|
|
|
multiMerchant();
|
2024-07-15 11:33:11 +08:00
|
|
|
|
log.info(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作 InitializeAdapayConfig order 2 <<<<<<<<<<<<<");
|
2023-08-15 14:32:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 单商户配置
|
|
|
|
|
|
*/
|
|
|
|
|
|
public void singleMerchant() throws Exception {
|
2023-05-11 16:45:44 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* debug 模式,开启后有详细的日志
|
|
|
|
|
|
*/
|
2023-06-08 09:58:19 +08:00
|
|
|
|
Adapay.debug = DEBUG_FLAG;
|
2023-05-11 16:45:44 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* prodMode 模式,默认为生产模式,false可以使用mock模式
|
|
|
|
|
|
*/
|
2023-06-08 09:58:19 +08:00
|
|
|
|
Adapay.prodMode = PROD_MODE;
|
2023-05-11 16:45:44 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 初始化商户配置,服务器启动前,必须通过该方式初始化商户配置完成
|
|
|
|
|
|
* apiKey为prod模式的API KEY
|
|
|
|
|
|
* mockApiKey为mock模式的API KEY
|
|
|
|
|
|
* rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥
|
|
|
|
|
|
*/
|
2023-08-15 11:02:02 +08:00
|
|
|
|
String apiKey = JSOWELL_API_KEY;
|
|
|
|
|
|
String mockApiKey = JSOWELL_MOCK_API_KEY;
|
|
|
|
|
|
String rsaPrivateKey = JSOWELL_RSA_PRIVATE_KEY;
|
2023-05-11 16:45:44 +08:00
|
|
|
|
MerConfig merConfig = new MerConfig();
|
|
|
|
|
|
merConfig.setApiKey(apiKey);
|
|
|
|
|
|
merConfig.setApiMockKey(mockApiKey);
|
|
|
|
|
|
merConfig.setRSAPrivateKey(rsaPrivateKey);
|
|
|
|
|
|
Adapay.initWithMerConfig(merConfig);
|
2026-05-29 15:38:46 +08:00
|
|
|
|
log.info("汇付配置初始化成功,debug:{}, prodMode:{}", DEBUG_FLAG, PROD_MODE);
|
2023-05-11 16:45:44 +08:00
|
|
|
|
}
|
2023-08-15 14:32:49 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 多商户配置
|
|
|
|
|
|
* @throws Exception
|
|
|
|
|
|
*/
|
|
|
|
|
|
public void multiMerchant() throws Exception {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* debug 模式,开启后与详细的日志
|
|
|
|
|
|
*/
|
|
|
|
|
|
Adapay.debug = true;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* prodMode 模式,默认为生产模式,false可以使用mock模式
|
|
|
|
|
|
*/
|
|
|
|
|
|
Adapay.prodMode = true;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 初始化每个商户配置,服务器启动前,必须通过该方式初始化商户配置完成
|
|
|
|
|
|
* apiKey为prod模式的API KEY
|
|
|
|
|
|
* mockApiKey为mock模式的API KEY
|
|
|
|
|
|
* rsaPrivateKey为商户发起请求时,用于请求参数加签所需要的RSA私钥
|
|
|
|
|
|
*/
|
2023-08-15 16:49:41 +08:00
|
|
|
|
Map<String, MerConfig> configPathMap = new HashMap<>(); // key为merchantKey, value为MerConfig
|
2023-08-15 14:32:49 +08:00
|
|
|
|
List<AbstractAdapayConfig> allConfig = AdapayConfigFactory.getAllConfig();
|
|
|
|
|
|
for (AbstractAdapayConfig config : allConfig) {
|
|
|
|
|
|
String apiKey = config.getApiKey();
|
|
|
|
|
|
String mockApiKey = config.getMockApiKey();
|
|
|
|
|
|
String rsaPrivateKey = config.getRsaPrivateKey();
|
|
|
|
|
|
MerConfig merConfig = new MerConfig();
|
|
|
|
|
|
merConfig.setApiKey(apiKey);
|
|
|
|
|
|
merConfig.setApiMockKey(mockApiKey);
|
|
|
|
|
|
merConfig.setRSAPrivateKey(rsaPrivateKey);
|
2023-08-15 17:04:56 +08:00
|
|
|
|
// 定义一个商户的B的唯一标识,交易发起时,用于定位是哪个商户发起交易;使用微信小程序appId作为merchantKey
|
2023-08-15 14:32:49 +08:00
|
|
|
|
configPathMap.put(config.getWechatAppId(), merConfig);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 将商户A和B的商户配置放入本地缓存
|
|
|
|
|
|
Adapay.initWithMerConfigs(configPathMap);
|
2026-05-29 15:38:46 +08:00
|
|
|
|
log.info("汇付多商户配置初始化成功,merchantCount:{}", configPathMap.size());
|
2023-08-15 14:32:49 +08:00
|
|
|
|
}
|
2023-05-11 16:45:44 +08:00
|
|
|
|
}
|