From 90cb0ed6763f7e9b3e985be75a01c6516002bcf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B7=E5=8A=BF?= Date: Thu, 31 Oct 2024 17:32:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E5=A4=B4=E5=A2=9E=E5=8A=A0=E5=95=86=E6=88=B7=E5=85=AC?= =?UTF-8?q?=E9=92=A5ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../egzosn/pay/common/api/BasePayConfigStorage.java | 12 ++++++++++++ .../com/egzosn/pay/common/api/PayConfigStorage.java | 7 +++++++ .../pay/demo/controller/WxV3PayController.java | 1 + .../java/com/egzosn/pay/wx/v3/api/WxPayService.java | 8 +++++++- 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayConfigStorage.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayConfigStorage.java index b559fd5..9b85072 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayConfigStorage.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayConfigStorage.java @@ -22,6 +22,10 @@ public abstract class BasePayConfigStorage implements PayConfigStorage { */ private String keyPrivate; + /** + * 支付平台公钥Id(签名校验使用) + */ + private String keyPublicId; /** * 支付平台公钥(签名校验使用) */ @@ -95,6 +99,14 @@ public abstract class BasePayConfigStorage implements PayConfigStorage { this.keyPrivate = keyPrivate; } + @Override + public String getKeyPublicId() { + return keyPublicId; + } + + public void setKeyPublicId(String keyPublicId) { + this.keyPublicId = keyPublicId; + } @Override public String getKeyPublic() { diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayConfigStorage.java b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayConfigStorage.java index b6bc600..e207511 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayConfigStorage.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/api/PayConfigStorage.java @@ -88,6 +88,13 @@ public interface PayConfigStorage extends Attrs { */ String getInputCharset(); + /** + * 支付平台公钥ID(签名校验使用) + * + * @return 公钥 + */ + String getKeyPublicId(); + /** * 支付平台公钥(签名校验使用) * diff --git a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/WxV3PayController.java b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/WxV3PayController.java index c23bf41..d538309 100644 --- a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/WxV3PayController.java +++ b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/WxV3PayController.java @@ -58,6 +58,7 @@ public class WxV3PayController { wxPayConfigStorage.setV3ApiKey("9bd8f0e7af4841299d782406b7774f57"); //验签、转账等接口使用,9月份开始不允许获取证书方式了,直接通过公钥字符来做, wxPayConfigStorage.setKeyPublic("支付平台公钥(原为自动获取的证书)"); + wxPayConfigStorage.setKeyPublicId("支付平台公钥ID"); wxPayConfigStorage.setNotifyUrl("http://sailinmu.iok.la/wxV3/payBack.json"); wxPayConfigStorage.setReturnUrl("http://sailinmu.iok.la/wxV3/payBack.json"); wxPayConfigStorage.setInputCharset("utf-8"); diff --git a/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/WxPayService.java b/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/WxPayService.java index 9984e62..a932b33 100644 --- a/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/WxPayService.java +++ b/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/WxPayService.java @@ -350,7 +350,13 @@ public class WxPayService extends BasePayService implements */ @Override public HttpStringEntity hookHttpEntity(HttpStringEntity entity) { - entity.addHeader(new BasicHeader(WxConst.WECHATPAY_SERIAL, payConfigStorage.getCertEnvironment().getPlatformSerialNumber())); + if (StringUtils.isNotEmpty(payConfigStorage.getKeyPublic())) { + // 商户上送敏感信息时使用`微信支付平台公钥`加密 + entity.addHeader(new BasicHeader(WxConst.WECHATPAY_SERIAL, payConfigStorage.getKeyPublicId())); + } + else{ + entity.addHeader(new BasicHeader(WxConst.WECHATPAY_SERIAL, payConfigStorage.getCertEnvironment().getPlatformSerialNumber())); + } return entity; } -- Gitee