package com.hzs.third.pay.listener;

import com.huifu.adapay.Adapay;
import com.huifu.adapay.model.MerConfig;
import com.hzs.third.pay.config.AdaPayConfig;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.HashMap;
import java.util.Map;

/**
 * 汇付支付启支配置
 */
//@Component
@Slf4j
public class AdaPayLoadListener implements ServletContextListener {

    @Autowired
    private AdaPayConfig adaPayConfig;

    @SneakyThrows
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        log.info("==========汇付配置加载开始==========");

        // debug 模式，开启后与详细的日志
        Adapay.debug = false;
        // prodMode 模式，默认为生产模式，false可以使用mock模式 -- 目前只有true生效
        Adapay.prodMode = adaPayConfig.getProdMode();

        log.info("========汇付生产模式: {}========", adaPayConfig.getProdMode());

        // 商户配置对象
        Map<String, MerConfig> configPathMap = new HashMap<>();
        MerConfig merConfig = new MerConfig();
        merConfig.setApiKey(adaPayConfig.getApiProdKey());
        merConfig.setApiMockKey(adaPayConfig.getApiMockKey());
        merConfig.setRSAPrivateKey(adaPayConfig.getPrivateKey());
        configPathMap.put(adaPayConfig.getAppId(), merConfig);
        // 将商户配置放入本地缓存
        Adapay.initWithMerConfigs(configPathMap);

        log.info("==========汇付配置加载完成==========");
    }

}
