|
@@ -1,5 +1,7 @@
|
|
package com.ywt.alipaympapi.core.utils;
|
|
package com.ywt.alipaympapi.core.utils;
|
|
|
|
|
|
|
|
+import com.alipay.easysdk.factory.Factory;
|
|
|
|
+import com.alipay.easysdk.kernel.Config;
|
|
import com.ywt.alipaympapi.core.ConstantDef;
|
|
import com.ywt.alipaympapi.core.ConstantDef;
|
|
import com.ywt.alipaympapi.models.Constants;
|
|
import com.ywt.alipaympapi.models.Constants;
|
|
import com.ywt.alipaympapi.models.auth.AlipayMpCfg;
|
|
import com.ywt.alipaympapi.models.auth.AlipayMpCfg;
|
|
@@ -29,6 +31,8 @@ public final class BizUtil {
|
|
case NFYYBYFY_ALIPAY_MP:
|
|
case NFYYBYFY_ALIPAY_MP:
|
|
case NFYYBYFY_WXAPP:
|
|
case NFYYBYFY_WXAPP:
|
|
return Constants.HOSPITAL_ID_NFYYBYFY;
|
|
return Constants.HOSPITAL_ID_NFYYBYFY;
|
|
|
|
+ case TH_ALIPAY_MP:
|
|
|
|
+ return Constants.TAIHE_HOSPITAL_ID;
|
|
default:
|
|
default:
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -142,6 +146,7 @@ public final class BizUtil {
|
|
case TAI_HE_INTERNET_HOSPITAL_DOCTOR_WX_OFFICIAL:
|
|
case TAI_HE_INTERNET_HOSPITAL_DOCTOR_WX_OFFICIAL:
|
|
case TaiheWxOfficial:
|
|
case TaiheWxOfficial:
|
|
case DOCTOR_MINI_PROGRAM:
|
|
case DOCTOR_MINI_PROGRAM:
|
|
|
|
+ case TH_ALIPAY_MP:
|
|
return ConstantDef.TAIHE_HOSPITAL_ID;
|
|
return ConstantDef.TAIHE_HOSPITAL_ID;
|
|
default:
|
|
default:
|
|
return 0;
|
|
return 0;
|
|
@@ -155,6 +160,8 @@ public final class BizUtil {
|
|
switch (hospitalId) {
|
|
switch (hospitalId) {
|
|
case Constants.HOSPITAL_ID_NFYYBYFY:
|
|
case Constants.HOSPITAL_ID_NFYYBYFY:
|
|
return TerminalEnum.NFYYBYFY_ALIPAY_MP.getValue();
|
|
return TerminalEnum.NFYYBYFY_ALIPAY_MP.getValue();
|
|
|
|
+ case Constants.TAIHE_HOSPITAL_ID:
|
|
|
|
+ return TerminalEnum.TH_ALIPAY_MP.getValue();
|
|
default:
|
|
default:
|
|
return TerminalEnum.UNKNOWN.getValue();
|
|
return TerminalEnum.UNKNOWN.getValue();
|
|
}
|
|
}
|
|
@@ -259,6 +266,9 @@ public final class BizUtil {
|
|
if (TerminalEnum.valueOf(terminal) == TerminalEnum.NFYYBYFY_ALIPAY_MP) {
|
|
if (TerminalEnum.valueOf(terminal) == TerminalEnum.NFYYBYFY_ALIPAY_MP) {
|
|
return getCfg4Nfyybyfy();
|
|
return getCfg4Nfyybyfy();
|
|
}
|
|
}
|
|
|
|
+ if (TerminalEnum.valueOf(terminal) == TerminalEnum.TH_ALIPAY_MP) {
|
|
|
|
+ return getCfg4Nfth();
|
|
|
|
+ }
|
|
throw new AppMessageException(String.format("Unsupported terminal %d", terminal));
|
|
throw new AppMessageException(String.format("Unsupported terminal %d", terminal));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -266,9 +276,17 @@ public final class BizUtil {
|
|
public static List<AlipayMpCfg> getAllCfgs() {
|
|
public static List<AlipayMpCfg> getAllCfgs() {
|
|
List<AlipayMpCfg> list = new ArrayList<>();
|
|
List<AlipayMpCfg> list = new ArrayList<>();
|
|
list.add(getCfg4Nfyybyfy());
|
|
list.add(getCfg4Nfyybyfy());
|
|
|
|
+ list.add(getCfg4Nfth());
|
|
return list;
|
|
return list;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public static AlipayMpCfg getAlipayMpCfgByAppId(String appId) throws AppMessageException {
|
|
|
|
+ List<AlipayMpCfg> cfgs = BizUtil.getAllCfgs();
|
|
|
|
+ AlipayMpCfg cfg = cfgs.stream().filter(i -> Checker.getStringValue(i.getAppId()).equals(appId)).findFirst().orElse(null);
|
|
|
|
+ if (cfg == null) throw new AppMessageException("配置有误,找不到 appId " + appId);
|
|
|
|
+ return cfg;
|
|
|
|
+ }
|
|
|
|
+
|
|
// 白云分院小程序配置数据
|
|
// 白云分院小程序配置数据
|
|
private static AlipayMpCfg getCfg4Nfyybyfy() {
|
|
private static AlipayMpCfg getCfg4Nfyybyfy() {
|
|
AlipayMpCfg cfg = new AlipayMpCfg();
|
|
AlipayMpCfg cfg = new AlipayMpCfg();
|
|
@@ -281,4 +299,38 @@ public final class BizUtil {
|
|
cfg.setTerminal(TerminalEnum.NFYYBYFY_ALIPAY_MP.getValue());
|
|
cfg.setTerminal(TerminalEnum.NFYYBYFY_ALIPAY_MP.getValue());
|
|
return cfg;
|
|
return cfg;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // 太和分院小程序配置数据
|
|
|
|
+ private static AlipayMpCfg getCfg4Nfth() {
|
|
|
|
+ AlipayMpCfg cfg = new AlipayMpCfg();
|
|
|
|
+ cfg.setAppId(Constants.ALIPAYMP_APPID_NFTH);
|
|
|
|
+ cfg.setSaasSecurityKey(Constants.ALIPAYMP_SAAS_SEC_KEY_NFTH);
|
|
|
|
+ cfg.setIsvPid(Constants.ALIPAYMP_ISV_PID_NFTH);
|
|
|
|
+ cfg.setMerchantPrivateKey(Constants.MERCHANT_PRIVATE_KEY_NFTH);
|
|
|
|
+ cfg.setPublicKey(Constants.ALIPAY_PUBLIC_KEY_NFTH);
|
|
|
|
+ cfg.setHospitalId(Constants.TAIHE_HOSPITAL_ID);
|
|
|
|
+ cfg.setTerminal(TerminalEnum.TH_ALIPAY_MP.getValue());
|
|
|
|
+ return cfg;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 初始化 alipay-easy-sdk
|
|
|
|
+ * TODO: 后续扩展多医院需要将 pk & apk 配置化
|
|
|
|
+ * 为了节省服务器资源不分医院单独部署,每次调用 alipay-easy sdk 前需要初始化,目前看来性能没有影响
|
|
|
|
+ */
|
|
|
|
+ public static void initAlipayEasySdk(int terminal) throws AppMessageException {
|
|
|
|
+ Config config = new Config();
|
|
|
|
+ config.protocol = "https";
|
|
|
|
+ config.gatewayHost = "openapi.alipay.com";
|
|
|
|
+ config.signType = "RSA2";
|
|
|
|
+
|
|
|
|
+ AlipayMpCfg cfg = BizUtil.getCfg(terminal);
|
|
|
|
+ config.appId = Checker.getStringValue(cfg.getAppId());
|
|
|
|
+ // 为避免私钥随源码泄露,推荐从文件中读取私钥字符串而不是写入源码中
|
|
|
|
+ config.merchantPrivateKey = Checker.getStringValue(cfg.getMerchantPrivateKey());
|
|
|
|
+ // 注:如果采用非证书模式,则无需赋值上面的三个证书路径,改为赋值如下的支付宝公钥字符串即可
|
|
|
|
+ config.alipayPublicKey = Checker.getStringValue(cfg.getPublicKey());
|
|
|
|
+ Factory.setOptions(config);
|
|
|
|
+ }
|
|
}
|
|
}
|