java支付宝项目代码,Java AlipayResponse类代码示例

该方法详细阐述了如何通过AlipayAPI获取用户授权后的信息。首先,解析请求参数获取auth_code,然后用auth_code换取auth_token和openId。如果需要用户详细信息,再使用auth_token获取。成功则返回响应对象,否则返回空或异常信息。整个过程涉及支付宝系统授权、用户信息共享等关键步骤。
摘要由CSDN通过智能技术生成

import com.alipay.api.AlipayResponse; //导入依赖的package包/类

/**

* 该方法是用户确定授权后的获取用户信息的方法;

* 方法先解析请求参数,获取auth_code;

* 获取到auth_code后,用auth_code换取auth_token和openId;

* 然后,判断用户是否需要获取用户详细信息,如果需要,则用auth_token获取用户详细信息,并返回AlipayUserInfoShareResponse响应对象;

* 如果不需要,直接返回AlipaySystemOauthTokenResponse响应对象;

* 其他的意外情况均返回null;

*

* @param aliAccountInfo 封装了获取用户详细信息需要用到的数据的对象

* @param isNeedDetail 是否需要获取详细信息的标识

* @param request http请求体

* @return AlipayResponse类型,调用者根据是否需要获取详细信息的标识强转成不同类型的对象,false强转成AlipaySystemOauthTokenResponse,true强转成AlipayUserInfoShareResponse,意外情况返回空

* Create by quandong

*/

private static AlipayResponse getUserInfo(AliAccountInfo aliAccountInfo, boolean isNeedDetail, HttpServerRequest request) {

Map params = AliPayApi.getRequestParams(request); // 解析请求参数

String authCode = params.get("auth_code"); // 获得authCode

try {

// 判断是否能获取到authCode

if(null != authCode && !authCode.equals("")) { // 能获取到authCode

AlipayClient alipayClient = AliPayCliFactory.getAlipayClient(aliAccountInfo); // 获取支付宝连接

// 利用authCode获得authToken

AlipaySystemOauthTokenRequest oauthTokenRequest = new AlipaySystemOauthTokenRequest(); // 创建支付宝系统授权token请求对象

oauthTokenRequest.setCode(authCode); // 设置auth_code

oauthTokenRequest.setGrantType("authorization_code"); // 设置同意类型,值为authorization_code时,代表用code换取;值为refresh_token时,代表用refresh_token换取

AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(oauthTokenRequest); // 向支付宝发送请求并获得响应

// 判断是否换取到authToken

if(null != oauthTokenResponse && oauthTokenResponse.isSuccess()) { // 成功获得authToken

// 判断是否需要获取用户的详细信息

if(isNeedDetail) { // 需要获取用户的详细信息

// 利用authToken获取用户信息

AlipayUserInfoShareRequest userinfoShareRequest = new AlipayUserInfoShareRequest(); // 创建用户信息共享请求对象

AlipayUserInfoShareResponse userinfoShareResponse = alipayClient.execute(userinfoShareRequest, oauthTokenResponse.getAccessToken()); // 向支付宝发送请求并获得响应

// AlipayUserUserinfoShareRequest userinfoShareRequest = new AlipayUserUserinfoShareRequest();

// AlipayUserUserinfoShareResponse userinfoShareResponse = alipayClient.execute(userinfoShareRequest, oauthTokenResponse.getAccessToken());

// LOG.debug("======================用户真实姓名={}======================", userinfoShareResponse.getRealName());

// 判断是否能获得用户信息

if(null != userinfoShareResponse && userinfoShareResponse.isSuccess()) { // 成功获得用户信息

LOG.info("获取用户信息成功:{}", userinfoShareResponse.getBody()); // 获取用户信息成功,打日志

return userinfoShareResponse; // 返回响应对象,调用者可以用该对象获取用户的详细信息

} else { // 获取用户信息失败

LOG.error("获取用户信息失败"); // 获取用户信息失败,打日志

return null; // 返回空

}

} else { // 不需要获取用户的详细信息

LOG.info("获取用户openId成功:{}", oauthTokenResponse.getUserId()); // 获取用户openId成功,打日志

return oauthTokenResponse; // 返回响应对象,调用者可以用该对象获取用户的openId

}

} else { // 换取不到authToken

LOG.error("authCode换取authToken失败"); // authCode换取authToken失败,打日志

return null; // 返回空

}

} else { // 获取不到authCode

LOG.error("authCode获取失败"); // authCode获取失败,打日志

return null; // 返回空

}

} catch (AlipayApiException alipayApiException) {

LOG.error("获取oauthToken或用户信息失败"); // 获取oauthToken或用户信息失败,打日志

// 自行处理异常

alipayApiException.printStackTrace();

}

return null; // 返回空,正常时不会执行此语句

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值