快捷登录产品全面升级,若您使用的是老接口,请移步老版本PC快捷登录文档。
若您希望从PC快捷登录老版本升级为PC快捷登录新版本(网站支付宝登录),请参考以下步骤完成PC快捷登录新版本(网站支付宝登录)的接入工作。若想了解更多关于新版本的升级改造内容,可参考PC快捷登录新老版本接口对比。
要在您的应用中使用支付宝开放产品的接口能力:
需要详细了解开放平台创建应用步骤请参考《开放平台应用创建指南》。
开发者调用接口前需要先生成RSA密钥,RSA密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。生成密钥后在开放平台开发者中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。详情请参考《配置应用环境》。
1. 下载服务端SDK
为了帮助开发者调用开放接口,我们提供了开放平台服务端SDK,包含JAVA、PHP和.NET三个语言版本,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的SDK并引入您的开发工程。
各语言版本服务端SDK详细使用说明,请参考《服务端SDK说明》。
2. 接口调用配置
在SDK调用前需要进行初始化,以Java代码为示例如下:
AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
关键参数说明:
配置参数 | 示例值解释 | 获取方式/示例值 |
---|---|---|
URL | 支付宝网关(固定) | https://openapi.alipay.com/gateway.do |
APPID | APPID 即创建应用后生成 | 获取见上面创建应用并获取APPID |
APP_PRIVATE_KEY | 开发者私钥,由开发者自己生成 | 获取详见上面配置密钥 |
FORMAT | 参数返回格式,只支持json | json(固定) |
CHARSET | 编码集,支持GBK/UTF-8 | 开发者根据实际工程编码配置 |
ALIPAY_PUBLIC_KEY | 支付宝公钥,由支付宝生成 | 获取详见上面配置密钥 |
SIGN_TYPE | 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2 | RSA2 |
接口调用流程如下图所示:
步骤1:拼接授权页面url
url拼接规则:
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=商户的APPID&scope=auth_user&redirect_uri=ENCODED_URL&state=init
注意:
url中的app_id参数是商户实际使用的appId;
scope参数传递auth_user。
Redirect_uri为页面跳回地址(重定向地址)
state为商户自定义参数
其他详细信息请参考用户信息授权
步骤2:获取auth_code
当用户授权成功后,会跳转至开发者定义的回调页面,支付宝会在回调页面请求中加入参数,包括auth_code、app_id、scope等,需要注意的是支付宝仅保证auth_code、app_id以及scope参数的有效性。支付宝请求开发者回调页面示例如下:
http://example.com/doc/toAuthPage.html?app_id=2014101500013658&source=alipay_wallet&scope=auth_user&auth_code=ca34ea491e7146cc87d25fca24c4cD11
步骤3:使用auth_code换取access_token及用户userId
通过接口alipay.system.oauth.token获取access_token及userId。
接口调用示例:
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); request.setCode("2e4248c2f50b4653bf18ecee3466UC18"); request.setGrantType("authorization_code"); try { AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request); System.out.println(oauthTokenResponse.getAccessToken()); } catch (AlipayApiException e) { //处理异常 e.printStackTrace(); }
步骤4:调用接口获取用户信息
通过接口alipay.user.info.share获取用户信息,接口调用示例:
AlipayClient alipayClient = new DefaultAlipayClient( "https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", "GBK", ALIPAY_PUBLIC_KEY); AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest(); String token =/* 获取步骤3中的token */; AlipayUserInfoShareResponse response = alipayClient.execute(request, token); if (response.isSuccess()) { System.out.println("调用成功"); System.out.println(ReflectionToStringBuilder.toString(response)); String userId = response.getUserId(); } else { System.out.println("调用失败"); System.out.println(response.getSubCode() + ":" + response.getSubMsg()); }
关于auth_code、access_token的详细说明请参考文档:
https://doc.open.alipay.com/docs/doc.htm?treeId=193&articleId=105656&docType=1#s5
如何接入沙箱
获取用户信息沙箱接入注意点
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=商户的APPID&scope=auth_user&redirect_uri=ENCODED_URL&state=init,切换成
https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=商户的APPID&scope=auth_user&redirect_uri=ENCODED_URL&state=init