package beilv.pay.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 java.io.IOException; @Data @Slf4j @Configuration @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 void initWxPayConfig() throws IOException { // this.RSAConfig = buildRSAAutoCertificateConfig(); // this.jsapiServiceExtension = buildJsapiServiceExtension(RSAConfig); // this.refundService = buildRefundService(RSAConfig); } // 构建并使用自动更新平台证书的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(); // } }