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; } }