接入指南
授权操作
第一步:创建并配置应用
第二步:生成授权链接/二维码
控制台生成授权链接/二维码
1.

1.





1.

1.
手动拼接授权链接
指定应用授权(推荐)
https://b.alipay.com/page/message/tasksDetail?bizData=UrlEncode({"platformCode":"O","taskType":"INTERFACE_AUTH","agentOpParam":{"redirectUri":"{redirectUri}","appTypes":{appTypes},"isvAppId":"{isvAppId}","state":"{state}"}})
alipays://platformapi/startapp?appId=2021003130652097&page=pages%2Fauthorize%2Findex%3FbizData%3DUrlEncode({"platformCode":"O","taskType":"INTERFACE_AUTH","agentOpParam":{"redirectUri":"{redirectUri}","appTypes":{appTypes},"isvAppId":"{isvAppId}","state":"{state}"}})
参数 | 类型 | 最大长度 | 必填参数 | 描述 | 示例 |
---|---|---|---|---|---|
isvAppId | String | 32 | 是 | 第三方应用 APPID。 | 2021000000000318 |
appTypes | String | / | 是 | 对商家应用的限制类型,数组格式,支持多选,中间使用英文逗号(,)分隔,目前支持类型:MOBILEAPP(移动应用)WEBAPP(网页应用)PUBLICAPP(生活号)TINYAPP(小程序)BASEAPP(基础应用) | ["TINYAPP","WEBAPP"] |
redirectUri | String | / | 是 | 回调页面地址,必须与第三方应用配置的 授权回调地址 一致。 | https://example.com |
state | String | 100 | 否 | 自定义参数,便于服务商识别是哪个商家的授权信息。对应的值必须为 base64 编码。 | MDAyMDIy |
单个应用授权
https://openauth.alipay.com/oauth2/appToAppAuth.htm?app_id=第三方应用APPID&redirect_uri=UrlEncode(redirect_uri)&state=自定义参数值
参数 | 类型 | 最大长度 | 描述 | 示例 |
---|---|---|---|---|
app_id | String | 32 | 第三方应用的 APPID,必填参数。 | 2021000000000318 |
redirect_uri | String | / | 商家授权后的回调页面,必填参数,参数需要 UrlEncode。 | http%3A%2F%2Fexample.com |
state | String | 100 | 自定义参数,可选参数,便于服务商识别是哪个商家的授权信息。对应的值必须为 base64 编码。 | MDAyMDIy |
第三步:商家授权

