支付宝开放平台之第三方授权登录与获取用户信息
注意:支付宝公众号的主体是一个 pid 我们通过 pid和密码登录支付宝开放平台,创建一个应用,对应一个appid,在应用中设置回调域名,加密方式,RSA公私钥... ...,等审核通过应用上线以后就可以使用,程序中需要的是:appid、自己生成的RSA私钥(公钥上传到支付宝)、支付宝的公钥
1.登录支付宝开放平台
https://open.alipay.com/platform/home.htm
创建一个应用
设置完应用名称后根据情况设置回调域名,添加功能,自己生成公私钥,程序中保留私钥,上传自己生成的公钥到支付宝,并复制支付宝的公钥到程序中
到这我们还不能进行接口调试,因为我们的应用没有上线,APPID是无效的,大概等一天就审核通过并且上线,当时我只等了两个小时就上线了
在下面可以查看应用的appid和公私钥信息
2.构造授权url来获取auth_code(注意:此处的appid是创建应用的appid)
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=12345678987&scope=auth_base&redirect_uri=http://paytest.card.com/paycenter-web/pay/jsapi?tokenId=1560081918059100,33,23
3. 回调页面得到链接如下,回调url中将包含参数auth_code
http://paytest.card.com/paycenter-web/pay/jsapi?tokenId=1560081918059100,33,23&app_id=123456987&source=alipay_wallet&scope=auth_base&auth_code=3909833a6edb4fbeace6e5eff18bXF45
4.根据auth_code获取user_id
此处的appid、privateKey、publicKey是对应的应用的信息
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", "UTF-8", ALIPAY_PUBLIC_KEY, "RSA2");
AlipaySystemOauthTokenRequest alipayReq = new AlipaySystemOauthTokenRequest();
alipayReq.setCode(code);
alipayReq.setGrantType("authorization_code");
try {
AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(alipayReq);
userId = oauthTokenResponse.getUserId();
log.info("##获取userId:" + JSONObject.toJSONString(oauthTokenResponse));
} catch (AlipayApiException e) {
//处理异常
log.info("##jsapi,服务窗获取userId出错!异常信息:{}", e);
}