记录一下支付宝获取用户的信息
接着上一次支付宝授权之后 我们获取一下用户信息
依旧是用支付宝沙箱环境,但是我用沙箱获取的是登录用户(企业)的营业执照,获取用户信息是同理的
下面这用servlet写的
https://openapi.alipaydev.com/gateway.do 沙箱接口地址
https://openapi.alipay.com/gateway.do 正式接口地址
private String resultCode(HttpServletRequest request, HttpServletResponse response) throws Exception {
String code = null;
String openid = null;
String state= request.getParameter("state");
code = request.getParameter("auth_code");// 用户授权码
String cretNo=null;
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do",
AlipayServiceEnvConstantsfs2.APP_ID,
AlipayServiceEnvConstantsfs2.PRIVATE_KEY, "json", AlipayServiceEnvConstantsfs2.CHARSET, AlipayServiceEnvConstantsfs2.ALIPAY_PUBLIC_KEY, "RSA2");
/* AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do",
AlipayServiceEnvConstantsfs2.APP_ID,
AlipayServiceEnvConstantsfs2.PRIVATE_KEY, "json", AlipayServiceEnvConstantsfs2.CHARSET, AlipayServiceEnvConstantsfs2.ALIPAY_PUBLIC_KEY, "RSA2");
*/
AlipaySystemOauthTokenRequest tokenRequest = new AlipaySystemOauthTokenRequest();
tokenRequest.setCode(code);
tokenRequest.setGrantType(AlipayServiceEnvConstantsfs2.GRANT_TYPE);
try {
// 第一步 获取accessToken 令牌
AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(tokenRequest);
openid = oauthTokenResponse.getUserId();
String accessToken = oauthTokenResponse.getAccessToken();
System.out.println("accessToken==============="+accessToken);
// 第二步 根据令牌去请求接口 获取用户信息
AlipayClient alipayClient1 = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do",
AlipayServiceEnvConstantsfs2.APP_ID,
AlipayServiceEnvConstantsfs2.PRIVATE_KEY, "json", AlipayServiceEnvConstantsfs2.CHARSET,
AlipayServiceEnvConstantsfs2.ALIPAY_PUBLIC_KEY, "RSA2");
AlipayUserInfoShareRequest request1 = new AlipayUserInfoShareRequest();
AlipayUserInfoShareResponse response1 = alipayClient.execute(request1,accessToken);
if(response1.isSuccess()){
System.out.println("调用成功");
if((response1.getIsCertified()).equals("T")) {
if(response1.getCertType()!=null || response1.getCertType()!="") {
//获取用户信息
}
}
} else {
System.out.println("调用失败");
}
} catch (AlipayApiException e) {
//处理异常
e.printStackTrace();
}
String url=state+"?cretNo="+cretNo;//H5要用的参数 比如用户id
String furl="redirect:"+H5回调地址
// System.err.println("重定向地址: "+furl);
return furl;
}
/**
* 支付宝服务窗环境常量(demo中常量只是参考,需要修改成自己的常量值)
* 沙箱
* @author taixu.zqq
* @version $Id: AlipayServiceConstants.java, v 0.1 2014年7月24日 下午4:33:49 taixu.zqq Exp $
*/
public class AlipayServiceEnvConstantsfs2 {
/**支付宝公钥-从支付宝生活号详情页面获取*/
public static final String ALIPAY_PUBLIC_KEY = "支付宝公钥";
/**签名编码-视支付宝服务窗要求*/
public static final String SIGN_CHARSET = "GBK";
/**字符编码-传递给支付宝的数据编码*/
public static final String CHARSET = "GBK";
/**签名类型-视支付宝服务窗要求*/
public static final String SIGN_TYPE = "RSA2";
/**开发者账号PID*/ 沙箱
public static final String PARTNER = "2088431776038131";
/** 服务窗appId */沙箱
//TODO !!!! 注:该appId必须设为开发者自己的生活号id
public static final String APP_ID = "2016092500594515";
//私钥
public static final String PRIVATE_KEY = '自己生成的私钥';
/**支付宝网关*/
public static final String ALIPAY_GATEWAY = "https://openapi.alipaydev.com/gateway.do";
/**授权访问令牌的授权类型*/
public static final String GRANT_TYPE = "authorization_code";
}