package com.ruoyi.common.utils.wx.config;

import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
import com.wechat.pay.java.service.transferbatch.TransferBatchService;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author wjh
 * 2024/10/9
 */
@Configuration
@Getter
public class WxTransferConfig {

    // 小程序id
    @Value("${wx.transfer.appId}")
    private String appId;

    // 商户id
    @Value("${wx.transfer.merchantId}")
    private String merchantId;

    // apiV3私钥
    @Value("${wx.transfer.apiV3Key}")
    private String apiV3Key;

    // 私钥证书路径
    @Value("${wx.transfer.privateKeyPath}")
    private String privateKeyPath;

    // 证书序列号
    @Value("${wx.transfer.merchantSerialNumber}")
    private String merchantSerialNumber;

    // 转账回调地址
    @Value("${wx.transfer.transferNotifyUrl}")
    private String transferNotifyUrl;

    @Bean
    public TransferBatchService transferBatchService() {
        // 初始化商户配置
        Config config = new RSAAutoCertificateConfig.Builder()
                .merchantId(merchantId)
                // 使用 com.wechat.pay.java.core.util
                // 中的函数从本地文件中加载商户私钥，商户私钥会用来生成请求的签名
                .privateKeyFromPath(privateKeyPath)
                .merchantSerialNumber(merchantSerialNumber)
                .apiV3Key(apiV3Key)
                .build();

        // 初始化服务
        return new TransferBatchService.Builder().config(config).build();
    }
}
