From c102c2a1f3c8e2d96f602bd082e35126fb099de2 Mon Sep 17 00:00:00 2001 From: pengkaibing <1787009158@qq.com> Date: Fri, 2 Jun 2023 23:46:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E5=BE=AE=E4=BF=A1V3?= =?UTF-8?q?=EF=BC=9A=E5=95=86=E6=88=B7=E4=B8=8A=E9=80=81=E6=95=8F=E6=84=9F?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=97=B6=E5=8A=A0=E5=AF=86=E7=A7=98=E9=92=A5?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98=20=E4=BF=AE=E5=A4=8D=20?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=AE=9D=EF=BC=9A=E4=BA=A4=E6=98=93=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8getBizContent?= =?UTF-8?q?=E6=96=B9=E6=B3=95tradeNo=E4=B8=8EoutTradeNo=E5=BC=84=E5=8F=8D?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/egzosn/pay/ali/api/AliPayService.java | 2 +- .../pay/wx/v3/api/DefaultWxPayAssistService.java | 12 ++++++++++++ .../com/egzosn/pay/wx/v3/api/WxPayService.java | 3 ++- .../egzosn/pay/wx/v3/bean/CertEnvironment.java | 15 +++++++++++++-- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java b/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java index 14bc62d..1e2e1f1 100644 --- a/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java +++ b/pay-java-ali/src/main/java/com/egzosn/pay/ali/api/AliPayService.java @@ -503,7 +503,7 @@ public class AliPayService extends BasePayService implement OrderParaStructure.loadParameters(bizContent, "query_options", assistOrder); //设置请求参数的集合 - parameters.put(BIZ_CONTENT, JSON.toJSONString(getBizContent(assistOrder.getOutTradeNo(), assistOrder.getTradeNo(), bizContent))); + parameters.put(BIZ_CONTENT, JSON.toJSONString(getBizContent(assistOrder.getTradeNo(), assistOrder.getOutTradeNo(), bizContent))); //设置签名 setSign(parameters); return requestTemplate.getForObject(getReqUrl(assistOrder.getTransactionType()) + "?" + UriVariables.getMapToParameters(parameters), JSONObject.class); diff --git a/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/DefaultWxPayAssistService.java b/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/DefaultWxPayAssistService.java index 6e7703e..3bf1e68 100644 --- a/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/DefaultWxPayAssistService.java +++ b/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/api/DefaultWxPayAssistService.java @@ -5,6 +5,7 @@ import java.nio.charset.StandardCharsets; import java.security.cert.Certificate; import java.util.Map; +import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.entity.ContentType; import org.apache.http.message.BasicHeader; @@ -105,6 +106,17 @@ public class DefaultWxPayAssistService implements WxPayAssistService { if (statusCode >= 400) { throw new PayErrorException(new WxPayError(responseBody.getString(WxConst.CODE), responseBody.getString(WxConst.MESSAGE), responseBody.toJSONString())); } + Header[] headers = responseEntity.getHeaders(); + if (headers == null) { + return responseBody; + } + for (Header header : headers) { + if ("Wechatpay-Serial".equals(header.getName())) { + // 更新平台证书的序列号,需要每次都更新,因为这个可能会改变 + payConfigStorage.getCertEnvironment().setPlatformSerialNumber(header.getValue()); + break; + } + } return responseBody; } 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 36c2a89..3a25ab5 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 @@ -657,7 +657,8 @@ public class WxPayService extends BasePayService implements return null; } - String serialNumber = payConfigStorage.getCertEnvironment().getSerialNumber(); + // 商户上送敏感信息时使用`微信支付平台公钥`加密 + String serialNumber = payConfigStorage.getCertEnvironment().getPlatformSerialNumber(); Certificate certificate = getAssistService().getCertificate(serialNumber); return transferDetails.stream() .peek(transferDetailListItem -> { diff --git a/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/bean/CertEnvironment.java b/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/bean/CertEnvironment.java index eed1c5b..c1c4360 100644 --- a/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/bean/CertEnvironment.java +++ b/pay-java-wx/src/main/java/com/egzosn/pay/wx/v3/bean/CertEnvironment.java @@ -26,7 +26,10 @@ public class CertEnvironment { */ private String serialNumber; - + /** + * 微信平台证书序列号 + */ + private String platformSerialNumber; @@ -63,4 +66,12 @@ public class CertEnvironment { public void setSerialNumber(String serialNumber) { this.serialNumber = serialNumber; } -} \ No newline at end of file + + public String getPlatformSerialNumber() { + return platformSerialNumber; + } + + public void setPlatformSerialNumber(String platformSerialNumber) { + this.platformSerialNumber = platformSerialNumber; + } +} -- Gitee