From 8833bce0cf1b88b5500c1e30d4da597bf9db329d Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sun, 13 Sep 2026 10:09:05 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20#4124=20=E3=80=90=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E3=80=91=E4=BF=AE=E5=A4=8D=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=80=81=E6=A0=A1=E9=AA=8C=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E5=92=8C=E7=AD=BE=E5=90=8D=E7=94=9F=E6=88=90?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miniapp/api/impl/WxMaUserServiceImpl.java | 2 +- .../miniapp/constant/WxMaApiUrlConstants.java | 2 +- ...xMaUserServiceImplCheckSessionKeyTest.java | 35 +++++++++++++++++++ .../src/test/resources/testng.xml | 1 + 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImplCheckSessionKeyTest.java diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java index abbb021e8..bd715efde 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java @@ -109,7 +109,7 @@ public class WxMaUserServiceImpl implements WxMaUserService { @Override public boolean checkSessionKey(String openid, String sessionKey) throws WxErrorException { - String signature = SignUtils.createHmacSha256Sign(openid, sessionKey); + String signature = SignUtils.createHmacSha256Sign("", sessionKey).toLowerCase(); String url = String.format(CHECK_SESSION_KEY_URL, openid, signature); this.service.get(url, null); return true; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java index e16cd982a..c6f70df76 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java @@ -387,7 +387,7 @@ public class WxMaApiUrlConstants { String CODE_2_VERIFY_INFO_URL = "https://api.weixin.qq.com/wxa/sec/checkcode2verifyinfo"; /** 检查登录态接口 */ String CHECK_SESSION_KEY_URL = - "https://api.weixin.qq.com/wxa/checksessionkey?openid=%s&signature=%s&sig_method=hmac_sha256"; + "https://api.weixin.qq.com/wxa/checksession?openid=%s&signature=%s&sig_method=hmac_sha256"; } public interface Ocr { diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImplCheckSessionKeyTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImplCheckSessionKeyTest.java new file mode 100644 index 000000000..73aa9ac30 --- /dev/null +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImplCheckSessionKeyTest.java @@ -0,0 +1,35 @@ +package cn.binarywang.wx.miniapp.api.impl; + +import cn.binarywang.wx.miniapp.api.WxMaService; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.util.SignUtils; +import org.mockito.ArgumentCaptor; +import org.testng.annotations.Test; + +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.isNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.testng.Assert.assertEquals; + +/** + * {@link WxMaUserServiceImpl} 检查登录态接口的单元测试。 + */ +public class WxMaUserServiceImplCheckSessionKeyTest { + + @Test + public void shouldUseCheckSessionUrlAndSignEmptyStringWhenCheckingSessionKey() throws WxErrorException { + WxMaService wxMaService = mock(WxMaService.class); + when(wxMaService.get(anyString(), isNull())).thenReturn("{\"errcode\":0,\"errmsg\":\"ok\"}"); + + new WxMaUserServiceImpl(wxMaService).checkSessionKey("user-openid", "session-key"); + + ArgumentCaptor url = ArgumentCaptor.forClass(String.class); + verify(wxMaService).get(url.capture(), isNull()); + assertEquals(url.getValue(), + "https://api.weixin.qq.com/wxa/checksession?openid=user-openid&signature=" + + SignUtils.createHmacSha256Sign("", "session-key").toLowerCase() + + "&sig_method=hmac_sha256"); + } +} diff --git a/weixin-java-miniapp/src/test/resources/testng.xml b/weixin-java-miniapp/src/test/resources/testng.xml index b34a4415d..9733604a1 100644 --- a/weixin-java-miniapp/src/test/resources/testng.xml +++ b/weixin-java-miniapp/src/test/resources/testng.xml @@ -4,6 +4,7 @@ +