SpringBoot整合支付宝付款(沙箱环境)
由于最近的一个SpringBoot项目中需要整合支付宝付款,所以将过程整理在此,方便查阅。测试前提需要一个支付宝提供的沙箱环境,如果你还没有这种测试账号,可以看姊妹篇获得支付宝沙箱账号
一、引入依赖
<dependency><groupId>com.github.1991wangliang</groupId><artifactId>alipay-api</artifactId><version>1.0.0</version></dependency>
二、AliPayConfig配置类
该类作为AliPay的配置类,其中包含的信息已注释在其中,都可以在支付宝开放平台中找到,其中的notify_url与return _url字段是用于支付后的回调接口,这里就简单以百度为例。在实际的操作中我是做了一个内网映射,如果有感兴趣的小伙伴可以看我的另一篇文章《五分钟免费获得自己的永久域名,免费!永久!》。
package com.lsnu.travel.config;import org.springframework.stereotype.Component;/*** AliPay配置** @author Jenson* @since 2020/9/5 14:12**/
public class AliPayConfig {//商品appIdpublic static String APPID="";//生成的私钥public static String RSA_PRIVATE_KEY="";//服务器异步通知页面路径 需http://或者https://格式的完整路径,不能加?id=123这类自定义参数,且需要公网地址(这里以百度为例)public static String notify_url="https://www.baidu.com";public static String return_url="https://www.baidu.com";//请求网关地址public static String URL="";//编码public static String CHARSET="";public static String FORMAT="json";//支付宝公钥public static String ALIPAY_PUBLIC_KEY="";//RSA2public static String SIGNTYPE="RSA2";}
三、前端页面
写了一个简单的表单,用于付款提交。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"/><title>Title</title>
</head>
<body><form th:action="@{/pay}" method="post">单号:<input type="text" name="out_trade_no"/><br/>名称:<input type="text" name="subject"/><br/>金额:<input type="text" name="total_amount"/><br/>描述(可为空):<input type="text" name="body"/><br/>超时(秒可为空):<input type="text" name="time_out_express"/><br/>产品码:<input type="text" name="product_code"/><br/><br/><input type="submit" value="付款"></form>
</body>
</html>
四、后端代码
这里只是做了简单地测试功能,没有像失败补偿机制,幂等性等等很详细的步骤。
@Autowiredprivate AliPayConfig aliPayConfig;@PostMapping("/pay")public String pay(String out_trade_no,String subject,String total_amount,String body,String time_out_express,String product_code) throws AlipayApiException {//1.封装Rsa签名方式AlipayClient client = new DefaultAlipayClient(aliPayConfig.URL,aliPayConfig.APPID, aliPayConfig.RSA_PRIVATE_KEY,aliPayConfig.FORMAT, aliPayConfig.CHARSET,aliPayConfig.ALIPAY_PUBLIC_KEY, aliPayConfig.SIGNTYPE);//2.创建Request请求AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();//封装传入参数AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();model.setOutTradeNo(out_trade_no); //订单号model.setBody(body); //描述model.setProductCode(product_code); //商品码model.setSubject(subject); //主题model.setTotalAmount(total_amount); //价格model.setTimeoutExpress(time_out_express); //超时时间//设置请求参数request.setBizModel(model);//设置异步回调地址request.setNotifyUrl(aliPayConfig.notify_url);//设置同步回调地址request.setReturnUrl(aliPayConfig.return_url);//生成表单String form = client.pageExecute(request).getBody();//如果支付失败的补偿机制log.info("确认订单[{}]付款成功",out_trade_no);//修改订单状态 ...return form;}
五、测试过程
进入index.html,输入相关数据后,点击浏览器付款就行。
然后选择我们申请的沙箱账号登录。
然后按照平常步骤操作就好,成功后会得到下面的结果
再次到沙箱中查看具体的账号信息,发现159.02已经从买家账户划到了商家账户中:
不过沙箱环境不是特别稳定,过程可能出现付款失败,多试几次就好。
SpringBoot整合支付宝付款(沙箱环境)相关推荐
- springboot整合支付宝沙箱支付
springboot整合支付宝沙箱支付 1.简介 支付宝开发平台地址:https://open.alipay.com/develop/sandbox/app 对于学生来说,目前网上确实没有比较统一而且 ...
- SpringBoot整合支付宝支付接口 详解 (有源文件)
目录 1.简介与支付接口运行原理 2.基本配置说明 3.支付接口实现 4.整合后沙箱测试 1.简介与支付接口运行原理 简介: 现在与钱有关的项目都离不开支付,现在就来介绍一下如何对接支付宝接口.演示项 ...
- SpringBoot整合支付宝之电脑网站支付
SpringBoot整合支付宝之电脑网站支付 一.支付宝介绍 1.2 过程分析 1.3 对接支付宝的准备工作 1.4 申请步骤: 2.支付功能实现 2.1 思路分析 2.2 编写支付宝支付接口 2.2 ...
- 支付宝支付—沙箱环境使用
前言 支付宝支付-沙箱环境使用「本文」 支付宝支付-支付宝PC端扫码支付 支付宝支付-手机浏览器H5支付 支付宝提供的沙箱环境,入门门槛非常低,不需要商家认证那一套,这一点对开发者是非常友好的,可以直 ...
- springboot整合支付宝微信支付案例+代码
springboot支付宝微信支付 每天多学一点点~ 之前写好了一篇,不下心被覆盖的,我的锅....下次写博客记得导出来!!!! 话不多说,这就开始吧- 文章目录 springboot支付宝微信支付 ...
- 支付宝支付(沙箱环境)
参考于:https://www.cnblogs.com/xifengxiaoma/p/10107635.html 1.这里我使用的是支付宝沙箱环境,先看一下实现效果 订单待支付页面: 当点击" ...
- 项目支付接入支付宝【沙箱环境】
前言 订单支付接入支付宝,使用支付宝提供的沙箱机制模拟为订单付款.我这里主要记录一下沙箱环境如何接入到系统中,具体细节的实现.按照官方文档来就可以了. 1.使用步骤 这里有几个重要数据要拿到,一个是支 ...
- SSM集成支付宝(沙箱环境)
1. 加入依赖 <!--支付宝--><dependency><groupId>com.alipay.sdk</groupId><artifactI ...
- Java 接入支付宝支付 - 沙箱环境
Table of Contents 一.沙箱环境 二.下载 Java 版 dome 三.生成RSA2密钥 四.代码如下 4.1 AlipayConfig 4.2 AlipayVo 4.3 Alipay ...
最新文章
- TFS2008 基本安装
- Hadoop 数据类型与文件结构剖析 Sequence, Map, Set, Array, BloomMap Files
- 如何画功能稳定,美观的PCB?
- mysql 讲义_MySQL 讲义
- java代码顺序执行命令_将小程序安装到Java卡的APDU命令的顺序是什么?
- devops 开源_没有开源,就不会有DevOps
- 中国物流领域首次!菜鸟路径规划算法入围全球最高工业奖项
- sql 联合_SQL联合,SQL联合全部
- 如何利用VUE动态添加class样式
- 《转》牛顿法与拟牛顿法学习笔记
- c#进阶一:使用ILDASM来查看c#中间语言
- php开源代码推荐,非常好用的源代码网站推荐,用这些开源代码就够了
- flink 部署模式和运行时架构(会话模式、单作业模式、应用模式,JobManager、TaskManager,YARN 模式部署以及运行时架构)
- 累计独立访客(UV)不低于 1000 是什么意思,怎么推广呢解决1000呢?
- A64 base instruction -- orr
- HTML中 <img>标签的用法
- 什么样的人适合当领导
- 两个PDF比较标出差异_[连玉君专栏]如何检验分组回归后的组间系数差异?
- 如何把1个pdf拆分几个pdf
- 2022LOL微博杯模糊问题,1080p高清看微博杯the shy比赛直播