更新时间:2024-10-23 18:07:47文档更新记录 >集成工具收藏订阅更新我的文档设置返回文档1 授权流程在网页应用内,授权流程如下图所示: 1按照规则拼接授权页面的 url 链接,并且引导用户跳转至该链接; 2用户在授权页面上确认授权后,将跳转到开发者指定的回调页,并且带上 auth_code; 3开发者通过 ,使用 auth_code 换取 access_token 及用户的 user_id(open_id); 4如果需要除 user_id(open_id) 以外的其他信息,则使用 access_token 调用 alipay.user.info.share(支付宝会员授权信息查询接口) 获得用户信息。2 第一步:url 拼接url 拼接规则:https://openauth.alipay.com/oauth2/publicappauthorize.htm?app_id=appid&scope=scope&redirect_uri=encoded_url。沙箱拼接规则详见 关于沙箱。url 拼接中的参数说明:参数名是否必须描述app_id是开发者应用的 appidscope是接口权限值,目前只支持 auth_user 和 auth_base 两个值redirect_uri是回调页面,是经过转义的 url 链接(url 必须以 http 或者 https 开头),比如:http://example.com 在请求之前,开发者需要先到开发者中心对应应用内,配置授权回调地址。state否商户自定义参数,用户授权后,重定向到 redirect_uri 时会原样回传给商户。 为防止 csrf 攻击,建议开发者请求授权时传入 state 参数,该参数要做到既不可预测,又可以证明客户端和当前第三方网站的登录认证状态存在关联,并且不能有中文。说明:参数由用户自定义拼接,拼接完成后将参数进行 base64 转码。最后将参数拼接为 state=xxxxx 即可,最大长度 100 位。注意:服务商代商家获取会员信息,用户信息实际还是授权给授权商家的,因此 url 拼接链接需注意 app_id 和 redirect_uri:●app_id:授权商家的 appid(即 第三方应用授权 返回 app_auth_token 对应的 auth_app_id)。●redirect_uri:授权商家应用中配置的授权回调地址。2.1 关于 redirect_uri 的说明redirect_uri 即授权回调地址,服务端接口会校验授权链接中配置的 redirect_uri 与应用中配置的授权回调地址(如下图所示)是否一致。详细说明:●如果开发者在应用中配置的授权链接是:https://auth.example.com/authcallback,则 redirect_uri 内容需要 encode 处理,为 https://auth.example.com/authcallback。●授权回调地址对应的域名(auth.example.com)下的页面 http://auth.example.com/authcallback、https://auth.example.com/authredirect、https://auth.example.com/ 都可以进行 oauth2.0 授权。但与(auth.example.com)关联的二三级域名,如:http://www.example.com/、http://example.com/ 无法进行 oauth2.0 授权。2.2 关于 scope 的说明scopes描述包含的服务端 api 接口auth_base静默授权,不会发起授权浮窗,用户授权并自动跳转到回调页。用户感知为直接进入回调页面(通常是业务页面)。在支付宝客户端获取 auth_code,仅可用于 获取支付宝会员标识( user_id 或 open_id )。●auth_user主动授权,需要用户手动点击同意,用户同意后可获取用户的基本信息(比如头像、昵称等),用于 网站支付宝登录 和 获取用户信息。●●alipay.user.info.share(支付宝会员授权信息查询接口)pc 网页内授权页面示例:3 第二步:获取 auth_code当用户授权成功后,会跳转至开发者定义的回调页面,支付宝会在回调页面请求中加入参数,包括 auth_code、app_id、scope 等,需要注意的是支付宝仅保证 auth_code、app_id 以及 scope 参数的有效性。支付宝请求开发者回调页面示例如下:3.1 术语解释auth_code:临时授权码,一次有效,auth_code 有效期为 3 分钟到 24 小时(开放平台规则会根据具体的业务场景动态调整 auth_code 的有效期,但是不会低于 3 分钟,同时也不会超过 24 小时),超过有效期的 auth_code 即使未使用也将无法使用。 用户的每次授权动作都会生成一个新的 auth_code。4 第三步:换取 access_token 和 userid(openid)得到 auth_code 后,开发者通过 ,使用 auth_code 换取 access_token 及用户的 user_id(open_id)。auth_code 作为换取 access_token 的凭证,每次用户授权完成后,返回参数中的 auth_code 将不一样,auth_code 只能使用一次,24 小时内未被使用自动过期。注意: 的返回值 alipay_user_id 已废弃,请勿使用,需要获取的 userid(openid) 值为返回值中的 user_id(open_id) 。4.1 接口请求示例接口调用示例,以 java 语言为例:未使用支付宝 sdk 时,可直接发送 http 请求:4.2 请求参数说明参数参数名称类型(长度范围)参数说明是否可为空样例grant_type授权类型string值为authorization_code 时,代表用 code 换取;值为 refresh_token 时,代表用 refresh_token 换取不可空authorization_codecode授权码string用户对应用授权后得到,即第二步中开发者获取到的 auth_code 值与 refresh_token 二选一4b203fe6c11548bcabd8da5bb087a83brefresh_token刷新令牌string刷新access_token时使用与 code 二选一201208134b203fe6c11548bcabd8da5bb087a83b4.3 同步响应结果示例4.4 同步响应参数说明参数参数名称类型(长度范围)参数说明是否可为空样例access_token交换令牌string用于获取用户信息不可空publicpba869cad0990e4e17a57ecf7c5469a4b2user_id(open_id)用户的 openidstring支付宝用户唯一标识。新商户建议使用open_id替代该字段。对于新商户,user_id字段未来计划逐步回收,存量商户可继续使用。如使用open_id,请确认 应用-开发配置-openid配置管理 已启用。无该配置项,可查看。不可空-expires_in令牌有效期string交换令牌的有效期,单位秒不可空300re_expires_in刷新令牌有效期string刷新令牌有效期,单位秒不可空300refresh_token刷新令牌string通过该令牌可以刷新 access_token不可空publicpb0ff17e364f0743c79b0b0d7f55e20bfc5 第四步:获取用户信息开发者在获取了用户的 user_id(open_id) 后,如果想获取头像、昵称、省份等其他信息,需要调用 alipay.user.info.share(支付宝会员授权信息查询接口) 。5.1 接口请求示例接口调用示例,以 java 语言为例未使用支付宝 sdk 时,可直接发送 http 请求:5.2 公共请求参数说明参数参数名称类型(长度范围)参数说明是否可为空样例auth_token授权令牌string通过auth_code获取的access_token不可空publicpb9ea460ff5b5c468c9ccf5e967dc349635.3 同步响应结果示例5.4 同步响应参数说明参数参数名称类型(长度范围)参数说明样例user_id(open_id)支付宝用户idstring支付宝用户唯一标识。新商户建议使用open_id替代该字段。对于新商户,user_id字段未来计划逐步回收,存量商户可继续使用。如使用open_id,请确认 应用-开发配置-openid配置管理 已启用。无该配置项,可查看 。-avatar用户头像string如果没有数据(用户未设置)时不会返回该信息,请做好容错。https://tfsimg.alipay.com/images/partner/t1k0xixxrnxxxxxxxxnick_name用户昵称string如果没有数据(用户未设置)时不会返回该信息,请做好容错。张三5.5 结果码说明同步返回结果码含义说明10000业务处理成功40001~40006业务处理失败具体失败原因请参考 。其它请参考 api 文档。20000业务出现未知错误或者系统异常业务出现未知错误或者系统异常(请一定在确定本次调用结果后,发起重试),可调用查询接口发起查询确定结果。 6 消息通知商家/服务商创建、修改及用户领取商家券等场景,支付宝都将通过 from 蚂蚁消息通知 向商家应用 或第三方应用 应用网关 推送异步通知消息,同步对应操作结果。若商家/服务商网络环境比较复杂,如:通过统一网关间连互联网,推荐使用网络兼容性更好的标准 http(s) 协议进行对接。6.1 第一步:订阅消息当用户取消用户信息授权时,支付宝将通过 ,发送此消息给被授权方。商家/服务商需根据 订阅消息 指引,为接入的应用订阅如下消息接口。注意:仅完成订阅后才会收到支付宝发送的对应异步通知消息。6.2 第二步:验签商家/服务商可使用支付宝 sdk 根据 使用生成密钥验签 指引,使用应用密钥信息验证异步通知消息来源是否为支付宝。6.3 第三步:反馈消息接收结果收到异步通知完成验签后,商家/服务商需返回 success 表示消息获取成功,支付宝就会停止发送异步通知。如果返回 fail 或其他值,表示消息获取失败,支付宝会根据 投递重试策略 重新发送消息到应用网关地址。说明:完成异步通知验签时,如果验签成功返回 success,验签失败返回 fail,重新接收异步进行处理。响应值描述是否重试fail消息获取失败重试success消息获取成功不重试6.4 用户授权取消消息通知用户取消用户信息授权时,支付宝将通过 ,发送此消息给被授权方。消息示例7 接入沙箱沙箱是开放平台提供给开发者用户调试接口的环境,具体操作步骤见 。接入注意点●获取用户信息支持沙箱接入;在沙箱调通接口后,必须在线上进行测试与验收,所有返回码及业务逻辑以线上为准;●沙箱授权 url 链接拼接规则为:https://openauth-sandbox.dl.alipaydev.com/oauth2/publicappauthorize.htm?app_id=appid&scope=scope&redirect_uri=encoded_url。