如何获取access_token(授权访问令牌)

简介: 该步骤主要是为获取access_token(授权访问令牌),用于商户后续的业务逻辑调用,如获取支付宝用户信息、发放会员卡、闪电开票等。一、文档地址官方文档地址:[url]https://docs.

该步骤主要是为获取access_token(授权访问令牌),用于商户后续的业务逻辑调用,如获取支付宝用户信息、发放会员卡、闪电开票等。

一、文档地址

官方文档地址:[url]https://docs.open.alipay.com/289/105656[/url]

二、开发前准备工作

调用步骤:[url]https://openclub.alipay.com/read.php?tid=12194&fid=69[/url]

注意事项:1、支持沙箱测试;2、不需签约,不需要添加功能;3、支持第三方调用

三、接口调用流程

1、应用授权URL拼接

拼接规则:[url]https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL[/url]

(1)APPID:商户调用应用的appid

(2)scope:根据对应产品功能选择

auth_user:【获取用户信息】、【网站支付宝登录】 

auth_base:【用户信息授权】 

auth_ecard:【商户会员卡】 

auth_invoice_info:【支付宝闪电开票】 

auth_puc_charge:【生活缴费】 

auth_zhima:【芝麻评分】 

auth_user_assets:【菜品营销】

多个scope时用”,”分隔,如scope为”auth_user,auth_ecard”时,此时获取到的access_token, 既可以用来获取用户信息,又可以给用户发送会员卡。 

该参数详解:[url]https://openclub.alipay.com/read.php?tid=1795&fid=67[/url]

(3)redirect_uri:必须是应用中设置的授权回调地址

(4)state:商户自定义参数,用户授权后,重定向到redirect_uri时会原样回传给商户。

2、获取auth_code

用户访问拼接好的应用授权URL,授权成功后,会自动回调授权URL中设置的授权回调地址页面,即redirect_uri,获取授权成功后的app_auth_code。

3、获取access_token

获取access_token必须通过alipay.system.oauth.token(换取授权访问令牌) 接口调用获取。

具体代码调用方式参见换取授权访问令牌请求示例。

注:到此为止,用户信息授权结束,后续具体的功能根据对应接口对接

四、换取授权访问令牌请求示例

1、参数说明

(1)grant_type:

authorization_code表示换取auth_code。 

refresh_token表示刷新refresh_token。

(2)code:授权码,grant_type的值为authorization_code,该值必须填写。

参数值为授权后获取的auth_code;

(3)refresh_token:刷新令牌,grant_type值为refresh_token,该值不能为空。

参数值为此接口的响应参数refresh_token(至少需要通过grant_type=authorization_code调用此接口一次才能获取)。

注意事项:

以上参数是公共请求参数,该接口没有biz_content参数,必须通过request的方式传参。

2、JAVA版本请求示例

public static void main(String[] args) throws AlipayApiException {		AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);		AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();		/**		 * 用户授权没有AlipaySystemOauthTokenModel,直接使用request		 */		//值为authorization_code时,代表用code换取;值为refresh_token时,代表用refresh_token换取		request.setGrantType("authorization_code");		//授权码,用户对应用授权后得到。即下面获取到的AccessToken		//每次用户授权完成,回调地址中的auth_code将不一样,auth_code只能使用一次,一天未被使用自动过期。 		request.setCode("1f80c8d6c21b4a8a94345e07d823QB89");		//刷新令牌,上次换取访问令牌时得到		//request.setRefreshToken("43e3bee07f354cc5a7780446412bSX75");		try {//		    AlipaySystemOauthTokenResponse response = alipayClient.execute(request);		    System.out.println(response.getBody());		} catch (AlipayApiException e) {		    //处理异常		    e.printStackTrace();		}	}

响应参数:

{"alipay_system_oauth_token_response":{"access_token":"composeBd364827b102144cf992fb7ce6e327X89","alipay_user_id":"2088102175794899","expires_in":600,"re_expires_in":660,"refresh_token":"composeBdefde11796f24938bafebefcf7834D89","user_id":"2088102175794899"},"sign":"NtsgUCZg04C5DdRnBdFSyFgg8K5pcFSnGbGV67zpo6tAuDEUB6421lAm2mdG8UHdO1PlLoSdSZmXgNZgin3bkjFe4hyOQUroPLb64whTCas5BsKBODL2s0+8LlrGnF7VJNkOSaWrDIh15DFNSKLvtA3gtvo3gvZK5gbY/428HzEE8HpBC85CEZuAA+0RsVXJvk/lvcXtAfjEKs5c1s45aOq8UmcH+HjAjmcPptNHokxYF+iY++xRgaypz7PeHMJsJNI8PS0CvznYySXwvHi9z/Ooav79X5gjjftqpd/2aSeUljbXdlf66LhcBaAFj8eT1r/Zkz+xQ2jE5M8i95HniQ=="}

