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 14bc62d0bc438ddb506d77b6b84415a200c793a2..1e2e1f197f656b6a3526c826df3c202a8614191d 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 6e7703ec147b826826a78bc5fdedf608ffc3791b..3bf1e68747f22956670356057ef6f1eb46296356 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 36c2a898c1fb32780381bfe76b234160ad2b255e..3a25ab537e1a8b4d8d8f33ca2a2514cc7d98a392 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 eed1c5bd602357b94288188bd9439d6fec6d69a1..c1c436021ef1f91f52e9c55113811131da9f45f3 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; + } +}