Skip to content

Commit 90cb0ed

Browse files
author
起势
committed
微信支付请求头增加商户公钥ID
1 parent f23f0fe commit 90cb0ed

File tree

4 files changed

+27
-1
lines changed

4 files changed

+27
-1
lines changed

pay-java-common/src/main/java/com/egzosn/pay/common/api/BasePayConfigStorage.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ public abstract class BasePayConfigStorage implements PayConfigStorage {
2222
*/
2323
private String keyPrivate;
2424

25+
/**
26+
* 支付平台公钥Id(签名校验使用)
27+
*/
28+
private String keyPublicId;
2529
/**
2630
* 支付平台公钥(签名校验使用)
2731
*/
@@ -95,6 +99,14 @@ public void setKeyPrivate(String keyPrivate) {
9599
this.keyPrivate = keyPrivate;
96100
}
97101

102+
@Override
103+
public String getKeyPublicId() {
104+
return keyPublicId;
105+
}
106+
107+
public void setKeyPublicId(String keyPublicId) {
108+
this.keyPublicId = keyPublicId;
109+
}
98110

99111
@Override
100112
public String getKeyPublic() {

pay-java-common/src/main/java/com/egzosn/pay/common/api/PayConfigStorage.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,13 @@ public interface PayConfigStorage extends Attrs {
8888
*/
8989
String getInputCharset();
9090

91+
/**
92+
* 支付平台公钥ID(签名校验使用)
93+
*
94+
* @return 公钥
95+
*/
96+
String getKeyPublicId();
97+
9198
/**
9299
* 支付平台公钥(签名校验使用)
93100
*

pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/WxV3PayController.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ public void init() {
5858
wxPayConfigStorage.setV3ApiKey("9bd8f0e7af4841299d782406b7774f57");
5959
//验签、转账等接口使用,9月份开始不允许获取证书方式了,直接通过公钥字符来做,
6060
wxPayConfigStorage.setKeyPublic("支付平台公钥(原为自动获取的证书)");
61+
wxPayConfigStorage.setKeyPublicId("支付平台公钥ID");
6162
wxPayConfigStorage.setNotifyUrl("http://sailinmu.iok.la/wxV3/payBack.json");
6263
wxPayConfigStorage.setReturnUrl("http://sailinmu.iok.la/wxV3/payBack.json");
6364
wxPayConfigStorage.setInputCharset("utf-8");

pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/WxPayService.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,13 @@ public String createSign(String content, String characterEncoding) {
350350
*/
351351
@Override
352352
public HttpStringEntity hookHttpEntity(HttpStringEntity entity) {
353-
entity.addHeader(new BasicHeader(WxConst.WECHATPAY_SERIAL, payConfigStorage.getCertEnvironment().getPlatformSerialNumber()));
353+
if (StringUtils.isNotEmpty(payConfigStorage.getKeyPublic())) {
354+
// 商户上送敏感信息时使用`微信支付平台公钥`加密
355+
entity.addHeader(new BasicHeader(WxConst.WECHATPAY_SERIAL, payConfigStorage.getKeyPublicId()));
356+
}
357+
else{
358+
entity.addHeader(new BasicHeader(WxConst.WECHATPAY_SERIAL, payConfigStorage.getCertEnvironment().getPlatformSerialNumber()));
359+
}
354360
return entity;
355361
}
356362

0 commit comments

Comments
 (0)