shikeyin
2024-01-11 65da8373531677b1c37a98f53eaa30c892f35e5a
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
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;
    }
}