支付宝通过网页授权获取assceToken和userId

在这里为了方便我使用沙箱环境做演示,各位也可以申请自己的沙箱,地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info

在这里我就直接进入主题,[]配置rsa密钥这些基础的事情就不做重复了.不懂的直接参考官方的文档说明: https://docs.open.alipay.com/284/106001/

下图引入官方的流程图

其实步骤是非常简单的

第一步: 拼接授权URL去获取auth_code

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

redirect_uri这个参数需要在沙箱的授权回调地址对应上

拼接完了之后直接访问即可,可以看到支付宝的登录页面

这里有一个坑需要注意一下,这个是沙箱环境的页面,不能直接使用自己的支付宝登录,而需要使用沙箱环境提供的支付宝去登录,不然会出现"码失效,请重新刷新"

然后你登录进去之后,在地址栏上就有auth_code这个值了

第二步:换取 access_token 和 userId

得到 auth_code 后,开发者通过 alipay.system.oauth.token 接口,使用 auth_code 换取 access_token 及用户的 user_id。auth_code 作为换取 access_token 的凭证,每次用户授权完成后,返回参数中的 auth_code 将不一样,auth_code 只能使用一次,24 小时内未被使用自动过期。

直接将alipay的maven依赖加入到项目中

<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.7.12.ALL</version>
</dependency>

然后调用下面这段代码即可

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2"); 
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
request.setCode("2e4248c2f50b4653bf18ecee3466UC18");
request.setGrantType("authorization_code");
try {
    AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);
    System.out.println(oauthTokenResponse.getAccessToken());
} catch (AlipayApiException e) {
    //处理异常
    e.printStackTrace();
}

这样就可以获取到access_token 和 userId,有了这两个参数就可以调用支付宝的绝大部分接口了.

发布了60 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42214548/article/details/103257676