From 81da61b828e29b7745e1382dfbbaeb685dc083ef Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 23 一月 2024 17:17:55 +0800 Subject: [PATCH] 抖音转链修改 --- utils/src/main/java/org/yeshi/utils/alipay/AlipayXcxUtil.java | 81 ++++++++++++++++++++++++++++++++++++++-- 1 files changed, 77 insertions(+), 4 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 cd0967a..00aeb18 100644 --- a/utils/src/main/java/org/yeshi/utils/alipay/AlipayXcxUtil.java +++ b/utils/src/main/java/org/yeshi/utils/alipay/AlipayXcxUtil.java @@ -3,13 +3,19 @@ import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; -import com.alipay.api.DefaultAlipayClient; 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; /** * 鏀粯瀹濆皬绋嬪簭甯姪绫� @@ -26,15 +32,34 @@ * @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"); request.setCode(code); - AlipaySystemOauthTokenResponse response = alipayClient.execute(request); + AlipaySystemOauthTokenResponse response = app.getCertInfo() != null ? alipayClient.certificateExecute(request) : alipayClient.execute(request); if (!response.isSuccess()) { throw new AlipayXcxException(response.getCode(), response.getSubMsg(), response.getBody()); } - return response.getUserId(); + return response; } @@ -71,10 +96,58 @@ System.out.println(content.toString()); request.setBizContent(content.toString()); - AlipayOpenAppMiniTemplatemessageSendResponse response = alipayClient.execute(request); + AlipayOpenAppMiniTemplatemessageSendResponse response = app.getCertInfo() != null ? alipayClient.certificateExecute(request) : alipayClient.execute(request); if (!response.isSuccess()) { throw new AlipayXcxException(response.getCode(), response.getSubMsg(), response.getBody()); } } + + /** + * 鑾峰彇鏀粯瀹濈敤鎴蜂俊鎭� + * + * @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