SpringBoot集成支付宝支付(沙箱环境)

项目结构:

在这里插入图片描述

项目依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>3.0.0</version>
        </dependency>

配置信息类:

package com.learn.alipay;

/**
 * @author honor
 */
public class AliPayConfig {
    // 应用ID,您的APPID
    public static String APP_ID = "2021000117610611";

    // 商户私钥 就是生成的运用私钥
    public static String APP_PRIVATE_KEY = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCXJ4bpE0Ppa2muWjmUcKKcnbxmU8QwMt0EulqvtaiAggvrQgANViP3B/BQGhlbypagoJjKIhWkmhIB36FngiUnGtnw2PkSLvhlHlFP+p3z1pGX4qaOeEqcUhkL8ZX14eBNWolFb7qKtwABj3grHMkzR59H2bVnAQHVJFTYT946rKFZhoooReSXzviixp1EI1CDo7LGbH96SPlyrb1IInG2bV7el9OrKvVnuCE1mQwnzfn4Oc945yuRvg7obVVTyiFoAAfiQqaQ1/oSgzU90cVNJgIZ15Tzi5Sa8OJR79zo9RfdMCr7Xmj/bLuPz2CqwEPkv5K0XjPDsvdbtFk7xP0DAgMBAAECggEALAk696pCLb26Uy47+i/6X/BgU9txm60l0NvN0cT1q0K34DkhNMF0xuJMM7n2y1QxH+jJupHFhmfQeTVCm5pB4qui9NTxc0e13BfCDq/v1nsbfYlthrIq4nHUlDM0wialJ0QKG+2aBhGccdfvZXgEceka0V7ux2x2sTbddQuHrcXscbSdlzHNrxYHxwy4Ya7auBzgTLyY4PuKCkdhPMV7zpgNFF6PRLRZhOE22VchDjCbz6G42Mf7W4EXF0eWnqF0hsNrfrooOMALRg1aNNjDqWF1OxCH9Jk0HQccJ6/qvkrTGV7kwV51zqbq/2hVmdBqlcKNA+BeoLFh3xXFGYI32QKBgQDS902vShBoHsQE80Vc3vshxGUVbyDfM5c7ZAygbeXgsTy9jiQszKYpH0tELw1n+In/jNEOYMPZpLJeu3+/x6NaXw6mxpbIsWzn+L0vtYjdVDdIdDzuLMRznymKDwXcGAOTziaJgmPdN6vddd3WxpCdAE0hgSrgydtcrKGVwG6J1wKBgQC3a6/32GlPWy/W22+4r9LBJmleC/hoTZt1Oh6UD70MUdiA3HM6RhnhD/Q/hvD5YAj/A+sucZJuQ5ognElIgHjYmLfa9WHy4meZAuCo8nM98WHWqxdYmxQwVSde7YtE/kuV/wBuXvbUYiac05mzzY2YyOREJKk24p6LntBrBm24tQKBgFr/u62px+vxoWH1QW0u7aqCGYwmVEqS6V//5wZogSjrqqSlJGuClwXT7tZpaWH4riXiKucFzFUcGqiMPi2OQqMfr6U2siG9jpl9DLYAmxnFUtdY9FNUUiUBeZyIoGFwplJiMPNNoB/y/JpZVihnnEdsstiJ6+HskEeoW0bKK6QfAoGAYjGPcgL0Vdx+Xur5A4l1LZwvun50DPrHJ9nmduN6FLdYTZw3P9I5lohg/QVzyj1Ec6mYZTO97bPZNm4UuXC1wVb4zoqhVlMonPyyYx/w3A92jmLny7Kx+zILMsG+1j/BHVr30x6Zy5eEDl8loOGBVXLu6SArSsvFjv+FmlZFtSUCgYBJKx2tIhfoBlowAIs6cEFV/d3UCw34yfrITc4iQJ/R8LVmhW0BRGSB9UPIjg7dpiE3kc3KDk135v6ssrP4j0wzjPLkHDRgGBYn12jv0aX31KK/yVhnOqG93UPXA59daw+3r+wPv75wcF4h3EOBjDVlxk3CrErLHWsY484i+oQ8KQ==";

