Spring Boot 对接支付宝支付

1. 前期准备

1.1 注册支付宝开发者账号登录 —> 注册

拉到网站下面自行了解文档:
在这里插入图片描述

ps : 在电脑网站支付文档中官方提供了demo代码下载, 可以下载下来跑跑看

1.2 进入沙箱说明文档

因为我们没有商户资格, 因此要借助沙箱环境模拟一个实际上的测试环境, 待项目上线直接将密钥替换即可

在这里插入图片描述
登陆沙箱环境

在这里插入图片描述
下载沙箱密钥生成工具

在这里插入图片描述
使用上面下载的生成工具, 生成公钥私钥填写到沙箱环境中
到此,准备过程已完成

2. 编码

1.配置类, 也可以写到Spring boot配置文件中进行加更灵活

/**
 * 支付宝支付配置文件
 */
public class AlipayConfig {

	// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
	public static String app_id = "是沙箱环境中的APPID";
	
	// 商户私钥,您的PKCS8格式RSA2私钥
    public static String merchant_private_key = "在沙箱环境中查看";
	
	// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
    public static String alipay_public_key = "在沙箱环境中查看";

	// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
	public static String notify_url = "http://localhost:8080/自定义支付完返回的页面路径";

	// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
	public static String return_url = "http://localhost:8080/自定义支付完返回的页面路径";

	// 签名方式
	public static String sign_type = "RSA2";
	
	// 字符编码格式
	public static String charset = "utf-8";
	
	// 支付宝网关(这是测试环境的网关 注意看下面的dev)
	public static String gatewayUrl = "https://openapi.alipaydev.com/gateway.do";

}

2.支付业务Service

/**
  *@param out_trade_no 商户订单号(唯一,可用时间戳)
  * @param total_amount 金额
  * @param subject 订单名
  * @param body  商品描述
  * @return 返回的是一段js脚本字符串
  */
public String submitPay(String out_trade_no, String total_amount, String subject, String body) {

    //获得初始化的AlipayClient
    AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_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);

    //直接从传参里拿, 都是字符串
    alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
                                + "\"total_amount\":\""+ total_amount +"\","
                                + "\"subject\":\""+ subject +"\","
                                + "\"body\":\""+ body +"\","
                                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

    //发送支付请求(返回的js脚本)
    String result;
    try {
        result = alipayClient.pageExecute(alipayRequest).getBody();
    } catch (AlipayApiException e) {
        log.error("支付失败: {}", e.getErrMsg());
        return null;
    }

    return result;
}

3. Controller 省略

4. 前端小朋友请求获取到返回的脚本直接执行

document.write(后端返回的字符串)

至此用户就完成了从你的网站–>支付宝支付页面, 支付完–>你的网站页面的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值