Skip to content

Commit 2c2ed5d

Browse files
007gzsbinarywang
authored andcommitted
#513 修复开放平台小程序jscode2session 错误
1 parent 6faae7e commit 2c2ed5d

File tree

7 files changed

+36
-13
lines changed

7 files changed

+36
-13
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.binarywang.wx.miniapp.api;
22

3+
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
34
import cn.binarywang.wx.miniapp.config.WxMaConfig;
45
import me.chanjar.weixin.common.exception.WxErrorException;
56
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
@@ -15,6 +16,13 @@ public interface WxMaService {
1516
*/
1617
String GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
1718

19+
String JSCODE_TO_SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session";
20+
/**
21+
* 获取登录后的session信息
22+
*
23+
* @param jsCode 登录时获取的 code
24+
*/
25+
WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException;
1826
/**
1927
* <pre>
2028
* 验证消息的确来自微信服务器

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
* @author <a href="https://github.com/binarywang">Binary Wang</a>
1111
*/
1212
public interface WxMaUserService {
13-
String JSCODE_TO_SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session";
1413

1514
/**
1615
* 获取登录后的session信息

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package cn.binarywang.wx.miniapp.api.impl;
22

33
import cn.binarywang.wx.miniapp.api.*;
4+
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
45
import cn.binarywang.wx.miniapp.config.WxMaConfig;
56
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
7+
import com.google.common.base.Joiner;
68
import com.google.gson.JsonParser;
79
import me.chanjar.weixin.common.bean.WxAccessToken;
810
import me.chanjar.weixin.common.bean.result.WxError;
@@ -21,6 +23,8 @@
2123
import org.slf4j.LoggerFactory;
2224

2325
import java.io.IOException;
26+
import java.util.HashMap;
27+
import java.util.Map;
2428
import java.util.concurrent.locks.Lock;
2529

2630
/**
@@ -121,6 +125,18 @@ public String getAccessToken(boolean forceRefresh) throws WxErrorException {
121125
return this.getWxMaConfig().getAccessToken();
122126
}
123127

128+
@Override
129+
public WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException {
130+
final WxMaConfig config = getWxMaConfig();
131+
Map<String, String> params = new HashMap<>(8);
132+
params.put("appid", config.getAppid());
133+
params.put("secret", config.getSecret());
134+
params.put("js_code", jsCode);
135+
params.put("grant_type", "authorization_code");
136+
137+
String result = get(JSCODE_TO_SESSION_URL, Joiner.on("&").withKeyValueSeparator("=").join(params));
138+
return WxMaJscode2SessionResult.fromJson(result);
139+
}
124140
@Override
125141
public boolean checkSignature(String timestamp, String nonce, String signature) {
126142
try {

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

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,7 @@ public WxMaUserServiceImpl(WxMaService service) {
2525

2626
@Override
2727
public WxMaJscode2SessionResult getSessionInfo(String jsCode) throws WxErrorException {
28-
final WxMaConfig config = service.getWxMaConfig();
29-
Map<String, String> params = new HashMap<>(8);
30-
params.put("appid", config.getAppid());
31-
params.put("secret", config.getSecret());
32-
params.put("js_code", jsCode);
33-
params.put("grant_type", "authorization_code");
34-
35-
String result = this.service.get(JSCODE_TO_SESSION_URL, Joiner.on("&").withKeyValueSeparator("=").join(params));
36-
return WxMaJscode2SessionResult.fromJson(result);
28+
return service.jsCode2SessionInfo(jsCode);
3729
}
3830

3931
@Override
@@ -44,7 +36,6 @@ public WxMaUserInfo getUserInfo(String sessionKey, String encryptedData, String
4436
@Override
4537
public boolean checkUserInfo(String sessionKey, String rawData, String signature) {
4638
final String generatedSignature = DigestUtils.sha1Hex(rawData + sessionKey);
47-
//System.out.println(generatedSignature);
4839
return generatedSignature.equals(signature);
4940
}
5041

weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,6 @@ public interface WxOpenComponentService {
8585

8686
String oauth2buildAuthorizationUrl(String appid, String redirectURI, String scope, String state);
8787

88-
WxMaJscode2SessionResult miniappJscode2Session(String appid, String jsCode, String appId) throws WxErrorException;
88+
WxMaJscode2SessionResult miniappJscode2Session(String appId, String jsCode) throws WxErrorException;
8989

9090
}

weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ public String oauth2buildAuthorizationUrl(String appId, String redirectURI, Stri
239239
}
240240

241241
@Override
242-
public WxMaJscode2SessionResult miniappJscode2Session(String appid, String jsCode, String appId) throws WxErrorException {
242+
public WxMaJscode2SessionResult miniappJscode2Session(String appId, String jsCode) throws WxErrorException {
243243
String url = String.format(MINIAPP_JSCODE_2_SESSION, appId, jsCode, getWxOpenConfigStorage().getComponentAppId());
244244
String responseContent = get(url);
245245
return WxMaJscode2SessionResult.fromJson(responseContent);

weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package me.chanjar.weixin.open.api.impl;
22

33
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
4+
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
45
import cn.binarywang.wx.miniapp.config.WxMaConfig;
6+
import com.google.common.base.Joiner;
57
import me.chanjar.weixin.common.exception.WxErrorException;
68
import me.chanjar.weixin.open.api.WxOpenComponentService;
79

10+
import java.util.HashMap;
11+
import java.util.Map;
12+
813
/**
914
* @author <a href="https://github.com/007gzs">007</a>
1015
*/
@@ -20,6 +25,10 @@ public WxOpenMaServiceImpl(WxOpenComponentService wxOpenComponentService, String
2025
initHttp();
2126
}
2227

28+
@Override
29+
public WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException {
30+
return wxOpenComponentService.miniappJscode2Session(appId, jsCode);
31+
}
2332
@Override
2433
public WxMaConfig getWxMaConfig() {
2534
return wxMaConfig;

0 commit comments

Comments
 (0)