    // 支付宝公钥
    public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp4Ypy2nDfxgtUL23h+2mlaHJDCvT4IoHFcbQ4Jck/E/YYc6HgLIWgtbsalxpXUioz3v/t5k+ULw+gvn8X0QcGBA5Q5SJFlNc+aVrB8P/TACOfoKrS11IQ9/ovjKVfPRswBVJJOsIOnKXy6ts8U3CX+UI6te8u+2VC8q5X7GIFstFaUxqGVaePLuLmjO3/7KghYqzO+aeSkCxV3bbwMh+mN/CpylQhWHXqCL0e7PNy7ZsS2Hagn0ZoRgKT9VMa+IeNZWEDUkxyL9otcQs27+GiOuyji73IViArnjuXRY647ORhRJpjVojx3C4Ut6Pvrh5gn9PshAgpwC8MdhZulH28QIDAQAB";

    // 服务器异步通知页面路径  需http://格式的完整路径,必须外网可以正常访问
    public static String notify_url = "http://localhost:8080/notify_url";

    // 页面跳转同步通知页面路径 需http://格式的完整路径,必须外网可以正常访问(其实就是支付成功后返回的页面)
    public static String return_url = "http://localhost:8080/return_url";

    // 签名方式
    public static String sign_type = "RSA2";

    // 字符编码格式
    public static String CHARSET = "UTF-8";

    // 支付宝网关,这是沙箱的网关
    public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";


}

支付宝订单支付接口

package com.learn.alipay;

import com.alipay.api.AlipayApiException;
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.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * @author honor
 */
@Controller
public class PayController {

    //支付宝支付确认付款跳转页面
    @RequestMapping("/order")
    public  void oderConfirm(HttpServletRequest request, HttpServletResponse response) {
//虚拟一个订单,将其信息定义如下
        String title = "支付订单";
        String total = "300";
        String message = "这是一个新的订单";
        //生成订单号
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        String orderSn = simpleDateFormat.format(Calendar.getInstance().getTime());

        AlipayClient alipayClient=new DefaultAlipayClient(
                AliPayConfig.gatewayUrl,
                AliPayConfig.APP_ID,
                AliPayConfig.APP_PRIVATE_KEY,
                "json",
                AliPayConfig.CHARSET
                ,AliPayConfig.ALIPAY_PUBLIC_KEY,
                AliPayConfig.sign_type);
        //设置请求参数
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        alipayRequest.setReturnUrl(AliPayConfig.return_url);
        alipayRequest.setNotifyUrl(AliPayConfig.notify_url);
        //商户订单号,商户网站订单系统中唯一订单号,必填
        String out_trade_no = orderSn;
        //付款金额,必填
        String total_amount = total;
        //订单名称,必填
        String subject = title;
        //商品描述,可空
        String body = message;
        alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\"," + "\"total_amount\":\""
                + total_amount + "\"," + "\"subject\":\"" + subject + "\"," + "\"body\":\"" + body + "\","
                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

        AlipayTradePagePayResponse alipayResponse = null;
        try {
            alipayResponse=alipayClient.pageExecute(alipayRequest);
            response.setContentType("text/html;charset=" + AliPayConfig.CHARSET);
            response.getWriter().write(alipayResponse.getBody());//直接将完整的表单html输出到页面
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        catch (Exception e){
            System.out.println("error");
            e.printStackTrace();
        }

    }


    @GetMapping("/notify_url")
    public String notify_url(){
        return "notify_url";
    }

    @GetMapping("/return_url")
    public String return_url(){
        return "return_url";
    }
}


需要的页面:

notify_url.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>支付宝异步通知!</h1>
</body>
</html>





return_url.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>支付成功!</h1>

</body>
</html>

测试:

  1. 浏览器输入:localhost:8080/order即可出现下面页面
    在这里插入图片描述

  2. 使用沙箱支付宝进行扫码支付
    在这里插入图片描述

  3. 进行手机支付
    在这里插入图片描述支付密码默认111111

  4. 出现这个页面说明支付成功
    在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缘不易

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值