package com.iplatform.pay.util;
|
|
import com.iplatform.model.po.S_pay_definition;
|
import com.iplatform.pay.support.DefaultWechatV2OrderCallback;
|
import com.walker.infrastructure.arguments.Variable;
|
import com.walker.infrastructure.utils.ClassUtils;
|
import com.walker.pay.Convertor;
|
import com.walker.pay.NotifyValue;
|
import com.walker.pay.PayChannel;
|
import com.walker.pay.ServiceProvider;
|
import com.walker.pay.support.DefaultPayDefinition;
|
|
import java.lang.reflect.Constructor;
|
import java.util.Map;
|
|
public class PayDefinitionUtils {
|
|
public static final DefaultWechatV2OrderCallback acquireWechatV2CallbackInstance(String className, ClassLoader classLoader){
|
try {
|
Class<?> payEngineProviderClass = ClassUtils.forName(className, classLoader);
|
Constructor<DefaultWechatV2OrderCallback> constructor = (Constructor<DefaultWechatV2OrderCallback>)payEngineProviderClass.getConstructor();
|
return constructor.newInstance();
|
} catch (Exception e) {
|
throw new RuntimeException("动态创建'DefaultWechatV2OrderCallback'异常: " + e.getMessage() + ", className=" + className, e);
|
}
|
}
|
|
/**
|
* 创建 通知转换器 对象实例。<br>
|
* 在初始化支付引擎时,需要根据支付定义来创建通知转换器对象。
|
* @param className 类全名
|
* @param classLoader 加载器
|
* @return
|
* @date 2023-03-01
|
*/
|
public static final Convertor<NotifyValue<?>> createNotifyConvertorInstance(String className, ClassLoader classLoader){
|
try {
|
Class<?> payEngineProviderClass = ClassUtils.forName(className, classLoader);
|
Constructor<Convertor<NotifyValue<?>>> constructor = (Constructor<Convertor<NotifyValue<?>>>)payEngineProviderClass.getConstructor();
|
return constructor.newInstance();
|
} catch (Exception e) {
|
throw new RuntimeException("动态创建'Convertor'异常: " + e.getMessage() + ", className=" + className, e);
|
}
|
}
|
|
public static final DefaultPayDefinition toPayDefinition(S_pay_definition s_pay_definition, Map<String, Variable> configuration){
|
DefaultPayDefinition payDefinition = new DefaultPayDefinition();
|
payDefinition.setName(s_pay_definition.getName());
|
payDefinition.setServiceProvider(ServiceProvider.getType(s_pay_definition.getService_provider()));
|
payDefinition.setVersion(s_pay_definition.getVersion());
|
payDefinition.setPayChannel(PayChannel.getType(s_pay_definition.getPay_channel()));
|
payDefinition.setPayEngineProviderClass(s_pay_definition.getProvider_class());
|
payDefinition.setEnabled(s_pay_definition.getEnabled().intValue() == 1);
|
payDefinition.setConfiguration(configuration);
|
payDefinition.setOrderNotifyConvertorClass(s_pay_definition.getOrder_convertor_class());
|
return payDefinition;
|
}
|
}
|