From ad6a343ba5cb884fc1e16fe6075a41d874013a7d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 28 Nov 2025 13:50:05 +0000 Subject: [PATCH 1/2] Initial plan From 6f496da0710c8ee1a11543bfab5b4a246feafc9e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 28 Nov 2025 13:58:21 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=90=8C=E5=9F=8E=E9=85=8D=E9=80=81?= =?UTF-8?q?API=E7=AD=BE=E5=90=8D=E9=94=99=E8=AF=AF=EF=BC=88=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0RSA=E7=A7=81=E9=92=A5=E5=BA=8F=E5=88=97=E5=8F=B7?= =?UTF-8?q?=E5=88=B0=E7=AD=BE=E5=90=8Dpayload=E5=92=8C=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=A4=B4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com> --- .../wx/miniapp/api/impl/BaseWxMaServiceImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java index a5d479b65..93bb2656e 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java @@ -912,6 +912,10 @@ public String postWithSignature(String url, JsonObject jsonObject) throws WxErro String rndStr = UUID.randomUUID().toString().replace("-", "").substring(0, 30); String aesKey = this.getWxMaConfig().getApiSignatureAesKey(); String aesKeySn = this.getWxMaConfig().getApiSignatureAesKeySn(); + String rsaKeySn = this.getWxMaConfig().getApiSignatureRsaPrivateKeySn(); + if (rsaKeySn == null || rsaKeySn.isEmpty()) { + throw new SecurityException("ApiSignatureRsaPrivateKeySn不能为空,请检查配置"); + } jsonObject.addProperty("_n", rndStr); jsonObject.addProperty("_appid", appId); @@ -956,7 +960,7 @@ public String postWithSignature(String url, JsonObject jsonObject) throws WxErro String requestJson = reqData.toString(); // 计算签名 RSA - String payload = urlPath + "\n" + appId + "\n" + timestamp + "\n" + requestJson; + String payload = urlPath + "\n" + appId + "\n" + timestamp + "\n" + rsaKeySn + "\n" + requestJson; byte[] dataBuffer = payload.getBytes(StandardCharsets.UTF_8); RSAPrivateKey priKey; try { @@ -985,6 +989,7 @@ public String postWithSignature(String url, JsonObject jsonObject) throws WxErro header.put("Wechatmp-Signature", signatureString); header.put("Wechatmp-Appid", appId); header.put("Wechatmp-TimeStamp", String.valueOf(timestamp)); + header.put("Wechatmp-Serial", rsaKeySn); log.debug("发送请求uri:{}, headers:{}, postData:{}", url, header, requestJson); WxMaApiResponse response = this.execute(ApiSignaturePostRequestExecutor.create(this), url, header, requestJson);