支付,支持微信新的公钥支付模式

This commit is contained in:
2025-04-27 04:33:33 +08:00
parent 5a4f6a5af3
commit e9d80cecc7
3 changed files with 24 additions and 7 deletions

View File

@ -36,7 +36,7 @@
<dependency> <dependency>
<groupId>com.github.wechatpay-apiv3</groupId> <groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-java</artifactId> <artifactId>wechatpay-java</artifactId>
<version>0.2.12</version> <version>0.2.14</version>
</dependency> </dependency>
<!-- 引入aop相关 --> <!-- 引入aop相关 -->
<dependency> <dependency>

View File

@ -2,6 +2,7 @@ package com.ycwl.basic.pay.adapter;
import com.wechat.pay.java.core.Config; import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.RSAAutoCertificateConfig; import com.wechat.pay.java.core.RSAAutoCertificateConfig;
import com.wechat.pay.java.core.RSAPublicKeyConfig;
import com.wechat.pay.java.core.notification.NotificationConfig; import com.wechat.pay.java.core.notification.NotificationConfig;
import com.wechat.pay.java.core.notification.NotificationParser; import com.wechat.pay.java.core.notification.NotificationParser;
import com.wechat.pay.java.core.notification.RequestParam; import com.wechat.pay.java.core.notification.RequestParam;
@ -30,6 +31,7 @@ import com.ycwl.basic.pay.entity.RefundOrderRequest;
import com.ycwl.basic.pay.entity.RefundOrderResponse; import com.ycwl.basic.pay.entity.RefundOrderResponse;
import com.ycwl.basic.pay.entity.WxMpPayConfig; import com.ycwl.basic.pay.entity.WxMpPayConfig;
import com.ycwl.basic.pay.exceptions.PayWrongConfigException; import com.ycwl.basic.pay.exceptions.PayWrongConfigException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.Base64Utils; import org.springframework.util.Base64Utils;
import javax.servlet.ServletInputStream; import javax.servlet.ServletInputStream;
@ -72,6 +74,8 @@ public class WxMpPayAdapter implements IPayAdapter {
this.config.setAppId(_config.get("appId")); this.config.setAppId(_config.get("appId"));
this.config.setPrivateKey(_config.get("privateKey")); this.config.setPrivateKey(_config.get("privateKey"));
this.config.setSerialNumber(_config.get("serialNumber")); this.config.setSerialNumber(_config.get("serialNumber"));
this.config.setWxPublicKey(_config.get("wxPublicKey"));
this.config.setWxPublicKeyId(_config.get("wxPublicKeyId"));
this.config.setApiV3Key(_config.get("apiV3Key")); this.config.setApiV3Key(_config.get("apiV3Key"));
} }
} }
@ -80,12 +84,23 @@ public class WxMpPayAdapter implements IPayAdapter {
private Config getConfig() { private Config getConfig() {
if (clientConfig == null) { if (clientConfig == null) {
clientConfig = new RSAAutoCertificateConfig.Builder() if (StringUtils.isNotBlank(config.getWxPublicKeyId())) {
.merchantId(config.getMerchantId()) clientConfig = new RSAPublicKeyConfig.Builder()
.privateKey(config.getPrivateKey()) .merchantId(config.getMerchantId())
.merchantSerialNumber(config.getSerialNumber()) .privateKey(config.getPrivateKey())
.apiV3Key(config.getApiV3Key()) .merchantSerialNumber(config.getSerialNumber())
.build(); .publicKey(config.getWxPublicKey())
.publicKeyId(config.getWxPublicKeyId())
.apiV3Key(config.getApiV3Key())
.build();
} else {
clientConfig = new RSAAutoCertificateConfig.Builder()
.merchantId(config.getMerchantId())
.privateKey(config.getPrivateKey())
.merchantSerialNumber(config.getSerialNumber())
.apiV3Key(config.getApiV3Key())
.build();
}
} }
return clientConfig; return clientConfig;
} }

View File

@ -7,6 +7,8 @@ public class WxMpPayConfig {
private String merchantId; private String merchantId;
private String appId; private String appId;
private String privateKey; private String privateKey;
private String wxPublicKey;
private String wxPublicKeyId;
private String serialNumber; private String serialNumber;
private String apiV3Key; private String apiV3Key;
} }