package com.czg.service.market.service.impl;

import com.czg.service.RedisService;
import com.czg.system.service.SysParamsService;
import com.ijpay.core.kit.RsaKit;
import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;

/**
 * 微信支付service
 * @author Administrator
 */
@Component
@Slf4j
@Primary
public class AppWxServiceImpl extends BaseWx {

    @DubboReference
    private SysParamsService paramsService;

    public AppWxServiceImpl(@Autowired RedisService autoRedisService) {
        this.redisService = autoRedisService;
        config = new Config();
    }

    @PostConstruct
    public void init() {
        // 小程序id
        config.appId = paramsService.getSysParamValue("wx_mini_app_id");
        log.info("小程序id:{}", config.appId);
        // 小程序secrete
        config.appSecret = paramsService.getSysParamValue("wx_mini_secrete");
        log.info("小程序secrete:{}", config.appSecret);
        config.certPath = "";
        // 微信支付公钥
        config.pubKey = paramsService.getSysParamValue("wx_pub_key");
        log.info("微信支付公钥:{}", config.pubKey);
        // api支付证书私钥
        config.apiCertKey = paramsService.getSysParamValue("wx_apiclient_key");
        log.info("api支付证书私钥:{}", config.apiCertKey);
        // api支付证书公钥
        config.apiCert = paramsService.getSysParamValue("wx_apiclient_cert");
        log.info("api支付证书公钥:{}", config.apiCert);
        try {
            config.privateKey = RsaKit.loadPrivateKey(config.apiCertKey);
        } catch (Exception e) {
            log.warn("微信加载api证书失败");
        }
        // 平台证书
        config.platformCertPath = "";
        // 平台证书编号
        config.platformCertNo = "";
        // 商户号
        config.mchId = paramsService.getSysParamValue("wx_mch_id");
        log.info("商户号:{}", config.mchId);
        // v3密钥
        config.apiV3Key = paramsService.getSysParamValue("wx_v3_key");
        log.info("v3密钥:{}", config.apiV3Key);
        config.apiV2Key = "";
        // 回调地址
        config.notifyUrl = paramsService.getSysParamValue("native_notify_url") + "/wx/pay";
        log.info("回调地址:{}", config.notifyUrl);
        config.refundNotifyUrl = "";
        config.transferNotifyUrl = paramsService.getSysParamValue("native_notify_url") + "/wx/transfer";
        log.info("转账回调地址:{}", config.transferNotifyUrl);
    }

    public BaseWx getAppService() {
        return this;
    }
}





