支付宝获取授权码及token,openId(userID)
1 前端获取支付宝授权码:
1.1 get-auth-code.axml
详情请查看支付宝官方文档:my.getAuthCode官方文档
<view class="page">
<view class="page-section">
<button type="primary" onTap="getAuthCode">
获取授权码
</button>
</view>
</view>
1.2 get-auth-code.js
Page({
onLoad() {},
data: {},
getAuthCode: () => {
my.getAuthCode({
scopes: 'auth_user',
success: ({ authCode }) => {
my.alert({
content: authCode,
});
console.log(authCode);
},
});
},
});
2. java获取支付宝token及openId(user_id)
对应支付宝接口:alipay.system.oauth.token
官方文档:alipay.system.oauth.token官方文档
2.1 pom依赖
<!-- 支付宝sdk -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.39.271.ALL</version>
</dependency>
2.2 相关后端代码
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.AlipayConfig;
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
import com.alipay.api.FileItem;
import java.util.Base64;
import java.util.ArrayList;
import java.util.List;
/**
* 根据授权码获取Token.openId
* @author
* 范文成功返回示例(user_id==open_id,开放平台开启openid即user_id会变为open_id):
* {
* "alipay_system_oauth_token_response": {
* "access_token": "",
* "alipay_user_id": "",
* "auth_start": "",
* "expires_in": 1296000,
* "re_expires_in": 2592000,
* "refresh_token": "",
* "user_id": ""
* },
* "sign": ""
* }
*
*/
public class AlipaySystemOauthToken {
public static void main(String[] args) throws AlipayApiException {
// 初始化SDK
AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
// 构造请求参数以调用接口
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
// 设置刷新令牌 当grantTypr= authorization_code此参数可不填
// request.setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");
// 设置授权码
request.setCode("支付宝小程序前端获取的授权码(示例:f8fecf86730c4eb2b0c8bd2426f3DX60")");
// 设置授权方式
request.setGrantType("authorization_code");
AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
System.out.println(response.getBody());
System.out.println("token值为:" + response.getAccessToken());
if (response.isSuccess()) {
System.out.println("调用成功");
} else {
System.out.println("调用失败");
// sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
// String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
// System.out.println(diagnosisUrl);
}
}
private static AlipayConfig getAlipayConfig() {
//应用私钥
String privateKey = "应用私钥";
//支付宝公钥
String alipayPublicKey = "支付宝公钥 ";
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
alipayConfig.setAppId("支付宝appId");
alipayConfig.setPrivateKey(privateKey);
alipayConfig.setFormat("json");
alipayConfig.setAlipayPublicKey(alipayPublicKey);
alipayConfig.setCharset("UTF-8");
alipayConfig.setSignType("RSA2");
return alipayConfig;
}
}
3. 总结
以上内容,仅供各位兄弟姐妹参考,如发现问题,请各位多提出宝贵意见。