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<PayDefinition> 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<AbstractPayEngineProvider> constructor = (Constructor<AbstractPayEngineProvider>)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<PayDefinition> 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<PayDefinition> list = new ArrayList<>(8);
|
list.add(d2);
|
return list;
|
}
|
}
|