效果展示:
点击支付宝授权Demo
接下来我们开始动手写项目
首先需要在支付宝开放平台,注册账号,创建应用,配置应用,需要审核时间大约为1-2天。
网页/移动应用文档指引 - 支付宝文档中心 (alipay.com)
成功后的内容如下:
然后按照官方文档一步步操作
APP支付宝登录产品介绍 - 支付宝文档中心 (alipay.com)
可以下载支付宝SDK提供的Demo应用,然后用Android Stdio打开如下
这里需要对gradle版本进行配置
这里有已经配置好的项目文件(互联网的精神就是分享,可以直接下载):
配置好环境的AndroidStdio支付宝登录前端项目-Webpack文档类资源-CSDN文库
项目打开后需要先把之前创建应用获取的APPID PID 私钥填进去(找不到的可以在支付宝开放平台搜对应名字,会有教程告诉在哪),不然运行会出错。
TARGET_ID是自定义的,可以随便写一个。
前端代码运行成功后,获取本地支付宝中登录的用户的authCode通过http请求的方式发给后端(springboot)
创建一个spring boot项目:如何创建springboot项目_H `K的博客-CSDN博客_创建springboot项目
推荐使用spring initializr创建。
后端代码如下(也需要填对应的信息):
项目结构:
代码:
UserController.java:
@RestController
@RequestMapping("")
public class UserController
{
/**
*
* @param authCode 前端调用支付宝获取的authCode
* @return 结果
* @throws AlipayApiException
*/
@GetMapping("/login")
public String loginByAlipay(@RequestParam("authCode") String authCode) throws AlipayApiException
{
//创建应用获取的内容
String appId = "";
//私钥
String privateKey = "";
//这个不是和私钥一起生成的公钥,是应用加签时候生成支付宝公钥,搞错了会报错
String alipayPublicKey = "";
//根据上述信息获取accessToken
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("UTF8");
alipayConfig.setSignType("RSA2");
AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
request.setCode(authCode);
request.setGrantType("authorization_code");
// request.setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");
AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
System.out.println(response.getBody());
String accessToken = response.getAccessToken();//拿到accessToken
String refreshToken = response.getRefreshToken();
//用accessToken获取支付宝用户信息
AlipayClient alipayClient1 = new DefaultAlipayClient(
"https://openapi.alipay.com/gateway.do",
appId,
privateKey,
"json",
"GBK",
alipayPublicKey,
"RSA2");
AlipayUserInfoShareRequest request1 = new AlipayUserInfoShareRequest();
AlipayUserInfoShareResponse response1 = alipayClient.execute(request1,accessToken);
if(response.isSuccess()){
return response1.toString;
} else {
return "调用失败";
}
}
}
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.11</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>ScanRecord</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ScanRecord</name>
<description>ScanRecord</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 支付宝 SDK-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.34.0.ALL</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
先运行前端项目获取authCode,然后运行springboot项目,前端没有写请求,所以想要测试可以在本地运行springboot项目然后直接浏览器输入:http://localhost:端口号/login?authCode=值,这里的端口号和值换成对应的你的内容,这只是一种最快捷的方法,还有其他种类的方法,想了解的可以去搜索Android写get请求。
运行截图:
然后就可以从中提取出自己想要的信息,反馈给前端展示出来了,其他的内容并不是重点,这边就不写出来了,请大家多多包含啦。