shikeying
2024-01-11 3b67e947e36133e2a40eb2737b15ea375e157ea0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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;
    }
}