This commit is contained in:
2025-04-16 14:37:24 +08:00
parent 8ac386242d
commit f6f847e41c
20 changed files with 713 additions and 54 deletions

View File

@ -0,0 +1,58 @@
package com.ycwl.basic.pay;
import com.ycwl.basic.pay.adapter.IPayAdapter;
import com.ycwl.basic.pay.adapter.WxMpPayAdapter;
import com.ycwl.basic.pay.enums.PayAdapterType;
import com.ycwl.basic.pay.exceptions.PayUndefinedException;
import com.ycwl.basic.pay.exceptions.PayUnsupportedException;
import java.util.HashMap;
import java.util.Map;
public class PayFactory {
public static IPayAdapter getAdapter(String typeName) {
PayAdapterType adapterEnum;
try {
adapterEnum = PayAdapterType.valueOf(typeName);
} catch (IllegalArgumentException e) {
throw new PayUnsupportedException("不支持的Adapter类型");
}
return getAdapter(adapterEnum);
}
public static IPayAdapter getAdapter(PayAdapterType type) {
switch (type) {
case WX_MP_PAY:
return new WxMpPayAdapter();
default:
throw new PayUnsupportedException("不支持的Adapter类型");
}
}
protected static Map<String, IPayAdapter> namedAdapter = new HashMap<>();
protected static IPayAdapter defaultAdapter = null;
public static void register(String name, IPayAdapter adapter) {
namedAdapter.put(name, adapter);
}
public static IPayAdapter use(String name) {
IPayAdapter adapter = namedAdapter.get(name);
if (adapter == null) {
throw new PayUndefinedException("未定义的支付方式:"+name);
}
return adapter;
}
public static IPayAdapter use() {
if (defaultAdapter == null) {
throw new PayUndefinedException("未定义默认的支付方式");
}
return defaultAdapter;
}
public static void setDefault(String defaultName) {
PayFactory.defaultAdapter = use(defaultName);
}
}