Files
jsowell-charger-web/jsowell-pile/src/main/java/com/jsowell/adapay/config/InitializeAdapayConfig.java

123 lines
3.6 KiB
Java
Raw Normal View History

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-06-08 09:58:19 +08:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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-05-11 16:45:44 +08:00
@Order(value = 3)
@Component
2023-08-15 14:32:49 +08:00
public class InitializeAdapayConfig implements CommandLineRunner {
2023-05-11 16:45:44 +08:00
2023-08-15 14:32:49 +08:00
private Logger logger = LoggerFactory.getLogger(InitializeAdapayConfig.class);
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
/*
单商户
*/
singleMerchant();
/*
多商户
目前有jsowell和xixiao
*/
// multiMerchant();
}
/**
* 单商户配置
*/
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);
2023-06-08 09:58:19 +08:00
logger.info("汇付配置初始化成功debug:{}, prodMode:{}, apiKey:{}, mockApiKey:{}, rsaPrivateKey:{}"
2023-08-15 11:02:02 +08:00
, DEBUG_FLAG, PROD_MODE, JSOWELL_API_KEY, JSOWELL_MOCK_API_KEY, JSOWELL_RSA_PRIVATE_KEY);
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私钥
*/
Map<String, MerConfig> configPathMap = new HashMap<>();
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);
// 定义一个商户的B的唯一标识交易发起时用于定位是哪个商户发起交易
configPathMap.put(config.getWechatAppId(), merConfig);
}
// 将商户A和B的商户配置放入本地缓存
Adapay.initWithMerConfigs(configPathMap);
}
2023-05-11 16:45:44 +08:00
}