|
|
@@ -0,0 +1,58 @@
|
|
|
+package com.java110.acct.cmd.alipay;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alipay.api.AlipayClient;
|
|
|
+import com.alipay.api.DefaultAlipayClient;
|
|
|
+import com.alipay.api.request.AlipaySystemOauthTokenRequest;
|
|
|
+import com.alipay.api.request.AlipayUserInfoShareRequest;
|
|
|
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
|
|
|
+import com.alipay.api.response.AlipayUserInfoShareResponse;
|
|
|
+import com.java110.core.annotation.Java110Cmd;
|
|
|
+import com.java110.core.context.ICmdDataFlowContext;
|
|
|
+import com.java110.core.event.cmd.Cmd;
|
|
|
+import com.java110.core.event.cmd.CmdEvent;
|
|
|
+import com.java110.core.factory.CommunitySettingFactory;
|
|
|
+import com.java110.utils.exception.CmdException;
|
|
|
+import com.java110.utils.util.Assert;
|
|
|
+import com.java110.vo.ResultVo;
|
|
|
+
|
|
|
+import java.text.ParseException;
|
|
|
+
|
|
|
+
|
|
|
+@Java110Cmd(serviceCode = "alipay.getOpenIdFromAliPay")
|
|
|
+public class GetOpenIdFromAliPayCmd extends Cmd {
|
|
|
+ @Override
|
|
|
+ public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
|
|
|
+ Assert.hasKeyAndValue(reqJson, "authCode", "未包含authCode");
|
|
|
+ Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区ID");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
|
|
|
+ String communityId = reqJson.getString("communityId");
|
|
|
+ String openId = "";
|
|
|
+ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
|
|
|
+ CommunitySettingFactory.getValue(communityId, "APP_ID"),
|
|
|
+ CommunitySettingFactory.getRemark(communityId, "APP_PRIVATE_KEY"),
|
|
|
+ "json",
|
|
|
+ "UTF-8",
|
|
|
+ CommunitySettingFactory.getRemark(communityId, "ALIPAY_PUBLIC_KEY"),
|
|
|
+ "RSA2");
|
|
|
+ AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
|
|
|
+ request.setCode(reqJson.getString("authCode"));
|
|
|
+ request.setGrantType("authorization_code");
|
|
|
+ try {
|
|
|
+ AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);
|
|
|
+ AlipayUserInfoShareRequest requestUserInfo = new AlipayUserInfoShareRequest();
|
|
|
+ AlipayUserInfoShareResponse userinfoShareResponse = alipayClient.execute(requestUserInfo, oauthTokenResponse.getAccessToken());
|
|
|
+ openId = userinfoShareResponse.getUserId();
|
|
|
+ } catch (Exception e) {
|
|
|
+ //处理异常
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new CmdException("获取用户信息失败"+e);
|
|
|
+ }
|
|
|
+
|
|
|
+ context.setResponseEntity(ResultVo.createResponseEntity(openId));
|
|
|
+
|
|
|
+ }
|
|
|
+}
|