You've already forked FrameTour-BE
支付
This commit is contained in:
58
src/main/java/com/ycwl/basic/pay/PayFactory.java
Normal file
58
src/main/java/com/ycwl/basic/pay/PayFactory.java
Normal 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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user