From 24bed5e6b6e31090cb61600a0bdea898eac65da1 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 26 十二月 2020 17:20:23 +0800
Subject: [PATCH] cmq调整

---
 utils/src/main/java/org/yeshi/utils/alipay/AlipayXcxUtil.java |   76 +++++++++++++++++++++++++++++++++++++
 1 files changed, 75 insertions(+), 1 deletions(-)

diff --git a/utils/src/main/java/org/yeshi/utils/alipay/AlipayXcxUtil.java b/utils/src/main/java/org/yeshi/utils/alipay/AlipayXcxUtil.java
index 723fb68..00aeb18 100644
--- a/utils/src/main/java/org/yeshi/utils/alipay/AlipayXcxUtil.java
+++ b/utils/src/main/java/org/yeshi/utils/alipay/AlipayXcxUtil.java
@@ -5,10 +5,17 @@
 import com.alipay.api.AlipayClient;
 import com.alipay.api.request.AlipayOpenAppMiniTemplatemessageSendRequest;
 import com.alipay.api.request.AlipaySystemOauthTokenRequest;
+import com.alipay.api.request.AlipayUserInfoShareRequest;
 import com.alipay.api.response.AlipayOpenAppMiniTemplatemessageSendResponse;
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.alipay.api.response.AlipayUserInfoShareResponse;
+import org.yeshi.utils.FileUtil;
 import org.yeshi.utils.entity.alipay.AlipayAppInfo;
+import org.yeshi.utils.entity.alipay.AlipayUserInfo;
 import org.yeshi.utils.exception.AlipayXcxException;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 
 /**
  * 鏀粯瀹濆皬绋嬪簭甯姪绫�
@@ -25,6 +32,25 @@
      * @throws AlipayApiException
      */
     public static String getUserId(AlipayAppInfo app, String code) throws AlipayApiException, AlipayXcxException {
+        AlipaySystemOauthTokenResponse response = getOauthTokenResponse(app, code);
+        return response.getUserId();
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛token
+     *
+     * @param app
+     * @param code
+     * @return
+     * @throws AlipayApiException
+     * @throws AlipayXcxException
+     */
+    private static String getAccessToken(AlipayAppInfo app, String code) throws AlipayApiException, AlipayXcxException {
+        AlipaySystemOauthTokenResponse response = getOauthTokenResponse(app, code);
+        return response.getAccessToken();
+    }
+
+    private static AlipaySystemOauthTokenResponse getOauthTokenResponse(AlipayAppInfo app, String code) throws AlipayApiException, AlipayXcxException {
         AlipayClient alipayClient = AlipayUtil.getAlipayClient(app);
         AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
         request.setGrantType("authorization_code");
@@ -33,7 +59,7 @@
         if (!response.isSuccess()) {
             throw new AlipayXcxException(response.getCode(), response.getSubMsg(), response.getBody());
         }
-        return response.getUserId();
+        return response;
     }
 
 
@@ -76,4 +102,52 @@
         }
     }
 
+
+    /**
+     * 鑾峰彇鏀粯瀹濈敤鎴蜂俊鎭�
+     *
+     * @param app
+     * @param code
+     * @return
+     * @throws AlipayApiException
+     * @throws AlipayXcxException
+     */
+    public static AlipayUserInfo getAlipayUserInfo(AlipayAppInfo app, String code) throws AlipayApiException, AlipayXcxException {
+
+        ByteArrayOutputStream publicCert = FileUtil.cloneInputStream(app.getCertInfo().getAlipayPublicCertStream());
+        ByteArrayOutputStream alipayRoot = FileUtil.cloneInputStream(app.getCertInfo().getAlipayRootCertStream());
+        ByteArrayOutputStream appCert = FileUtil.cloneInputStream(app.getCertInfo().getAppCertPublicKeyStream());
+
+        //閲嶇疆娴�
+        app.getCertInfo().setAlipayPublicCertStream(new ByteArrayInputStream(publicCert.toByteArray()));
+        app.getCertInfo().setAlipayRootCertStream(new ByteArrayInputStream(alipayRoot.toByteArray()));
+        app.getCertInfo().setAppCertPublicKeyStream(new ByteArrayInputStream(appCert.toByteArray()));
+
+
+        String accessToken = getAccessToken(app, code);
+
+        //閲嶇疆娴�
+        app.getCertInfo().setAlipayPublicCertStream(new ByteArrayInputStream(publicCert.toByteArray()));
+        app.getCertInfo().setAlipayRootCertStream(new ByteArrayInputStream(alipayRoot.toByteArray()));
+        app.getCertInfo().setAppCertPublicKeyStream(new ByteArrayInputStream(appCert.toByteArray()));
+
+
+        AlipayClient alipayClient = AlipayUtil.getAlipayClient(app);
+        AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
+
+        AlipayUserInfoShareResponse response = app.getCertInfo() != null ? alipayClient.certificateExecute(request, accessToken) : alipayClient.execute(request, accessToken);
+
+        if (!response.isSuccess()) {
+            throw new AlipayXcxException(response.getCode(), response.getSubMsg(), response.getBody());
+        }
+        AlipayUserInfo alipayUserInfo = new AlipayUserInfo();
+        alipayUserInfo.setAvatar(response.getAvatar());
+        alipayUserInfo.setCity(response.getCity());
+        alipayUserInfo.setGender(response.getGender());
+        alipayUserInfo.setNickName(response.getUserName());
+        alipayUserInfo.setProvince(response.getProvince());
+        alipayUserInfo.setUserId(response.getUserId());
+        return alipayUserInfo;
+    }
+
 }

--
Gitblit v1.8.0