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