小程序获取sessionId

pull/1/head
sjm 2 years ago
parent 8c9b08c07e
commit b7f45fded7

@ -51,6 +51,8 @@ wechat:
merchantSerialNumber: 微信支付密钥对应的序列号 merchantSerialNumber: 微信支付密钥对应的序列号
apiV3key: 微信支付apiV3key apiV3key: 微信支付apiV3key
notifyUrl: 微信支付回调地址 notifyUrl: 微信支付回调地址
miniProgramAppId: 小程序apppid
miniProgramSecret:
sms: sms:
enabled: true enabled: true
# 阿里云 dysmsapi.aliyuncs.com # 阿里云 dysmsapi.aliyuncs.com

@ -77,6 +77,10 @@ public class AjaxResult extends HashMap<String, Object>
{ {
return AjaxResult.success("操作成功", data); return AjaxResult.success("操作成功", data);
} }
public static AjaxResult successData(Object data)
{
return AjaxResult.success("操作成功", data);
}
/** /**
* *

@ -1,13 +1,19 @@
package com.cyl.h5.controller; package com.cyl.h5.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cyl.external.WechatUtil; import com.cyl.external.WechatUtil;
import com.cyl.h5.pojo.vo.form.WechatLoginForm; import com.cyl.h5.pojo.vo.form.WechatLoginForm;
import com.cyl.manager.ums.service.MemberWechatService; import com.cyl.manager.ums.service.MemberWechatService;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.util.Base64Utils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/** /**
* h5/ * h5/
@ -41,4 +47,19 @@ public class WechatController2 {
String token = memberWechatService.login(form); String token = memberWechatService.login(form);
return ResponseEntity.ok("{\"data\": \"" + token + "\"}"); return ResponseEntity.ok("{\"data\": \"" + token + "\"}");
} }
@GetMapping("/no-auth/wechat/getSessionId")
public AjaxResult getSessionId(String code) {
JSONObject object = memberWechatService.getSessionId(code);
if (object != null) {
String openId = object.getString("openid");
String sessionId = object.getString("session_key");
Map map = new HashMap();
map.put("openId", openId);
map.put("sessionId", sessionId);
return AjaxResult.successData(Base64Utils.encodeToString(JSON.toJSONString(map).getBytes()));
}
return AjaxResult.success(null);
}
} }

@ -6,13 +6,16 @@ import java.util.List;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyl.config.WechatConfig;
import com.cyl.external.WechatUtil; import com.cyl.external.WechatUtil;
import com.cyl.external.resp.AccessTokenResp; import com.cyl.external.resp.AccessTokenResp;
import com.cyl.external.resp.UserInfoResp; import com.cyl.external.resp.UserInfoResp;
import com.cyl.h5.pojo.vo.form.WechatLoginForm; import com.cyl.h5.pojo.vo.form.WechatLoginForm;
import com.cyl.manager.ums.convert.MemberWechatConvert; import com.cyl.manager.ums.convert.MemberWechatConvert;
import com.cyl.wechat.WechatPayData;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.ExtraUserBody; import com.ruoyi.common.core.domain.model.ExtraUserBody;
@ -23,10 +26,12 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.cyl.manager.ums.mapper.MemberWechatMapper; import com.cyl.manager.ums.mapper.MemberWechatMapper;
import com.cyl.manager.ums.domain.MemberWechat; import com.cyl.manager.ums.domain.MemberWechat;
import com.cyl.manager.ums.pojo.query.MemberWechatQuery; import com.cyl.manager.ums.pojo.query.MemberWechatQuery;
import org.springframework.web.client.RestTemplate;
/** /**
* Service * Service
@ -47,6 +52,10 @@ public class MemberWechatService {
private ISysUserService userService; private ISysUserService userService;
@Autowired @Autowired
private SysLoginService loginService; private SysLoginService loginService;
@Autowired
private RestTemplate restTemplate;
private static String LOGIN_URL = "https://api.weixin.qq.com/sns/jscode2session?appid=#{APPID}&secret=#{SECRET}&js_code=#{JSCODE}&grant_type=authorization_code";
/** /**
* *
@ -203,4 +212,22 @@ public class MemberWechatService {
// 4. 生成token // 4. 生成token
return loginService.createToken(u); return loginService.createToken(u);
} }
public JSONObject getSessionId(String code) {
String url = LOGIN_URL.replace("#{APPID}", WechatPayData.miniProgramAppId)
.replace("#{SECRET}", WechatPayData.miniProgramSecret)
.replace("#{JSCODE}", code);
log.info("获取openidurl{}", url);
try {
ResponseEntity<String> res = restTemplate.getForEntity(url, String.class);
String body = res.getBody();
if (com.ruoyi.common.utils.StringUtils.isEmpty(body)) {
throw new Exception("获取openid出错");
}
return JSONObject.parseObject(body);
} catch (Exception e) {
log.error("获取openid报错", e);
return null;
}
}
} }

@ -21,6 +21,9 @@ public class WechatPayData {
public static String apiV3key; public static String apiV3key;
public static String notifyUrl; public static String notifyUrl;
public static String miniProgramAppId;
public static String miniProgramSecret;
public void setAppId(String appId) { public void setAppId(String appId) {
WechatPayData.appId = appId; WechatPayData.appId = appId;
} }
@ -48,4 +51,12 @@ public class WechatPayData {
public void setNotifyUrl(String notifyUrl) { public void setNotifyUrl(String notifyUrl) {
WechatPayData.notifyUrl = notifyUrl; WechatPayData.notifyUrl = notifyUrl;
} }
public void setMiniProgramAppId(String miniProgramAppId) {
WechatPayData.miniProgramAppId = miniProgramAppId;
}
public void setMiniProgramSecret(String miniProgramSecret) {
WechatPayData.miniProgramSecret = miniProgramSecret;
}
} }

Loading…
Cancel
Save