3、PHP版本请求示例

$aop = new AopClient ();$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';$aop->appId = 'your app_id';$aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串';$aop->alipayrsaPublicKey='请填写支付宝公钥,一行字符串';$aop->apiVersion = '1.0';$aop->signType = 'RSA2';$aop->postCharset='GBK';$aop->format='json';$request = new AlipaySystemOauthTokenRequest ();$request->setGrantType("authorization_code");$request->setCode("1f80c8d6c21b4a8a94345e07d823QB89");//$request->setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");$result = $aop->execute ( $request); echo json_encode($result);

响应参数:

{"alipay_system_oauth_token_response":{"access_token":"composeBd364827b102144cf992fb7ce6e327X89","alipay_user_id":"2088102175794899","expires_in":600,"re_expires_in":660,"refresh_token":"composeBdefde11796f24938bafebefcf7834D89","user_id":"2088102175794899"},"sign":"NtsgUCZg04C5DdRnBdFSyFgg8K5pcFSnGbGV67zpo6tAuDEUB6421lAm2mdG8UHdO1PlLoSdSZmXgNZgin3bkjFe4hyOQUroPLb64whTCas5BsKBODL2s0+8LlrGnF7VJNkOSaWrDIh15DFNSKLvtA3gtvo3gvZK5gbY/428HzEE8HpBC85CEZuAA+0RsVXJvk/lvcXtAfjEKs5c1s45aOq8UmcH+HjAjmcPptNHokxYF+iY++xRgaypz7PeHMJsJNI8PS0CvznYySXwvHi9z/Ooav79X5gjjftqpd/2aSeUljbXdlf66LhcBaAFj8eT1r/Zkz+xQ2jE5M8i95HniQ=="}

4、.NET版本请求示例

IAopClient client = new DefaultAopClient(config.gatewayUrl, config.app_id, config.private_key, "json", "1.0", "RSA2", config.alipay_public_key, config.charset, false);request.GrantType = "authorization_code";request.Code = "1f80c8d6c21b4a8a94345e07d823QB89";//request.RefreshToken = "201208134b203fe6c11548bcabd8da5bb087a83b";AlipaySystemOauthTokenResponse response=client.execute(request);Console.WriteLine(response.Body);

响应参数:

{"alipay_system_oauth_token_response":{"access_token":"composeBd364827b102144cf992fb7ce6e327X89","alipay_user_id":"2088102175794899","expires_in":600,"re_expires_in":660,"refresh_token":"composeBdefde11796f24938bafebefcf7834D89","user_id":"2088102175794899"},"sign":"NtsgUCZg04C5DdRnBdFSyFgg8K5pcFSnGbGV67zpo6tAuDEUB6421lAm2mdG8UHdO1PlLoSdSZmXgNZgin3bkjFe4hyOQUroPLb64whTCas5BsKBODL2s0+8LlrGnF7VJNkOSaWrDIh15DFNSKLvtA3gtvo3gvZK5gbY/428HzEE8HpBC85CEZuAA+0RsVXJvk/lvcXtAfjEKs5c1s45aOq8UmcH+HjAjmcPptNHokxYF+iY++xRgaypz7PeHMJsJNI8PS0CvznYySXwvHi9z/Ooav79X5gjjftqpd/2aSeUljbXdlf66LhcBaAFj8eT1r/Zkz+xQ2jE5M8i95HniQ=="}

五、注意事项

1、sope设置正确

不同的scopes的值对应的是不同的access_token,不同的token可调用不同的接口,token的效用也因此不一样,所以这些token切忌混用

该参数详解:[url]https://openclub.alipay.com/read.php?tid=1795&fid=67[/url]

2、auth_code有效期

auth_code只能使用一次,有效期目前至少为5分钟,最长为24小时,超时未使用自动过期。

3、access_token有效期

access_token截止时间=(授权时间点)+(授权后调用alipay.system.oauth.token返回的expires_in)

4、auth_base作用

