微信撒单或V2退款时需要双向证书时解决方法
1.nginx代理模式,利用http请求正向代理,把证书放到ngxin下,通过nginx代理请求微信
2.代码解决如下:
1.创建sslcontext
相关包
import java.security.KeyStore;
import org.apache.http.ssl.SSLContexts;
KeyStore keyStore = KeyStore.getInstance("PKCS12");
/*
*这里也可以写你本地的路径,就是读取到P12文件,
*File file = File.createTempFile("你的商户号", ".p12");
*/
File file = FileUtils.downloadUrlFile(paySetVO.getApiclientP12(),paySetVO.getMchId());
FileInputStream instream = new FileInputStream(file);
try {
keyStore.load(instream, paySetVO.getMchId().toCharArray());//这里写密码..默认是你的MCHID
} finally {
instream.close();
}
SSLContext sslcontext = SSLContexts.custom()
.loadKeyMaterial(keyStore, paySetVO.getMchId().toCharArray())//这里也是写密码的
.build();
WxPayConfig payConfig = new WxPayConfig();
//设置你的其它参数 payConfig.setXXX("XX");
payConfig.setSslContext(sslcontext);
wxPayService = new WxPayServiceImpl();
wxPayService.setConfig(payConfig);