| | |
| | | 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; |
| | | |
| | |
| | | @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) { |
| | |
| | | } |
| | | |
| | | /** |
| | | * 支付宝小程序授权登录接口 |
| | | * @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; |
| | | } |
| | | |