前言
之前发布了一篇无需营业执照开通支付宝当面付的功能,这一期我们将在SpringBoot中集成支付宝的当面付功能,我们将全程使用沙箱环境来进行对接和支付演示。
无需营业执照,个人系统实现对接支付功能
忠告:本教程仅用于代码对接支付宝当面付,请勿违法违规开展线上收款业务!
本次接入和测试需要使用到域名以及需要能够在公网的环境下可以访问到咱们的项目。
登录沙箱控制台
我们访问下方的沙箱控制台,拿到我们需要的参数,如APPID
,我们还需要配置一些参数信息。
https://open.alipay.com/develop/sandbox/app?is_switch_sandbox=true
创建项目
我们需要创建一个SpringBoot的项目,然后依次引入需要的依赖:
在pom.xml
中引入需要的依赖:
<!-- springboot的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 支付宝的SDK -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-easysdk</artifactId>
<version>2.2.3</version>
</dependency>
<!-- hutool -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.26</version>
</dependency>
我们需要配置支付宝的参数,在application.yml
中加入以下配置:
我们需要先创建支付宝配置类,稍后我们再去补充支付宝配置中的每一个具体的参数该如何对应,我们创建一个AlipayConfig
类:
配置参数
接下来需要下载密钥工具来生成密钥:
https://opendocs.alipay.com/common/02kipk?pathHash=0d20b438
首次打开密钥工具界面如下:
我们点击生成密钥
,他会生成一个应用公钥以及一个应用私钥:
我们需要将应用公钥复制下来,粘贴到支付宝的沙箱应用控制台中:
点击保存后我们将得到支付宝公钥:
我们需要将应用私钥以及支付宝公钥复制填充到项目的apllication.yml
配置中,即privateKey
和publicKey
:
关于appid参数和支付宝网关参数则是在沙箱控制台获取的:
接下来还剩下notifyUrl
参数,它是用于自己的服务接收支付宝发送过来的支付回调信息用的,需要同步在沙箱控制台中同步设置。
假设,我们的SpringBoot项目绑定了一个可在公网访问到的域名:
http://server-alipay.icu
那么我们可以新增一个用于接收支付宝支付回调的POST
接口,例如接口地址为/pay/callback
,那么完整的回调地址则是:
http://server-alipay.icu/pay/callback
同样在沙箱控制台中也要配置该回调地址:
然后我们编写用于接收回调的Controller:
创建订单
我们配置完了所需要的基本参数以及用于处理支付结果的回调方法,接下来我们就要去编写创建订单的接口:
创建订单成功后,接口实际上会返回一个url,将该url生成为二维码通过支付宝扫码即可进行支付,如果是在手机中进行访问该url则会自动跳转支付宝打开到支付界面:
支付测试
支付宝的沙箱环境提供了一个仅支持安卓手机的支付宝沙箱客户端,并且提供沙箱的商家账户和买家账户:
https://open.alipay.com/develop/sandbox/tool
我们登录买家账户,然后在浏览器中直接访问创建订单时返回的支付url,理论上会直接打开支付宝APP进行支付:
获取支付状态
如果我们的支付回调配置的正确,那么在用户支付成功之后,我们会获取到该订单的支付状态:
除了被动获取回调信息,我们还可以主动的去查询订单的付款状态:
退款操作
到此,SpringBoot对接支付宝当面付的创建订单,获取订单的支付状态以及订单退款操作均已完成,由于本教程使用的是沙箱环境,大家根据以上操作,将密钥的配置以及支付宝网关的配置换成正式环境即可,以上的代码均无需进行改动即可使用正式的当面付功能。
PC端实现扫码支付功能,仅需将创建订单返回的支付URL将其生成二维码即可在支付宝中进行扫码支付。
欢迎大家关注我的公众号,将会为大家推荐更优质的内容!