scope参数中的auth_base(用户信息授权)用于静默授权,若单传该参数无法获取用户信息,必须配合auth_user(获取用户信息、网站支付宝登录)。

5、用户信息授权实现场景

获取会员信息集成流程:[url]https://openclub.alipay.com/read.php?tid=14599&fid=68[/url]

网站支付宝登录集成流程:[url]https://openclub.alipay.com/read.php?tid=14600&fid=68[/url]

6、用户如何取消授权

只能用户取消授权,商户取消授权方式如下:

地址:[url]https://openauth.alipay.com/auth/tokenManage.htm[/url]

7、沙箱授权URL拼接规则

拼接规则:[url]https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL[/url]

六、常见问题

1、Q:报错isv.invalid-token:无效的令牌?

A:排查方案:[url]https://openclub.alipay.com/read.php?tid=4738&fid=68&ant_source=zsearch[/url]

 

如果还是报错,请按如下方式进行提问:

正确提问方式:使用环境(沙箱还是正式环境)+接口名称(中文+英文)+ 请求参数 + 报错信息详情

 

目录
相关文章
|
缓存 监控 网络安全
因服务器时间不同步引起的异常
因服务器时间不同步引起的异常
1558 1
|
文字识别 并行计算 语音技术
ModelScope问题之下载模型文件报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
4030 3
|
弹性计算 Linux 定位技术
【图文】2024年Palworld/幻兽帕鲁社区服务器超详细搭建教程
幻兽帕鲁是一款令人兴奋和富有创意的游戏,它将玩家带入了一个神秘而奇幻的幻兽世界。在这个游戏中,玩家可以探索各种各样的地图,与不同类型的幻兽进行战斗,并收集和培养自己的帕鲁团队。 本文将详细介绍如何在腾讯云服务器实现一键部署幻兽帕鲁联机服务器,帮助大家快速搭建自己的游戏联机服务器。
522 2
|
Ubuntu 网络协议 Linux
【附安装包】CentOS7(Linux)详细安装教程(手把手图文详解版)
【附安装包】CentOS7(Linux)详细安装教程(手把手图文详解版)
7632 2
|
安全 Java 测试技术
Spring Boot集成支付宝支付:概念与实战
【4月更文挑战第29天】在电子商务和在线业务应用中,集成有效且安全的支付解决方案是至关重要的。支付宝作为中国领先的支付服务提供商,其支付功能的集成可以显著提升用户体验。本篇博客将详细介绍如何在Spring Boot应用中集成支付宝支付功能,并提供一个实战示例。
826 2
|
11月前
|
安全 Java API
什么是用于 REST API 的 Bearer Token以及如何通过代码和工具进行调试
Bearer Token 是一种基于 OAuth 2.0 的身份验证机制,广泛应用于 REST API 的授权访问中。它通过在 HTTP 请求头中传递令牌,确保用户凭据安全传输并验证。本文深入解析了 Bearer Token 的概念、实现步骤及调试方法,包括其无状态特性、灵活性与安全性优势。同时,提供了 Java 实现示例和使用 Apipost、cURL 等工具测试的实践指导,帮助开发者掌握这一核心技能,保障 API 系统的安全与高效运行。
|
JSON JavaScript 前端开发
蓝桥杯web组赛题解析和杯赛技巧
本文作者是一位自学前端两年半的大一学生,在第十五届蓝桥杯Web组比赛中获得省一和国三。文章详细解析了比赛题纲,涵盖HTML、CSS、JavaScript、Echarts和Vue等技术要点,并分享了备赛技巧和比赛经验。作者强调了多写代码和解题思路的重要性,同时提供了省赛和国赛的具体流程及注意事项。希望对参赛者有所帮助。
1343 11
|
存储 安全 API
利用环境变量管理敏感信息
【10月更文挑战第16天】在软件开发中,环境变量是管理敏感信息如API密钥、数据库密码等的安全方式,避免了将这些信息硬编码在源代码中。本文介绍了环境变量的概念、优势及如何在应用中实施,包括本地开发、CI/CD流程和云服务中的应用,以及实战技巧和最佳实践。
|
小程序 API 开发者
【异常解决】“errcode“:47003,“errmsg“:“argument invalid! data.date4.value invalid rid:xxxxxx
【异常解决】“errcode“:47003,“errmsg“:“argument invalid! data.date4.value invalid rid:xxxxxx
2148 0
【异常解决】“errcode“:47003,“errmsg“:“argument invalid! data.date4.value invalid rid:xxxxxx