官方文档(https://opendocs.alipay.com/open/220/105337)
开发准备
1.一个生活号
2.一个域名
步骤
第一步:支付宝开放平台配置
获取会员信息接口
配置开发信息(接口加签方式,授权回调地址)
第二步:用户授权,获取auth_code
引导用户跳转至该链接:
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL
url参数说明
参数名 | 是否必须 | 描述 |
---|---|---|
app_id | 是 | 开发者应用的app_id |
scope | 是 | 接口权限值,目前只支持auth_userinfo和auth_base两个值 |
redirect_uri | 是 | 回调页面,是 经过转义 的url链接(url必须以http或者https开头),比如:http%3A%2F%2Fexample.com 在请求之前,开发者需要先到开发者中心对应应用内,配置授权回调地址。 |
state | 否 | 商户自定义参数,用户授权后,重定向到redirect_uri时会原样回传给商户。 为防止CSRF攻击,建议开发者请求授权时传入state参数,该参数要做到既不可预测,又可以证明客户端和当前第三方网站的登录认证状态存在关联。 |
当用户授权成功后,会跳转至开发者定义的回调页面,支付宝会在回调页面请求中加入参数,包括 auth_code、app_id、scope等,需要注意的是支付宝仅保证 auth_code、app_id 以及 scope 参数的有效性。
第三步:使用 auth_code 换取用户 userId
接口名称:alipay.system.oauth.token
参数 | 参数名称 | 类型(长度范围) | 参数说明 | 是否可为空 | 样例 |
---|---|---|---|---|---|
grant_type | 授权类型 | String | 值为authorization_code时,代表用code换取;值为refresh_token时,代表用refresh_token换取 | 不可空 | authorization_code |
code | 授权码 | String | 用户对应用授权后得到,即第二步中开发者获取到的auth_code值 | 与refresh_token二选一 | 4b203fe6c11548bcabd8da5bb087a83b |
refresh_token | 刷新令牌 | String | 刷新access_token时使用 | 与code二选一 | 201208134b203fe6c11548bcabd8da5bb087a83b |
同步响应结果示例
{
"alipay_system_oauth_token_response": {
"access_token": "publicpBa869cad0990e4e17a57ecf7c5469a4b2",
"user_id": "2088411964574197",
"alipay_user_id": "20881007434917916336963360919773",
"expires_in": 300,
"re_expires_in": 300,
"refresh_token": "publicpB0ff17e364f0743c79b0b0d7f55e20bfc"
},
"sign": "xDffQVBBelDiY/FdJi4/a2iQV1I7TgKDFf/9BUCe6+l1UB55YDOdlCAir8CGlTfa0zLYdX0UaYAa43zY2jLhCTDG+d6EjhCBWsNY74yTdiM95kTNsREgAt4PkOkpsbyZVXdLIShxLFAqI49GIv82J3YtzBcVDDdDeqFcUhfasII="
}
参数 | 参数名称 | 类型(长度范围) | 参数说明 | 是否可为空 | 样例 |
---|---|---|---|---|---|
access_token | 交换令牌 | String | 用于获取用户信息 | 不可空 | publicpBa869cad0990e4e17a57ecf7c5469a4b2 |
user_id | 用户的userId | String | 支付宝用户的唯一userId | 不可空 |