接入指南
获取用户授权
网页&移动应用
拼接授权 URL
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL
参数说明
参数 | 必填 | 描述 |
---|---|---|
app_id | 是 | 开发者应用的 APPID。 |
scope | 是 | 接口权限值,付款码解码查询 UID 场景支持:auth_paycode_getuid :通用授权。一般场景请使用该值即可,用户需通过授权链接或小程序先完成授权。auth_ecard :用于开取电子会员卡。已集成商家会员卡的商家,并且用户已领取会员卡,已领卡用户可不需要再次授权,直接扫付款码获取UID。**说明:**开发者需根据获取用户授权用途,选择 scope 获取用户授权码,选不同的scope 用户侧授权时展示的授权文案有所不同。 |
redirect_uri | 是 | 回调页面,是经过转义的 URL 链接(URL 必须以 http 或者 https 开头)。比如: http%3A%2F%2Fexample.com 在请求之前,开发者需根据 接入准备 指引,配置授权回调地址。 |
state | 否 | 商家自定义参数,用户授权后,重定向到 redirect_uri 时会原样回传给商家。为防止 CSRF 攻击,建议开发者请求授权时传入 state 参数,该参数要做到既不可预测,又可以证明客户端和当前第三方网站的登录认证状态存在关联,并且不能有中文。 |
获取 auth_code
auth_code
、app_id
、scope
等,需要注意的是支付宝仅保证 auth_code、app_id 以及 scope 参数的有效性。支付宝请求开发者回调页面示例如下:http://example.com/doc/toAuthPage.html?app_id=2014101500013658&source=alipay_wallet&scope=auth_user&auth_code=ca34ea491e7146cc87d25fca24c4cD11
小程序应用
示例代码
// .js
my.getAuthCode({
scopes: 'auth_paycode_getuid',
success: (res) => {
my.alert({
content: res.authCode,
});
},
});
auth_paycode_getuid
:通用授权。一般场景请使用该值即可,用户需通过授权链接或小程序先完成授权。auth_ecard
:用于开取电子会员卡。已集成商家会员卡的商家,并且用户已领取会员卡,已领卡用户可不需要再次授权,直接扫付款码获取 UID。**说明:**开发者需根据获取用户授权用途选择 scope 获取用户授权,不同的 scope 用户侧授权时展示的授权文案有所不同。
付款码支付
查询用户 ID
注意事项
请求示例
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.AlipayUserTwostageCommonApi;
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 AlipayUserTwostageCommonApiUse {
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);
AlipayUserTwostageCommonApi api = new AlipayUserTwostageCommonApi();
AlipayUserTwostageCommonUseModel data = new AlipayUserTwostageCommonUseModel();
data.setDynamicId("286861260475412123");
data.setSenceNo("20170718xxxxxxxx");
data.setPayCheckStrategy("1");
data.setPayPid("2088702093900999");
try {
AlipayUserTwostageCommonUseResponseModel response = api.use(data);
} catch (ApiException e) {
AlipayUserTwostageCommonUseDefaultResponse errorObject = (AlipayUserTwostageCommonUseDefaultResponse) e.getErrorObject();
System.out.println("调用失败:" + errorObject);
}
}
}
后续支付
注意事项
请求示例
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",APP_ID,APP_PRIVATE_KEY,"json",CHARSET, ALIPAY_PUBLIC_KEY,"RSA2"); //获得初始化的AlipayClient
AlipayTradePayRequest request = new AlipayTradePayRequest(); //创建API对应的request类
JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", "20210817010101001");
bizContent.put("scene", "bar_code");
bizContent.put("total_amount", 0.01);
bizContent.put("auth_code", "28763443825664394"); //用户在支付宝客户端内出示的付款码,使用一次即失效,需要刷新后再去付款
bizContent.put("subject", "测试商品");
bizContent.put("subject", "Iphone6 16G");
bizContent.put("store_id", "NJ_001");
// 扩展信息
JSONObject extendParams = new JSONObject();
extendParams.put("DYNAMIC_TOKEN_OUT_BIZ_NO", "20170718xxxxxxxx"); //必填, DYNAMIC_TOKEN_OUT_BIZ_NO value 值需与 alipay.user.twostage.common.use 接口 sence_no 一致
bizContent.put("extend_params", extendParams);
request.setBizContent(bizContent.toString());
AlipayTradePayResponse response = alipayClient.execute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
重要入参说明
dynamic_id
值一致。DYNAMIC_TOKEN_OUT_BIZ_NO
,value 需与 alipay.user.twostage.common.use 接口 sence_no
值一致。