在现代应用开发中,在线支付已经成为了一个必不可少的功能。支付宝作为国内最受欢迎的支付方式之一,提供了强大的API支持。在本文中,我们将介绍如何在Spring Boot中实现支付宝沙箱支付,提供详细步骤与代码示例,帮助你快速上手。
一、前期准备
- 注册支付宝开发者账号:访问 支付宝开放平台,注册并登录你的开发者账号。
- 创建应用:在开发者控制台中创建一个新应用,获取到
APP ID
。 - 获取密钥:在应用管理页中,添加支付相关的公钥和私钥对。注意:沙箱环境和正式环境所用的密钥是不同的。
- 下载SDK:支付宝提供了Java SDK,可以直接下载并引入到你的Spring Boot项目中。
二、引入依赖
在你的Spring Boot项目中,添加支付宝SDK的依赖。可以在pom.xml
中加入以下内容:
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java-core</artifactId>
<version>3.6.3</version>
</dependency>
三、配置参数
在application.yml
或application.properties
中,配置支付宝的相关参数:
alipay:
appId: your_app_id
privateKey: your_private_key
publicKey: your_public_key
gatewayUrl: https://openapi.alipaydev.com/gateway.do
四、创建支付请求
接下来,我们来创建支付宝支付请求。在你的服务类中,可以添加以下方法:
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class AlipayService {
@Value("${alipay.gatewayUrl}")
private String gatewayUrl;
@Value("${alipay.appId}")
private String appId;
@Value("${alipay.privateKey}")
private String privateKey;
@Value("${alipay.publicKey}")
private String publicKey;
public String aliPay(String orderNo, String totalAmount, String subject) throws Exception {
AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, privateKey, "json", "UTF-8", publicKey, "RSA2");
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.setReturnUrl("http://localhost:8080/return");
request.setNotifyUrl("http://localhost:8080/notification");
// 设置请求参数
StringBuilder sb = new StringBuilder();
sb.append("{" +
"\"out_trade_no\":\"" + orderNo + "\"," +
"\"total_amount\":\"" + totalAmount + "\"," +
"\"subject\":\"" + subject + "\"," +
"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"" +
"}");
request.setBizContent(sb.toString());
// 请求支付宝的支付页面
AlipayTradePagePayResponse response = alipayClient.pageExecute(request);
if(response.isSuccess()){
return response.getBody(); // 返回HTML内容
} else {
throw new Exception("支付请求失败:" + response.getMsg());
}
}
}
五、创建支付接口
在控制器中,我们创建一个支付接口,接受前端请求并调用支付服务:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PaymentController {
@Autowired
private AlipayService alipayService;
@GetMapping("/pay")
public String pay(@RequestParam String orderNo, @RequestParam String totalAmount, @RequestParam String subject) {
try {
return alipayService.aliPay(orderNo, totalAmount, subject);
} catch (Exception e) {
return "支付失败: " + e.getMessage();
}
}
}
六、测试支付
启动你的Spring Boot应用,访问 http://localhost:8080/pay?orderNo=123456&totalAmount=0.01&subject=测试支付
,如果一切顺利,会返回支付宝的支付页面。
七、总结
通过以上步骤,你已经成功地在Spring Boot项目中集成了支付宝沙箱支付。可以在沙箱中进行多次测试,确保支付流程的正确性。在正式上线之前,记得切换到正式环境,并使用合适的密钥。
在实际项目中,请继续完善异常处理和日志记录,以确保支付流程的安全性与稳定性。希望本文对你有所帮助!