package com.ruoyi.klk.util;

import com.lkl.laop.sdk.Config;
import com.lkl.laop.sdk.LKLSDK;
import com.lkl.laop.sdk.exception.SDKException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/***
 * @Description 功能描述：使用Java配置方式初始化SDK
 * @Date 2023/7/19 15:41
 */
@Component
public class InitUtil {

    private static volatile boolean init = false;


    @Value("${lalkla.appId}")
    public String appId; // 拉卡拉appId

    @Value("${lalkla.serialNo}")
    public String serialNo ; // 你的证书序列号
    /**
     * 商户私钥信息地址
     */
    @Value("${lalkla.priKeyPath}")
    public String priKeyPath;
    /**
     * 拉卡拉支付平台证书地址
     */
    @Value("${lalkla.lklCerPath}")
    public String lklCerPath ;
    /**
     * 拉卡拉支付平台证书地址2(用于拉卡拉通知验签)
     */
    @Value("${lalkla.lklNotifyCerPath}")
    public String lklNotifyCerPath;
    /**
     * 拉卡拉报文加密对称性密钥
     */
    @Value("${lalkla.sm4Key}")
    public String sm4Key ;
    /**
     * 服务地址
     */
    @Value("${lalkla.serverUrl}")
    public String serverUrl;

    /***
     * @Description: 初始化设置商户公共参数（全局只需设置一次）
     * @throws Exception
     */
    public void doInit() throws Exception {
        if (!init) {
            init = initByJava();
        }
    }

    private boolean initByJava() throws SDKException {
        Config config = new Config();
        config.setAppId(appId);
        config.setSerialNo(serialNo);
        config.setPriKeyPath(priKeyPath);
        config.setLklCerPath(lklCerPath);
        config.setLklNotifyCerPath(lklNotifyCerPath);
        config.setServerUrl(serverUrl);
        config.setSm4Key(sm4Key);
        return LKLSDK.init(config);
    }

}
