记录一下 开发支付宝 服务商角色 获取用户信息的坑
重要的点记录一下:
默认现在已经获取到了 app_auth_token
然后调用接口的时候 注意 app_id这个重要的参数
用户信息授权
1、拼接用户信息授权链接
拼接规则:https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL
注意:
(1)appid为商户的appid,在服务商代商户获取的用户信息的过程中,该appid设置为第三方应用授权换取应用授权令牌接口返回的auth_app_id(授权商户的AppId)参数值;
(2)获取会员信息,scope必传auth_user(获取用户信息、网站支付宝登录);
(3)redirect_uri :该授权回调地址是第三方应用授权换取应用授权令牌接口返回的auth_app_id(授权商户的AppId)对应应用设置的授权回调地址,即在授权商户应用中查看,而不是服务商应用中查看;
2、获取auth_code
用户访问(appid设置是授权商户appid的)用户信息授权链接返回获取auth_code。
3、获取access_token
服务商调用alipay.system.oauth.token(换取授权访问令牌)进行获取access_token。
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); request.setCode(auth_code); request.setGrantType("authorization_code"); // 使用auth_code换取 access_token,请求带上app_auth_token AlipaySystemOauthTokenResponse alipaySystemOauthTokenResponse = defaultAlipayClient.certificateExecute(request,null,appAuthToken);
注意:
(1)接口中设置的appid为服务商的appid,而不是授权商户的appid;
(2)接口中必须设置第三方应用授权换取应用授权令牌接口返回的app_auth_token(商户授权令牌);
(三)获取会员信息
服务商调用alipay.user.info.share(支付宝会员授权信息查询接口)代商户获取用户信息use_id、昵称、头像等。
//公钥证书模式下发起授权请求 请求带上app_auth_token AlipayUserInfoShareResponse alipayUserInfoShareResponse = defaultAlipayClient.certificateExecute(alipayUserInfoShareRequest,alipaySystemOauthTokenResponse.getAccessToken(),appAuthToken);
注意:
(1)接口中设置的appid为服务商的appid,而不是授权商户的appid;
(2)接口中必须设置第三方应用授权换取应用授权令牌接口返回的app_auth_token(商户授权令牌);
(3)接口中设置用户信息授权换取授权访问令牌接口返回的access_token。
一定要注意
支付宝加密方式证书的模式下,调用接口的形式
设置app_auth_token和accessToken的代码方式:
注:accessToken没有可以设置为null。
defaultAlipayClient.certificateExecute(request,null,appAuthToken);
参考:
https://openclub.alipay.com/club/history/read/12762
https://openclub.alipay.com/club/history/read/12868