From 5a22de857470ed18e993260e2cf3a38a1a43de7e Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期一, 19 八月 2024 17:13:38 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java | 64 ++++++++++++++++++++++++++++++-- 1 files changed, 60 insertions(+), 4 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java index 52d54d7..8a60f08 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/ali/tools/AliAppletTools.java @@ -1,6 +1,14 @@ package com.ruoyi.account.ali.tools; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; import com.alipay.api.AlipayConfig; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.request.AlipaySystemOauthTokenRequest; +import com.alipay.api.request.AlipayUserUserinfoShareRequest; +import com.alipay.api.response.AlipaySystemOauthTokenResponse; +import com.alipay.api.response.AlipayUserUserinfoShareResponse; +import com.ruoyi.account.ali.Constant.AliConstant; import com.ruoyi.account.ali.model.AliProperties; import lombok.extern.slf4j.Slf4j; @@ -13,8 +21,14 @@ @Slf4j public class AliAppletTools { - private static final String SERVER_URL = "https://openapi.alipay.com/gateway.do"; - + //设置连接池中的最大可缓存的空闲连接数 + private static final Integer MaxIdleConnections = 5; + //连接超时,单位:毫秒,默认3000 + private static final Integer ConnectTimeout = 3000; + //读取超时,单位:毫秒,默认15000 + private static final Integer ReadTimeout = 15000; + //空闲连接存活时间,单位:毫秒,默认10000L + private static final Long KeepAliveDuration = 10000L; private AliProperties aliProperties; public AliAppletTools(AliProperties aliProperties) { @@ -22,15 +36,57 @@ } /** + * 支付宝小程序授权登录接口 + * @param code + * @return + */ + public AlipaySystemOauthTokenResponse login(String code) { + try { + // 初始化SDK + AlipayClient alipayClient = new DefaultAlipayClient(new AliAppletTools(aliProperties).getAlipayConfig(AliConstant.LOGIN_SERVER_URL)); + // 构造请求参数以调用接口 + AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); + // 设置授权码 + request.setCode(code); + // 设置授权方式 + request.setGrantType(AliConstant.GRANT_TYPE); + return alipayClient.execute(request); + } catch (AlipayApiException e) { + throw new RuntimeException(e); + } + } + + /** + * 支付宝小程序授权获取手机号 + * @return + */ + public AlipayUserUserinfoShareResponse getUserInfo(String accessToken) { + try { + // 初始化SDK + AlipayClient alipayClient = new DefaultAlipayClient(new AliAppletTools(aliProperties).getAlipayConfig(AliConstant.LOGIN_SERVER_URL)); + //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.user.userinfo.share + AlipayUserUserinfoShareRequest request = new AlipayUserUserinfoShareRequest(); + //授权类接口执行API调用时需要带上accessToken + return alipayClient.execute(request,accessToken); + } catch (AlipayApiException e) { + throw new RuntimeException(e); + } + } + + /** * 初始化支付宝配置 * @return */ - public AlipayConfig getAlipayConfig() { + public AlipayConfig getAlipayConfig(String serverUrl) { AlipayConfig alipayConfig = new AlipayConfig(); - alipayConfig.setServerUrl(SERVER_URL); + alipayConfig.setServerUrl(serverUrl); alipayConfig.setAppId(aliProperties.getAppId()); alipayConfig.setPrivateKey(aliProperties.getPrivateKey()); alipayConfig.setAlipayPublicKey(aliProperties.getAlipayPublicKey()); + alipayConfig.setMaxIdleConnections(MaxIdleConnections); + alipayConfig.setConnectTimeout(ConnectTimeout); + alipayConfig.setReadTimeout(ReadTimeout); + alipayConfig.setKeepAliveDuration(KeepAliveDuration); return alipayConfig; } -- Gitblit v1.7.1