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 constructor = (Constructor)payEngineProviderClass.getConstructor(); return constructor.newInstance(); } catch (Exception e) { throw new RuntimeException("动态创建'DefaultWechatV2OrderCallback'异常: " + e.getMessage() + ", className=" + className, e); } } /** * 创建 通知转换器 对象实例。
* 在初始化支付引擎时,需要根据支付定义来创建通知转换器对象。 * @param className 类全名 * @param classLoader 加载器 * @return * @date 2023-03-01 */ public static final Convertor> createNotifyConvertorInstance(String className, ClassLoader classLoader){ try { Class payEngineProviderClass = ClassUtils.forName(className, classLoader); Constructor>> constructor = (Constructor>>)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 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; } }