package com.alipay.demo.trade.config; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class Configs { private static Log log = LogFactory.getLog(Configs.class); private static Configuration configs; private static String openApiDomain; private static String mcloudApiDomain; private static String pid; private static String appid; private static String privateKey; private static String publicKey; private static String alipayPublicKey; private static int maxQueryRetry; private static long queryDuration; private static int maxCancelRetry; private static long cancelDuration; private static long heartbeatDelay; private static long heartbeatDuration; public static synchronized void init(String filePath) { if (configs != null) { return; } try { configs = new PropertiesConfiguration(filePath); } catch (ConfigurationException e) { e.printStackTrace(); } if (configs == null) { throw new IllegalStateException("can`t find file by path:" + filePath); } openApiDomain = configs.getString("open_api_domain"); mcloudApiDomain = configs.getString("mcloud_api_domain"); pid = configs.getString("pid"); appid = configs.getString("appid"); privateKey = configs.getString("private_key"); publicKey = configs.getString("public_key"); alipayPublicKey = configs.getString("alipay_public_key"); maxQueryRetry = configs.getInt("max_query_retry"); queryDuration = configs.getLong("query_duration"); maxCancelRetry = configs.getInt("max_cancel_retry"); cancelDuration = configs.getLong("cancel_duration"); heartbeatDelay = configs.getLong("heartbeat_delay"); heartbeatDuration = configs.getLong("heartbeat_duration"); log.info("配置文件名: " + filePath); log.info(description()); } public static String description() { StringBuilder sb = new StringBuilder("Configs{"); sb.append("支付宝openapi网关: ").append(openApiDomain).append("\n"); if (StringUtils.isNotEmpty(mcloudApiDomain)) { sb.append(", 支付宝mcloudapi网关域名: ").append(mcloudApiDomain).append("\n"); } if (StringUtils.isNotEmpty(pid)) { sb.append(", pid: ").append(pid).append("\n"); } sb.append(", appid: ").append(appid).append("\n"); sb.append(", 商户RSA私钥: ").append(getKeyDescription(privateKey)).append("\n"); sb.append(", 商户RSA公钥: ").append(getKeyDescription(publicKey)).append("\n"); sb.append(", 支付宝RSA公钥: ").append(getKeyDescription(alipayPublicKey)).append("\n"); sb.append(", 查询重试次数: ").append(maxQueryRetry).append("\n"); sb.append(", 查询间隔(毫秒): ").append(queryDuration).append("\n"); sb.append(", 撤销尝试次数: ").append(maxCancelRetry).append("\n"); sb.append(", 撤销重试间隔(毫秒): ").append(cancelDuration).append("\n"); sb.append(", 交易保障调度延迟(秒): ").append(heartbeatDelay).append("\n"); sb.append(", 交易保障调度间隔(秒): ").append(heartbeatDuration).append("\n"); sb.append("}"); return sb.toString(); } public static String getKeyDescription(String key) { int showLength = 10; if (StringUtils.isNotEmpty(key)) { return key.substring(0, showLength) + "******" + key.substring(key.length() - showLength); } return null; } public static Configuration getConfigs() { return configs; } public static String getOpenApiDomain() { return openApiDomain; } public static String getMcloudApiDomain() { return mcloudApiDomain; } public static void setMcloudApiDomain(String mcloudApiDomain) { mcloudApiDomain = mcloudApiDomain; } public static String getPid() { return pid; } public static String getAppid() { return appid; } public static String getPrivateKey() { return privateKey; } public static String getPublicKey() { return publicKey; } public static String getAlipayPublicKey() { return alipayPublicKey; } public static int getMaxQueryRetry() { return maxQueryRetry; } public static long getQueryDuration() { return queryDuration; } public static int getMaxCancelRetry() { return maxCancelRetry; } public static long getCancelDuration() { return cancelDuration; } public static void setConfigs(Configuration configs) { configs = configs; } public static void setOpenApiDomain(String openApiDomain) { openApiDomain = openApiDomain; } public static void setPid(String pid) { pid = pid; } public static void setAppid(String appid) { appid = appid; } public static void setPrivateKey(String privateKey) { privateKey = privateKey; } public static void setPublicKey(String publicKey) { publicKey = publicKey; } public static void setAlipayPublicKey(String alipayPublicKey) { alipayPublicKey = alipayPublicKey; } public static void setMaxQueryRetry(int maxQueryRetry) { maxQueryRetry = maxQueryRetry; } public static void setQueryDuration(long queryDuration) { queryDuration = queryDuration; } public static void setMaxCancelRetry(int maxCancelRetry) { maxCancelRetry = maxCancelRetry; } public static void setCancelDuration(long cancelDuration) { cancelDuration = cancelDuration; } public static long getHeartbeatDelay() { return heartbeatDelay; } public static void setHeartbeatDelay(long heartbeatDelay) { heartbeatDelay = heartbeatDelay; } public static long getHeartbeatDuration() { return heartbeatDuration; } public static void setHeartbeatDuration(long heartbeatDuration) { heartbeatDuration = heartbeatDuration; } }