在这里为了方便我使用沙箱环境做演示,各位也可以申请自己的沙箱,地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info
在这里我就直接进入主题,[]配置rsa密钥这些基础的事情就不做重复了.不懂的直接参考官方的文档说明: https://docs.open.alipay.com/284/106001/
下图引入官方的流程图
其实步骤是非常简单的
第一步: 拼接授权URL去获取auth_code
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,有了这两个参数就可以调用支付宝的绝大部分接口了.