package com.dy.pipIrrSell.config;
|
|
import com.dy.pipIrrGlobal.cert.WxCertUtil;
|
import com.dy.pipIrrSell.wechatpay.PayInfo;
|
import okhttp3.OkHttpClient;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.core.io.ResourceLoader;
|
import org.springframework.http.client.ClientHttpRequestFactory;
|
import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
|
|
import javax.net.ssl.KeyManagerFactory;
|
import javax.net.ssl.SSLContext;
|
import javax.net.ssl.TrustManagerFactory;
|
import javax.net.ssl.X509TrustManager;
|
import java.io.InputStream;
|
import java.security.KeyStore;
|
|
/**
|
* @author ZhuBaoMin
|
* @date 2024-03-06 11:44
|
* @LastEditTime 2024-03-06 11:44
|
* @Description
|
*/
|
|
@Configuration
|
public class RestTemplateWechatCertConfig {
|
|
String mchid = PayInfo.mchid;
|
@Autowired
|
private ResourceLoader resourceLoader;
|
|
@Bean
|
@ConfigurationProperties(prefix = "org.liurb.core.rest-template.config.connection")
|
public ClientHttpRequestFactory wechatHttpRequestFactory() throws Exception {
|
|
KeyStore keyStore = KeyStore.getInstance("PKCS12");
|
InputStream in = WxCertUtil.getCert_p12InputStream(resourceLoader);
|
keyStore.load(in, mchid.toCharArray());
|
|
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
|
keyManagerFactory.init(keyStore, mchid.toCharArray());
|
|
SSLContext context = SSLContext.getInstance("TLS");
|
context.init(keyManagerFactory.getKeyManagers(), null, null);
|
|
OkHttpClient okHttpClient = new OkHttpClient.Builder()
|
.sslSocketFactory(context.getSocketFactory(), getDefaultX509TrustManager())
|
.build();
|
|
return new OkHttp3ClientHttpRequestFactory(okHttpClient);
|
}
|
|
private static X509TrustManager getDefaultX509TrustManager() throws Exception {
|
TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
|
factory.init((KeyStore) null);
|
return (X509TrustManager) factory.getTrustManagers()[0];
|
}
|
}
|