//package com.greenorange.promotion.config;
//
//import com.wechat.pay.java.core.RSAAutoCertificateConfig;
//import com.wechat.pay.java.core.util.IOUtil;
//import com.wechat.pay.java.service.payments.jsapi.JsapiServiceExtension;
//import com.wechat.pay.java.service.refund.RefundService;
//import lombok.Data;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.core.io.ClassPathResource;
//import org.springframework.stereotype.Component;
//
//import java.io.IOException;
//
//@Data
//@Slf4j
//@Configuration
//@Component("WxPayConfig")
//@ConfigurationProperties(prefix = "wx.pay")
//public class WxPayConfig {
//
//    private String appId;
//
//    private String apiV3Key;
//
//    private String notifyUrl;
//
//    private String merchantId;
//
//    private String privateKeyPath;
//
//    private String merchantSerialNumber;
//
//    // RSA配置
//    private RSAAutoCertificateConfig RSAConfig;
//
//    // JSAPI支付
//    private JsapiServiceExtension jsapiServiceExtension;
//
//    // 退款
//    private RefundService refundService;
//
//    /**
//     * 初始化配置
//     */
//    @Bean
//    public boolean initWxPayConfig() throws IOException {
//        this.RSAConfig = buildRSAAutoCertificateConfig();
//        this.jsapiServiceExtension = buildJsapiServiceExtension(RSAConfig);
//        this.refundService = buildRefundService(RSAConfig);
//        return true;
//    }
//
//    // 构建并使用自动更新平台证书的RSA配置，一个商户号只能初始化一个配置，否则会因为重复的下载任务报错
//    private RSAAutoCertificateConfig buildRSAAutoCertificateConfig() throws IOException {
//        // 将 resource 目录下的文件转为 InputStream，然后利用 IOUtil.toString(inputStream) 转化为密钥
//        String privateKey = IOUtil.toString(new ClassPathResource(privateKeyPath).getInputStream());
//        return new RSAAutoCertificateConfig.Builder()
//                .merchantId(merchantId)
//                .privateKey(privateKey)
//                .merchantSerialNumber(merchantSerialNumber)
//                .apiV3Key(apiV3Key)
//                .build();
//    }
//
//    // 构建JSAPI支付
//    private JsapiServiceExtension buildJsapiServiceExtension(RSAAutoCertificateConfig config) {
//        return new JsapiServiceExtension.Builder().config(config).build();
//    }
//
//    // 构建退款
//    private RefundService buildRefundService(RSAAutoCertificateConfig config) {
//        return new RefundService.Builder().config(config).build();
//    }
//
//}
