接口说明
接口英文名称:alipay.system.oauth.token
请求url:https://openapi.alipay.com/v3/alipay/system/oauth/token
请求方式:post
path指该参数为路径参数
query指该参数需在请求url传参
body指该参数需在请求json传参
通用场景
换取授权访问令牌
公共请求参数
业务请求参数
body参数
grant_type|授权方式必选string[1,20]
【描述】授权方式
【枚举值】
用授权码来换取授权令牌: authorization_code
用刷新令牌来换取一个新的授权令牌: refresh_token
【示例值】authorization_code
code|授权码可选string[0,40]
【描述】授权码,用户对应用授权后得到。本参数在 grant_type 为 authorization_code 时必填;为 refresh_token 时不填。
【示例值】4b203fe6c11548bcabd8da5bb087a83b
refresh_token|刷新令牌可选string[0,40]
【描述】刷新令牌,上次换取访问令牌时得到。本参数在 grant_type 为 authorization_code 时不填;为 refresh_token 时必填,且该值来源于此接口的返回值 app_refresh_token(即至少需要通过 grant_type=authorization_code 调用此接口一次才能获取)。
【示例值】201208134b203fe6c11548bcabd8da5bb087a83b
常见请求示例
默认示例
curl -x post \
"https://openapi.alipay.com/v3/alipay/system/oauth/token" \
-h "authorization: alipay-sha256withrsa app_id=${appid},timestamp=${now},nonce=${uuid},expired_seconds=600,sign=${sign}" \
-h "alipay-request-id: ${requestid}" \
-h "content-type: application/json" \
-d '{
"refresh_token":"201208134b203fe6c11548bcabd8da5bb087a83b",
"code":"4b203fe6c11548bcabd8da5bb087a83b",
"grant_type":"authorization_code"
}'
说明:本示例仅供参考。
公共响应参数
业务响应参数
access_token|访问令牌必选string(40)
【描述】访问令牌。通过该令牌调用需要授权类接口
【示例值】20120823ac6ffaa4d2d84e7384bf983531473993
expires_in|访问令牌有效期必选string(16)
【描述】访问令牌的有效时间,单位是秒。
【示例值】3600
refresh_token|刷新令牌必选string(40)
【描述】刷新令牌。通过该令牌可以刷新access_token
【示例值】20120823ac6ffdsdf2d84e7384bf983531473993
re_expires_in|刷新令牌有效时间必选string(16)
【描述】刷新令牌的有效时间,单位是秒。
【示例值】3600
以下参数 二选一
user_id|支付宝用户的唯一标识。以2088开头的16位数字。string(16)
【描述】支付宝用户的唯一标识。以2088开头的16位数字。
新商户建议使用open_id替代该字段。对于新商户,user_id字段未来计划逐步回收,存量商户可继续使用。如使用open_id,请确认 应用-开发配置-openid配置管理 已启用。无该配置项,可查看openid配置申请。
【示例值】2088102150477652
open_id|支付宝用户唯一标识string(128)
【描述】支付宝用户唯一标识 详情可查看 openid简介
【示例值】074a1cctg1lelxke4xqc0zgndid0nxi95b5lsnpazwyoco5
auth_start|授权开始时间可选date(32)
【描述】授权token开始时间,作为有效期计算的起点
【示例值】2010-11-11 11:11:11
响应示例
正常示例
异常示例
{
"user_id":"2088102150477652",
"open_id":"074a1cctg1lelxke4xqc0zgndid0nxi95b5lsnpazwyoco5",
"access_token":"20120823ac6ffaa4d2d84e7384bf983531473993",
"expires_in":"3600",
"refresh_token":"20120823ac6ffdsdf2d84e7384bf983531473993",
"re_expires_in":"3600",
"auth_start":"2010-11-11 11:11:11"
}
说明:本示例仅供参考。
公共错误码
前往查看业务错误码
状态码 | 错误码 | 错误描述 | 凯发app官方网站的解决方案 |
---|---|---|---|
400 | isp.unknow-error | 未知错误 | 重试,或联系支付宝客服 |
400 | isv.code-invalid | 授权码(auth_code)
错误、状态不对或过期 | 使用有效的auth_code重新执行令牌换取,或引导用户重新授权 |
400 | isv.grant-type-invalid | grant_type参数不正确 | grant_type必须是authorization_code、refresh_token二者之一
若传入authorization_code为code换取令牌,若传入refresh_token为刷新令牌 |
400 | isv.refresh-token-invalid | 刷新令牌(refresh_token)错误或状态不对 | 使用有效的refresh_token重新执行令牌刷新,或引导用户重新授权 |
400 | isv.refresh-token-time-out | 刷新令牌(refresh_token)过期 | 使用有效的refresh_token重新执行令牌刷新,或引导用户重新授权 |
400 | isv.refreshed-token-invalid | 刷新出来的令牌无效 | 使用返回的刷新令牌再次刷新 |
400 | isv.unmatched-app-id | 调用接口的应用标识(app_id)与令牌授权的应用不相符 | 传入正确的app_id和令牌,若开发者支付宝账号名下有多个app_id,或者开发者管理多个归属于不同支付宝账号的app_id,请注意不要混用不同app_id的code |