在现代应用开发中,在线支付已经成为了一个必不可少的功能。支付宝作为国内最受欢迎的支付方式之一,提供了强大的API支持。在本文中,我们将介绍如何在Spring Boot中实现支付宝沙箱支付,提供详细步骤与代码示例,帮助你快速上手。

一、前期准备

  1. 注册支付宝开发者账号:访问 支付宝开放平台,注册并登录你的开发者账号。
  2. 创建应用:在开发者控制台中创建一个新应用,获取到 APP ID
  3. 获取密钥:在应用管理页中,添加支付相关的公钥和私钥对。注意:沙箱环境和正式环境所用的密钥是不同的。
  4. 下载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.ymlapplication.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项目中集成了支付宝沙箱支付。可以在沙箱中进行多次测试,确保支付流程的正确性。在正式上线之前,记得切换到正式环境,并使用合适的密钥。

在实际项目中,请继续完善异常处理和日志记录,以确保支付流程的安全性与稳定性。希望本文对你有所帮助!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部