package com.walker.pay.allinpaycloud; import com.walker.infrastructure.utils.ClassUtils; import com.walker.pay.AbstractPayEngineManager; import com.walker.pay.AbstractPayEngineProvider; import com.walker.pay.Constants; import com.walker.pay.Order; import com.walker.pay.PayChannel; import com.walker.pay.PayDefinition; import com.walker.pay.PayEngineNotFoundException; import com.walker.pay.PayEngineProvider; import com.walker.pay.ServiceProvider; import com.walker.pay.support.DefaultOrder; import com.walker.pay.support.DefaultPayDefinition; import java.lang.reflect.Constructor; import java.util.ArrayList; import java.util.List; public class CloudPayEngineManager extends AbstractPayEngineManager { @Override protected List acquirePayDefinitionList() { return this.getTestPayDefinitionList(); } @Override protected PayEngineProvider acquirePayEngineProvider(PayDefinition payDefinition) throws PayEngineNotFoundException { boolean exist = ClassUtils.isPresent(payDefinition.getPayEngineProviderClass(), this.getClass().getClassLoader()); if(!exist){ throw new PayEngineNotFoundException(payDefinition.getId(), "PayEngineProviderClass不存在:" + payDefinition.getPayEngineProviderClass(), null); } try { logger.info("PayEngineProviderClass = " + payDefinition.getPayEngineProviderClass()); Class payEngineProviderClass = ClassUtils.forName(payDefinition.getPayEngineProviderClass(), this.getClass().getClassLoader()); Constructor constructor = (Constructor)payEngineProviderClass.getConstructor(); AbstractPayEngineProvider payEngineProvider = constructor.newInstance(); payEngineProvider.setConfiguration(this.getConfiguration()); payEngineProvider.setPayDefinition(payDefinition); // 设置通知数据转换器,暂时还没有实现。 // payEngineProvider.setOrderNotifyConvertor(); // 设置定义的订单回调业务实现。 payEngineProvider.setOrderCallback(payDefinition.getOrderCallback()); return payEngineProvider; } catch (Exception ex){ throw new PayEngineNotFoundException(payDefinition.getId(), "创建'PayEngineProvider'失败:" + ex.getMessage(), ex); } } @Override protected Order acquireOrder(String orderId) { // 2023-02-23 目前获取订单只是要支付定义id DefaultOrder order = new DefaultOrder(); order.setPayDefinitionId("allinpayCloud_v1"); return order; } private List getTestPayDefinitionList(){ DefaultPayDefinition d2 = new DefaultPayDefinition(); d2.setServiceProvider(ServiceProvider.AllinPayCloud); d2.setVersion(Constants.DEFAULT_VERSION); d2.setPayChannel(PayChannel.ProviderDirect); d2.setName("定义: 通商云支付" + Constants.DEFAULT_VERSION); d2.setEnabled(true); d2.setPayEngineProviderClass("com.walker.pay.allinpaycloud.DefaultPayEngineProvider"); d2.setConfiguration(this.getConfiguration()); d2.setOrderCallback(new CloudOrderCallback()); List list = new ArrayList<>(8); list.add(d2); return list; } }