Skip to content

Commit 23721d1

Browse files
committed
修复小程序登录态检查接口地址和签名
1 parent 0174215 commit 23721d1

3 files changed

Lines changed: 37 additions & 2 deletions

File tree

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public WxMaCode2VerifyInfoResult getCode2VerifyInfo(String code, String checkcod
109109

110110
@Override
111111
public boolean checkSessionKey(String openid, String sessionKey) throws WxErrorException {
112-
String signature = SignUtils.createHmacSha256Sign(openid, sessionKey);
112+
String signature = SignUtils.createHmacSha256Sign("", sessionKey);
113113
String url = String.format(CHECK_SESSION_KEY_URL, openid, signature);
114114
this.service.get(url, null);
115115
return true;

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/constant/WxMaApiUrlConstants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ public interface User {
387387
String CODE_2_VERIFY_INFO_URL = "https://api.weixin.qq.com/wxa/sec/checkcode2verifyinfo";
388388
/** 检查登录态接口 */
389389
String CHECK_SESSION_KEY_URL =
390-
"https://api.weixin.qq.com/wxa/checksessionkey?openid=%s&signature=%s&sig_method=hmac_sha256";
390+
"https://api.weixin.qq.com/wxa/checksession?openid=%s&signature=%s&sig_method=hmac_sha256";
391391
}
392392

393393
public interface Ocr {
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package cn.binarywang.wx.miniapp.api.impl;
2+
3+
import cn.binarywang.wx.miniapp.api.WxMaService;
4+
import me.chanjar.weixin.common.error.WxErrorException;
5+
import me.chanjar.weixin.common.util.SignUtils;
6+
import org.mockito.ArgumentCaptor;
7+
import org.testng.annotations.Test;
8+
9+
import static org.mockito.ArgumentMatchers.anyString;
10+
import static org.mockito.ArgumentMatchers.isNull;
11+
import static org.mockito.Mockito.mock;
12+
import static org.mockito.Mockito.verify;
13+
import static org.mockito.Mockito.when;
14+
import static org.testng.Assert.assertEquals;
15+
16+
/**
17+
* {@link WxMaUserServiceImpl} 检查登录态接口的单元测试。
18+
*/
19+
public class WxMaUserServiceImplCheckSessionKeyTest {
20+
21+
@Test
22+
public void shouldUseCheckSessionUrlAndSignEmptyStringWhenCheckingSessionKey() throws WxErrorException {
23+
WxMaService wxMaService = mock(WxMaService.class);
24+
when(wxMaService.get(anyString(), isNull())).thenReturn("{\"errcode\":0,\"errmsg\":\"ok\"}");
25+
26+
new WxMaUserServiceImpl(wxMaService).checkSessionKey("user-openid", "session-key");
27+
28+
ArgumentCaptor<String> url = ArgumentCaptor.forClass(String.class);
29+
verify(wxMaService).get(url.capture(), isNull());
30+
assertEquals(url.getValue(),
31+
"https://api.weixin.qq.com/wxa/checksession?openid=user-openid&signature="
32+
+ SignUtils.createHmacSha256Sign("", "session-key")
33+
+ "&sig_method=hmac_sha256");
34+
}
35+
}

0 commit comments

Comments
 (0)