From 4dca512934afea5e37ab6e582d250764ebee68bb Mon Sep 17 00:00:00 2001 From: xxm1995 Date: Mon, 26 Feb 2024 17:57:52 +0800 Subject: [PATCH] =?UTF-8?q?perf=20IJPay=E8=BF=9B=E8=A1=8CHttps=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E6=97=B6,=20TLS=E7=89=88=E6=9C=AC=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E8=AF=BB=E5=8F=96JDK=E4=B8=AD=E6=94=AF=E6=8C=81=E7=9A=84?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/ChangeLog.md | 1 + .../ijpay/DaxPayHttpDelegate.java | 60 +++++++++++++++++++ .../ijpay/IJPayConfiguration.java | 32 ++++++++++ 3 files changed, 93 insertions(+) create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/ijpay/DaxPayHttpDelegate.java create mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/ijpay/IJPayConfiguration.java diff --git a/_doc/ChangeLog.md b/_doc/ChangeLog.md index baed65636..6fa3c7f2b 100644 --- a/_doc/ChangeLog.md +++ b/_doc/ChangeLog.md @@ -12,6 +12,7 @@ - 优化: 订单支持关闭时间记录 - 优化: 增加退款订单扩展记录 - 优化: SDK增加简单退款、多通道退款等多中测试样例 +- 优化: IJPay进行Https请求时, TLS版本使用读取JDK中支持的版本 - fix: 同步支付通道订单不能正确生成 - fix: 修复聚合条码支付时付款码未传输问题 - fix: 修复微信退款同步时, 错误信息未保存问题 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/ijpay/DaxPayHttpDelegate.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/ijpay/DaxPayHttpDelegate.java new file mode 100644 index 000000000..7308a7d81 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/ijpay/DaxPayHttpDelegate.java @@ -0,0 +1,60 @@ +package cn.bootx.platform.daxpay.service.configuration.ijpay; + +import com.ijpay.core.http.AbstractHttpDelegate; +import lombok.AllArgsConstructor; + +import java.io.InputStream; + +/** + * 重写IJPay的请求类, 把请求加密方式从TLS更改为TLS1.2 + * @author xxm + * @since 2024/2/26 + */ +@AllArgsConstructor +public class DaxPayHttpDelegate extends AbstractHttpDelegate { + /** TLS版本 */ + private final String tlsVersion; + + + /** + * post 请求 + * + * @param url 请求url + * @param data 请求参数 + * @param certPath 证书路径 + * @param certPass 证书密码 + * @return {@link String} 请求返回的结果 + */ + public String post(String url, String data, String certPath, String certPass) { + return post(url, data, certPath, certPass, tlsVersion); + } + + /** + * 上传文件 + * + * @param url 请求url + * @param data 请求参数 + * @param certPath 证书路径 + * @param certPass 证书密码 + * @param filePath 上传文件路径 + * @return {@link String} 请求返回的结果 + */ + public String upload(String url, String data, String certPath, String certPass, String filePath) { + return upload(url, data, certPath, certPass, filePath, tlsVersion); + } + + /** + * post 请求 + * + * @param url 请求url + * @param data 请求参数 + * @param certFile 证书文件输入流 + * @param certPass 证书密码 + * @return {@link String} 请求返回的结果 + */ + public String post(String url, String data, InputStream certFile, String certPass) { + return post(url, data, certFile, certPass, tlsVersion); + } + + +} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/ijpay/IJPayConfiguration.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/ijpay/IJPayConfiguration.java new file mode 100644 index 000000000..e2fffbf62 --- /dev/null +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/ijpay/IJPayConfiguration.java @@ -0,0 +1,32 @@ +package cn.bootx.platform.daxpay.service.configuration.ijpay; + +import com.ijpay.core.kit.HttpKit; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.PostConstruct; +import javax.net.ssl.SSLContext; +import java.security.NoSuchAlgorithmException; + +/** + * IJPau配置类 + * @author xxm + * @since 2024/2/26 + */ +@Slf4j +@Configuration +public class IJPayConfiguration { + + /** + * 更改为自己的HttpDelegate, 自动获取系统中支持的TLS版本 + */ + @PostConstruct + public void initHttpDelegate() throws NoSuchAlgorithmException { + log.info("初始化IJPay配置类"); + String tlsVersion = SSLContext.getDefault() + .getSupportedSSLParameters() + .getProtocols()[0]; + HttpKit.setDelegate(new DaxPayHttpDelegate(tlsVersion)); + } + +}