第四步:获取 app_auth_code
http://example.com/doc/toAuthPage.html?app_id=2021000000000318&source=alipay_app_auth&application_type=TINYAPP,WEBAPP&app_auth_code=P1798b23682e34d96859afa000000003
第五步:使用 app_auth_code 换取 app_auth_token
请求参数说明
参数 | 类型 | 描述 | 示例 |
---|---|---|---|
grant_type | String | 换码类型,必填参数,以下值二选一。authorization_code:使用 app_auth_code 换取 app_auth_token。refresh_token:刷新 app_auth_token。 | authorization_code |
code | String | 授权码,当 grant_type 传入 authorization_code 时,必须传入本参数。传入授权获取的 app_auth_code 值。 | P1798b23682e34d96859afa000000003 |
refresh_token | String | 刷新令牌,上次换取访问令牌时得到。本参数在 grant_type 为 authorization_code 时不填;为 refresh_token 时必填,且该值来源于此接口的返回值 app_refresh_token(即至少需要通过 grant_type=authorization_code 调用此接口一次才能获取)。 | 201509BBdcba1e3347de4e75ba3fed2c9abebE36 |
请求示例
package com.java.sdk.demo;
import com.alipay.v3.ApiException;
import com.alipay.v3.ApiClient;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayOpenAuthTokenApi;
import com.alipay.v3.model.*;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AlipayOpenAuthTokenApiApp {
public static void main(String[] args) throws ApiException {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// 初始化alipay参数(全局设置一次)
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey("<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->");
alipayConfig.setAlipayPublicKey("<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->");
defaultClient.setAlipayConfig(alipayConfig);
AlipayOpenAuthTokenApi api = new AlipayOpenAuthTokenApi();
AlipayOpenAuthTokenAppModel data = new AlipayOpenAuthTokenAppModel();
data.setCode("1cc19911172e4f8aaa509c8fb5d12F56");
data.setGrantType("authorization_code或者refresh_token");
data.setRefreshToken("201509BBdcba1e3347de4e75ba3fed2c9abebE36");
try {
AlipayOpenAuthTokenAppResponseModel response = api.app(data);
} catch (ApiException e) {
AlipayOpenAuthTokenAppDefaultResponse errorObject = (AlipayOpenAuthTokenAppDefaultResponse) e.getErrorObject();
System.out.println("调用失败:" + errorObject);
}
}
}
响应参数说明
参数 | 描述 | 示例 |
---|---|---|
user_id | 商家的 UID。 | 2088102150527498 |
auth_app_id | 商家应用的 APPID。 | 2021002120000002 |
app_auth_token | 应用授权令牌。 | 202201BB6891c77a23d9450c930e3edc0000003 |
app_refresh_token | 刷新的新令牌。 | 202201BB27bcdfc7db37443ea4cf1203b0000029 |
expires_in | 令牌有效时间,该字段已作废,app_auth_token 在没有重新授权、取消授权或刷新授权的情况下,永久有效。 | 31536000 |
re_expires_in | 刷新令牌的有效时间(从接口调用时间作为起始时间),单位为秒**。** | 32140800 |
响应示例
{
"alipay_open_auth_token_app_response": {
"code": "10000",
"msg": "Success",
"user_id": "2088102150000008",
"auth_app_id": "2021002120000002",
"app_auth_token": "202201BB6891c77a23d9450c930e3edc0000003",
"app_refresh_token": "202201BB6891c77a23d9450c930e3edc0000003",
"expires_in": 31536000,
"re_expires_in": 32140800
},
"sign": "***"
}
{
"alipay_open_auth_token_app_response":
{
"code":"10000",
"msg":"Success",
"tokens":
[
{
"app_auth_token":"201712BB_D0804adb2e743078d1822d536956X34",
"app_refresh_token":"201712BB_d5b15d53f7b4fd5aa649f176ca97X34",
"auth_app_id": "2017120501354689",
"expires_in": 31536000,
"re_expires_in": 32140800,
"user_id": "2088*******"
}
]
},
"sign":"***"
}
第六步:代商家应用调用接口
刷新授权
参数说明
参数 | 类型 | 描述 | 示例 |
---|---|---|---|
grant_type | String | 换码类型,必填参数,以下值二选一。authorization_code:使用 app_auth_code 换取 app_auth_token。refresh_token:刷新 app_auth_token。 | app_auth_token |
refresh_token | String | 刷新令牌,当 grant_type 传入 refresh_token 时,必须传入本参数。传入上次换取授权时返回的 app_refresh_token 值。 | 202201BB6891c77a23d9450c930e3edc00000013 |
请求示例
package com.java.sdk.demo;
import com.alipay.v3.ApiException;
import com.alipay.v3.ApiClient;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayOpenAuthTokenApi;
import com.alipay.v3.model.*;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AlipayOpenAuthTokenApiApp {
public static void main(String[] args) throws ApiException {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// 初始化alipay参数(全局设置一次)
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey("<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->");
alipayConfig.setAlipayPublicKey("<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->");
defaultClient.setAlipayConfig(alipayConfig);
AlipayOpenAuthTokenApi api = new AlipayOpenAuthTokenApi();
AlipayOpenAuthTokenAppModel data = new AlipayOpenAuthTokenAppModel();
data.setCode("1cc19911172e4f8aaa509c8fb5d12F56");
data.setGrantType("authorization_code或者refresh_token");
data.setRefreshToken("201509BBdcba1e3347de4e75ba3fed2c9abebE36");
try {
AlipayOpenAuthTokenAppResponseModel response = api.app(data);
} catch (ApiException e) {
AlipayOpenAuthTokenAppDefaultResponse errorObject = (AlipayOpenAuthTokenAppDefaultResponse) e.getErrorObject();
System.out.println("调用失败:" + errorObject);
}
}
}
响应示例
{
"alipay_open_auth_token_app_response": {
"code": "10000",
"msg": "Success",
"app_auth_token": "202201BB2ea9f4a51fb6413d99e2a13c00000029",
"app_refresh_token": "202201BB2f852040998c415d946f367000000X29",
"auth_app_id": "2021002122000000",
"expires_in": 31536000,
"re_expires_in": 32140800,
"user_id": "2088531800000001"
},
"sign": "******"
}
查询授权商家信息
调用接口查询
应用详情页查询
解除授权


修改于 2023-11-23 05:52:55