liujie
2025-12-30 3beaeea9255b73a9da1e32a25af68d8fcf67cfaa
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package com.ruoyi.system.config;
 
import com.icbc.api.DefaultIcbcClient;
import com.icbc.api.IcbcConstants;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
/**
 * @description:
 * @author: yangchuan
 * @create: 2024-11-18 17:10
 */
@Component
@Data
public class ICBCConfig {
 
    /**
     * 聚合支付B2C线上消费下单接口url (无界面)
     */
    @Value("${icbc.api.pay-url}")
    private String apiPayUrl;
 
    /**
     * 订单拆分请求url
     */
    @Value("${icbc.api.suborder-url}")
    private String apiSubOrderUrl;
 
    /**
     * 订单拆分前退款url
     */
    @Value("${icbc.api.refund-url}")
    private String refundUrl;
 
    /**
     * 订单拆分后退款url
     */
    @Value("${icbc.api.sub-order-refund-url}")
    private String subOrderRefundUrl;
 
    /**
     * 订单支付查询url
     */
    @Value("${icbc.api.order-pay-url}")
    private String selectOrderPayUrl;
 
    /**
     * 订单退款查询url
     */
    @Value("${icbc.api.order-refund-url}")
    private String selectOrderRefundUrl;
 
 
    /**
     * 我方私钥,用于签名请求
     */
    @Value("${icbc.keys.my-private-key}")
    private String myPrivateKey;
 
    /**
     * 对方(即工行)网关公钥,用于验证返回的签名
     */
    @Value("${icbc.keys.api-gw-public-key}")
    private String apiGwPublicKey;
 
    /**
     * APP编号
     */
    @Value("${icbc.app-id}")
    private String appId;
 
    /**
     * 商户编号
     */
    @Value("${icbc.mer-id}")
    private String merId;
 
    /**
     * 收单产品协议编号
     */
    @Value("${icbc.mer-prtcl-no}")
    private String merPrtclNo;
 
    /**
     * 设备号
     */
    @Value("${icbc.decive-info}")
    private String deciveInfo;
 
    /**
     * 完整回调通知地址
     */
    @Value("${icbc.api.notify-url}")
    private String notifyUrl;
 
    /**
     * 完整回调通知地址
     */
    @Value("${icbc.api.notify-url-method}")
    private String notifyUrlMethod;
 
    /**
     * 微信APP编号
     */
    @Value("${icbc.wx-app-id}")
    private String wxAppId;
 
    /**
     * 微信公众号APP编号
     */
    @Value("${icbc.wx-gzh-app-id}")
    private String wxGzhAppId;
 
    /**
     * 订单超时时间,单位为分钟
     */
    @Value("${icbc.expire-time}")
    private String expireTime;
 
    private volatile static DefaultIcbcClient instance = null;
 
    public static DefaultIcbcClient getInstance(ICBCConfig icbcConfig) {
        if (instance == null) {
            synchronized (ICBCConfig.class) {
                if (instance == null) {
                    instance = new DefaultIcbcClient(icbcConfig.appId, IcbcConstants.SIGN_TYPE_RSA2, icbcConfig.myPrivateKey, icbcConfig.apiGwPublicKey);
                }
            }
        }
        return instance;
    }
 
}