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));
|
|
}
|
}
|