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