From c0e2849274aa58d8075359ca9a9006c0627aa0e8 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期六, 17 八月 2024 16:14:52 +0800 Subject: [PATCH] 支付宝小程序登录 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java | 38 +++++++++----------------------------- 1 files changed, 9 insertions(+), 29 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java index b574502..408d79a 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AliLoginController.java @@ -7,6 +7,7 @@ import com.alipay.api.diagnosis.DiagnosisUtils; import com.alipay.api.request.AlipaySystemOauthTokenRequest; import com.alipay.api.response.AlipaySystemOauthTokenResponse; +import com.alipay.api.response.AlipayUserUserinfoShareResponse; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.account.ali.Constant.AliConstant; @@ -48,44 +49,23 @@ private AliProperties aliProperties; @Autowired private TAppUserService appUserService; - @Autowired - private TokenService tokenService; @ApiOperation(value = "通过code获得openid",tags = {"支付宝小程序登录"}) @GetMapping("/openIdByJsCode") - public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestParam(name = "code")@ApiParam(value = "code", required = true) String code) throws AlipayApiException { + public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestParam(name = "code")@ApiParam(value = "code", required = true) String code){ log.info("<<<<<<<<换取openid开始<<<<<<<<:{}", code); - // 初始化SDK - AlipayClient alipayClient = new DefaultAlipayClient(new AliAppletTools(aliProperties).getAlipayConfig()); - // 构造请求参数以调用接口 - AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); - // 设置授权码 - request.setCode(code); - // 设置授权方式 - request.setGrantType(AliConstant.GRANT_TYPE); - AlipaySystemOauthTokenResponse response = alipayClient.execute(request); - TAppUser appUser = null; + // 登录 + AlipaySystemOauthTokenResponse response = new AliAppletTools(aliProperties).login(code); if (response.isSuccess()) { - String openId = response.getOpenId(); - appUser = appUserService.getOne(Wrappers.lambdaQuery(TAppUser.class).eq(TAppUser::getAliOpenid, openId).last("limit 1")); - if (Objects.isNull(appUser)) { - appUser = new TAppUser(); - appUser.setWxOpenid(openId); - appUserService.save(appUser); - } - log.info("支付宝小程序登录调用成功"); + // 获取用户信息 + AlipayUserUserinfoShareResponse userInfo = new AliAppletTools(aliProperties).getUserInfo(response.getAccessToken()); + log.info("获取支付宝用户信息:{}", userInfo); + // 用户信息封装 + return AjaxResult.ok(appUserService.aliLogin(response,userInfo)); } else { String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response); log.warn("诊断结果:{}",diagnosisUrl); throw new ServiceException("支付宝小程序登录失败"); } - LoginUserApplet loginUserApplet = new LoginUserApplet(); - if(ObjectUtils.isNotNull(appUser)){ - loginUserApplet.setUserId(appUser.getId()); - } - HashMap<String, Object> tokenInfos = new HashMap<>(); - tokenInfos.put("token",tokenService.createTokenApplet(loginUserApplet)); - tokenInfos.put("info",loginUserApplet); - return AjaxResult.ok(tokenInfos); } } -- Gitblit v1.7.1