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 b559fd5732ed5b4daeab3890fe9f4bbda394af4b..9b85072e23c633d1641b813bc5a3b9a576ca9478 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 b6bc6000251bb466d1612b779622ded767d5efe6..e207511fc0f2424cc8d4dfb026014216f5fef294 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 c23bf417f98cd5b58f1d3c5918eb62c5e5266ac3..d538309a28d3d338e0e95a7be9125d05f8be135d 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 9984e6283ef21165473af5fb77e2026221898a62..a932b339e709b22425b26a73cbb3c27c79924919 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; }