Skip to content

Commit b94106f

Browse files
authored
🎨 #3757 【微信支付】修复当只设置 privateCertString 或 PrivateCertContent 时 certSerialNo 没有被正确生成的问题
1 parent d4186c4 commit b94106f

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,15 +341,15 @@ public CloseableHttpClient initApiV3HttpClient() throws WxPayException {
341341
certificate = (X509Certificate) objects[1];
342342
this.certSerialNo = certificate.getSerialNumber().toString(16).toUpperCase();
343343
}
344-
if (certificate == null && StringUtils.isBlank(this.getCertSerialNo()) && StringUtils.isNotBlank(this.getPrivateCertPath())) {
344+
if (certificate == null && StringUtils.isBlank(this.getCertSerialNo()) && (StringUtils.isNotBlank(this.getPrivateCertPath()) || StringUtils.isNotBlank(this.getPrivateCertString())) || this.getPrivateCertContent() != null) {
345345
try (InputStream certInputStream = this.loadConfigInputStream(this.getPrivateCertString(), this.getPrivateCertPath(),
346346
this.privateCertContent, "privateCertPath")) {
347347
certificate = PemUtils.loadCertificate(certInputStream);
348348
}
349349
this.certSerialNo = certificate.getSerialNumber().toString(16).toUpperCase();
350350
}
351351

352-
if (this.getPublicKeyString() != null || this.getPublicKeyPath() != null || this.publicKeyContent != null) {
352+
if (StringUtils.isNotBlank(this.getPublicKeyString()) || StringUtils.isNotBlank(this.getPublicKeyPath()) || this.publicKeyContent != null) {
353353
if (StringUtils.isBlank(this.getPublicKeyId())) {
354354
throw new WxPayException("请确保和publicKeyId配套使用");
355355
}

weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImplTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import javax.servlet.http.HttpServletRequest;
3434
import javax.servlet.http.HttpServletResponse;
3535
import java.math.BigDecimal;
36+
import java.nio.charset.StandardCharsets;
3637
import java.nio.file.Files;
3738
import java.nio.file.Path;
3839
import java.util.Calendar;
@@ -976,4 +977,44 @@ public void testCreatePartnerOrderV3() throws WxPayException {
976977
WxPayUnifiedOrderV3Result.JsapiResult result = payService.createPartnerOrderV3(TradeTypeEnum.JSAPI, request);
977978
System.out.println(result);
978979
}
980+
981+
@Test
982+
public void test_certSerialNoExtractedFromPrivateCertContentOrPrivateCertString() throws Exception {
983+
WxPayConfig wxPayConfig = new WxPayConfig();
984+
//服务商的参数
985+
wxPayConfig.setMchId("xxx");
986+
wxPayConfig.setAppId("xxx");
987+
wxPayConfig.setApiV3Key("xxx");
988+
wxPayConfig.setPrivateKeyContent("xxx".getBytes(StandardCharsets.UTF_8));
989+
wxPayConfig.setPrivateCertContent("xxx".getBytes(StandardCharsets.UTF_8)
990+
);
991+
wxPayConfig.setPublicKeyId("xxx");
992+
wxPayConfig.setPublicKeyContent("xxx".getBytes(StandardCharsets.UTF_8));
993+
//创建支付服务
994+
WxPayService wxPayService = new WxPayServiceImpl();
995+
wxPayService.setConfig(wxPayConfig);
996+
997+
String outTradeNo = RandomUtils.getRandomStr();
998+
String notifyUrl = "https://api.qq.com/";
999+
System.out.println("outTradeNo = " + outTradeNo);
1000+
WxPayUnifiedOrderV3Request request = new WxPayUnifiedOrderV3Request();
1001+
request.setOutTradeNo(outTradeNo);
1002+
request.setNotifyUrl(notifyUrl);
1003+
request.setDescription("test");
1004+
1005+
WxPayUnifiedOrderV3Request.Payer payer = new WxPayUnifiedOrderV3Request.Payer();
1006+
payer.setOpenid("xxx");
1007+
request.setPayer(payer);
1008+
1009+
//构建金额信息
1010+
WxPayUnifiedOrderV3Request.Amount amount = new WxPayUnifiedOrderV3Request.Amount();
1011+
//设置币种信息
1012+
amount.setCurrency(WxPayConstants.CurrencyType.CNY);
1013+
//设置金额
1014+
amount.setTotal(BaseWxPayRequest.yuan2Fen(BigDecimal.ONE));
1015+
request.setAmount(amount);
1016+
1017+
wxPayService.createOrderV3(TradeTypeEnum.JSAPI, request);
1018+
}
1019+
9791020
}

0 commit comments

Comments
 (0)