diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java index beaa96a89..63745aa39 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaService.java @@ -1,5 +1,6 @@ package cn.binarywang.wx.miniapp.api; +import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.config.WxMaConfig; import me.chanjar.weixin.common.exception.WxErrorException; import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor; @@ -15,6 +16,13 @@ public interface WxMaService { */ String GET_ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"; + String JSCODE_TO_SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session"; + /** + * 获取登录后的session信息 + * + * @param jsCode 登录时获取的 code + */ + WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException; /** *
* 验证消息的确来自微信服务器
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java
index 84b17378c..45c8db101 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java
@@ -10,7 +10,6 @@ import me.chanjar.weixin.common.exception.WxErrorException;
* @author Binary Wang
*/
public interface WxMaUserService {
- String JSCODE_TO_SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session";
/**
* 获取登录后的session信息
diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java
index 380a15a1d..d80860f4b 100644
--- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java
+++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaServiceImpl.java
@@ -1,8 +1,10 @@
package cn.binarywang.wx.miniapp.api.impl;
import cn.binarywang.wx.miniapp.api.*;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
+import com.google.common.base.Joiner;
import com.google.gson.JsonParser;
import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.bean.result.WxError;
@@ -21,6 +23,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.locks.Lock;
/**
@@ -121,6 +125,18 @@ public class WxMaServiceImpl implements WxMaService, RequestHttp params = new HashMap<>(8);
+ params.put("appid", config.getAppid());
+ params.put("secret", config.getSecret());
+ params.put("js_code", jsCode);
+ params.put("grant_type", "authorization_code");
+
+ String result = get(JSCODE_TO_SESSION_URL, Joiner.on("&").withKeyValueSeparator("=").join(params));
+ return WxMaJscode2SessionResult.fromJson(result);
+ }
@Override
public boolean checkSignature(String timestamp, String nonce, String signature) {
try {
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 ef89a9064..1e5f10be2 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
@@ -25,15 +25,7 @@ public class WxMaUserServiceImpl implements WxMaUserService {
@Override
public WxMaJscode2SessionResult getSessionInfo(String jsCode) throws WxErrorException {
- final WxMaConfig config = service.getWxMaConfig();
- Map params = new HashMap<>(8);
- params.put("appid", config.getAppid());
- params.put("secret", config.getSecret());
- params.put("js_code", jsCode);
- params.put("grant_type", "authorization_code");
-
- String result = this.service.get(JSCODE_TO_SESSION_URL, Joiner.on("&").withKeyValueSeparator("=").join(params));
- return WxMaJscode2SessionResult.fromJson(result);
+ return service.jsCode2SessionInfo(jsCode);
}
@Override
@@ -44,7 +36,6 @@ public class WxMaUserServiceImpl implements WxMaUserService {
@Override
public boolean checkUserInfo(String sessionKey, String rawData, String signature) {
final String generatedSignature = DigestUtils.sha1Hex(rawData + sessionKey);
- //System.out.println(generatedSignature);
return generatedSignature.equals(signature);
}
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java
index d43bdb570..9b0775905 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java
@@ -85,6 +85,6 @@ public interface WxOpenComponentService {
String oauth2buildAuthorizationUrl(String appid, String redirectURI, String scope, String state);
- WxMaJscode2SessionResult miniappJscode2Session(String appid, String jsCode, String appId) throws WxErrorException;
+ WxMaJscode2SessionResult miniappJscode2Session(String appId, String jsCode) throws WxErrorException;
}
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java
index dcab890dc..146709165 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java
@@ -239,7 +239,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
}
@Override
- public WxMaJscode2SessionResult miniappJscode2Session(String appid, String jsCode, String appId) throws WxErrorException {
+ public WxMaJscode2SessionResult miniappJscode2Session(String appId, String jsCode) throws WxErrorException {
String url = String.format(MINIAPP_JSCODE_2_SESSION, appId, jsCode, getWxOpenConfigStorage().getComponentAppId());
String responseContent = get(url);
return WxMaJscode2SessionResult.fromJson(responseContent);
diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java
index 9e1a672d9..c0645d760 100644
--- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java
+++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java
@@ -1,10 +1,15 @@
package me.chanjar.weixin.open.api.impl;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
+import com.google.common.base.Joiner;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.open.api.WxOpenComponentService;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* @author 007
*/
@@ -20,6 +25,10 @@ import me.chanjar.weixin.open.api.WxOpenComponentService;
initHttp();
}
+ @Override
+ public WxMaJscode2SessionResult jsCode2SessionInfo(String jsCode) throws WxErrorException {
+ return wxOpenComponentService.miniappJscode2Session(appId, jsCode);
+ }
@Override
public WxMaConfig getWxMaConfig() {
return wxMaConfig;