From c7ffff0a9cd5b435a86eb0a78a03a81736ab187a Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sun, 18 Jun 2017 14:48:32 +0800 Subject: [PATCH] =?UTF-8?q?#251=20=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E8=AF=81=E4=B9=A6=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=94=AF=E6=8C=81classpath=E5=BC=80=E5=A4=B4=E7=9A=84?= =?UTF-8?q?=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../binarywang/wxpay/config/WxPayConfig.java | 29 +++++++++++++++---- .../wxpay/exception/WxPayException.java | 5 ++++ .../wxpay/service/impl/WxPayServiceImpl.java | 2 +- .../wxpay/config/WxPayConfigTest.java | 24 +++++++++++++++ weixin-java-pay/src/test/resources/.gitignore | 1 + 5 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 weixin-java-pay/src/test/java/com/github/binarywang/wxpay/config/WxPayConfigTest.java create mode 100644 weixin-java-pay/src/test/resources/.gitignore diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java index 6b4ea379d..e6c587a13 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java @@ -1,11 +1,15 @@ package com.github.binarywang.wxpay.config; +import com.github.binarywang.wxpay.exception.WxPayException; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.http.ssl.SSLContexts; import javax.net.ssl.SSLContext; import java.io.File; import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; import java.security.KeyStore; /** @@ -143,7 +147,7 @@ public class WxPayConfig { this.useSandboxEnv = useSandboxEnv; } - public SSLContext initSSLContext() { + public SSLContext initSSLContext() throws WxPayException { if (StringUtils.isBlank(mchId)) { throw new IllegalArgumentException("请确保商户号mchId已设置"); } @@ -152,20 +156,33 @@ public class WxPayConfig { throw new IllegalArgumentException("请确保证书文件地址keyPath已配置"); } - File file = new File(this.keyPath); - if (!file.exists()) { - throw new RuntimeException("证书文件【" + file.getPath() + "】不存在!"); + InputStream inputStream; + final String prefix = "classpath:"; + if (this.keyPath.startsWith(prefix)) { + inputStream = WxPayConfig.class.getResourceAsStream(this.keyPath.replace(prefix, "")); + } else { + try { + File file = new File(this.keyPath); + if (!file.exists()) { + throw new WxPayException("证书文件【" + file.getPath() + "】不存在!"); + } + + inputStream = new FileInputStream(file); + } catch (IOException e) { + throw new WxPayException("证书文件有问题,请核实!", e); + } } try { - FileInputStream inputStream = new FileInputStream(file); KeyStore keystore = KeyStore.getInstance("PKCS12"); char[] partnerId2charArray = mchId.toCharArray(); keystore.load(inputStream, partnerId2charArray); this.sslContext = SSLContexts.custom().loadKeyMaterial(keystore, partnerId2charArray).build(); return this.sslContext; } catch (Exception e) { - throw new RuntimeException("证书文件有问题,请核实!", e); + throw new WxPayException("证书文件有问题,请核实!", e); + } finally { + IOUtils.closeQuietly(inputStream); } } } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/exception/WxPayException.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/exception/WxPayException.java index eafd8b98d..948c7a499 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/exception/WxPayException.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/exception/WxPayException.java @@ -45,6 +45,11 @@ public class WxPayException extends Exception { this.customErrorMsg = customErrorMsg; } + public WxPayException(String customErrorMsg, Throwable tr) { + super(customErrorMsg, tr); + this.customErrorMsg = customErrorMsg; + } + private WxPayException(Builder builder) { super(builder.buildErrorMsg()); returnCode = builder.returnCode; diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceImpl.java index c28697a8f..14c34d036 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceImpl.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/WxPayServiceImpl.java @@ -497,7 +497,7 @@ public class WxPayServiceImpl implements WxPayService { String responseString = this.getResponseString(request.send()); - this.log.debug("\n【请求地址】: {}\n【请求参数】:{}\n【响应数据】:{}", url, requestStr, responseString); + this.log.info("\n【请求地址】: {}\n【请求参数】:{}\n【响应数据】:{}", url, requestStr, responseString); return responseString; } catch (Exception e) { this.log.error("\n【请求地址】: {}\n【请求参数】:{}\n【异常信息】:{}", url, requestStr, e.getMessage()); diff --git a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/config/WxPayConfigTest.java b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/config/WxPayConfigTest.java new file mode 100644 index 000000000..83bcbf2c1 --- /dev/null +++ b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/config/WxPayConfigTest.java @@ -0,0 +1,24 @@ +package com.github.binarywang.wxpay.config; + +import org.testng.annotations.Test; + +import static org.testng.Assert.*; + +/** + *
+ *  Created by BinaryWang on 2017/6/18.
+ * 
+ * + * @author Binary Wang + */ +public class WxPayConfigTest { + private WxPayConfig payConfig = new WxPayConfig(); + + @Test + public void testInitSSLContext() throws Exception { + payConfig.setMchId("123"); + payConfig.setKeyPath("classpath:/abc.p12"); + payConfig.initSSLContext(); + } + +} diff --git a/weixin-java-pay/src/test/resources/.gitignore b/weixin-java-pay/src/test/resources/.gitignore new file mode 100644 index 000000000..edd25bc77 --- /dev/null +++ b/weixin-java-pay/src/test/resources/.gitignore @@ -0,0 +1 @@ +*.p12