@Value("${alipay.app_id}")
private String APP_ID_PROD;//app_id
@Value("${alipay.app_public_key}")
private String ALIPAY_PUBLIC_KEY;//支付宝公钥
@Value("${alipay.app_private_key}")
private String APP_PRIVATE_KEY;//支付宝私钥
/**
* Alipay客户端
*/
private AlipayClient alipayClient;
/**
* 个人用户的
*/
private static final String ALIPAY_BORDER_PROD = "https://openapi.alipay.com/gateway.do";
/**
* 沙箱
*/
private static final String ALIPAY_BORDER_DEV = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
@Override
public void afterPropertiesSet() throws Exception {
alipayClient = new DefaultAlipayClient(ALIPAY_BORDER_PROD, APP_ID_PROD, APP_PRIVATE_KEY, "json", "UTF-8", ALIPAY_PUBLIC_KEY, "RSA2");
}
public void getOpenId(String code, HttpServletRequest httpServletRequest) throws Exception {
String accessToken = getAccessToken(code());
if (!StringUtil.isNullOrEmpty(accessToken)) {
//获取用户openId
String openId = getUserInfoByToken(accessToken);
//todo 开始你的后续操作
}
}
只能获取openid 无法获取手机号
public String getAccessToken(String authCode) {
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
request.setCode(authCode);
request.setGrantType("authorization_code");
try {
AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);
return oauthTokenResponse.getAccessToken();
} catch (Exception e) {
e.printStackTrace();
}
}
public String getUserInfoByToken(String token) {
AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
try {
AlipayUserInfoShareResponse response = alipayClient.execute(request, token);
if (response.isSuccess()) {
return response.getOpenId();
}
System.out.println("根据 access_token获取用户信息失败!");
return null;
} catch (Exception e) {
e.printStackTrace();
}
}
测试获取code
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.39.60.ALL</version>
</dependency>