/**
* 从后台拿到openId.
*
* @param request .
* @param params .
* @return .
*/
@ActionMethod(response = "json")
public Object getWxOpenId(HttpServletRequest request, RequestParameters params) {
String js_code = request.getParameter("js_code");
try {
return getWeChat(js_code, analysisAppId(request));
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
private JSONObject getWeChat(String code, String appId) throws Exception {
JSONObject result = new JSONObject();
Map<String, Object> params = Maps.newHashMap();
if (StringUtils.isBlank(appId)) {
LOGGER.info("AppId is null");
return result;
}
Entity swechat = this.entityManager.getEntity(WeChat.ID, "appId", appId);
if (swechat == null) {
return result;
}
params.put("appid", appId);
params.put("secret", swechat.getProperty("secret", String.class));
params.put("js_code", code);
params.put("grant_type", "authorization_code");
LOGGER.info("WeChat https://api.weixin.qq.com/sns/jscode2session params:{}", params.toString());
RestClient restClient = new RestClient();
result = restClient.request(WX_API_PATH + "/sns/jscode2session").post().withData(params).handleWith(new JSONResponseHandler()).getResult(JSONObject.class);
LOGGER.info("WeChat https://api.weixin.qq.com/sns/jscode2session result:{}", result.toString());
return result;
}
private String analysisAppId(HttpServletRequest request) {
String referer = request.getHeader("Referer");
LOGGER.info("WeChat get appid,referer:{}", referer);
if (StringUtils.isBlank(referer)) {
return "";
}
referer = referer.replace("https://servicewechat.com/", "");
String appId = referer.substring(0, referer.indexOf("/"));
return appId;
}