支付宝沙箱支付--SpringBoot项目

简介: 练手demo

1. 打开蚂蚁金服开放平台

https://open.alipay.com/platform/home.htm

2 . 用自己的支付宝扫一扫登录

3. 点击进入我的开放平台

1.png

(1)点击开发中心-研发服务-沙箱

2.png

(2)进入沙箱应用

其中APPID,支付网关默认生成好了,网关有dev字样,表明是用于开发测试。

其中的密钥需要自己生成

3.png

a. 设置密钥

4.png

点击“生成方法”,打开界面如下图

5.png

b. 下载密钥生成工具,解压打开后,双击脚本文件 “RSA签名验签工具.bat” 即运行RSA签名验签工具,选择PKCS8(Java适用)和2048位生成密钥:

6.png

如果没有设置过,此时显示文本是“设置应用公钥”,我这里是已经设置过得,设置过得可以永久使用了。

沙箱账号

提供了商家账号与买家账号进行测试使用

17.png

项目展示效果

商品列表

15.png

确认订单

16.png

生成订单

16.png

支付宝扫码支付

9.png

支付成功

10.png

交易完成,正在跳转到商户页面

11.png

购买成功,生成流水

基于SpringBoot的蚂蚁金服支付实现

  • 项目架构:SpringBoot+Mybatis+Druid
  • 数据库:MySQL
  • 部署环境:Tomcat8.0
  • 开发环境:JDK8.0、IDEA
  • 支付:支付宝

数据库代码

主要包括以下的数据库表:

  • user:用户表
  • orders:支付产生的订单
  • flow:流水账
  • product:商品表:用于模拟购买商品。


user:用户表
------------------ Table structure for user-- ----------------------------DROPTABLE IF EXISTS `user`;CREATETABLE `user`  (  `id` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOTNULL,  `username` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,  `sex` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET= utf8 COLLATE = utf8_general_ci COMMENT ='用户表' ROW_FORMAT = Compact; product:商品表
-- ------------------------------ Table structure for product-- ----------------------------DROPTABLE IF EXISTS `product`;CREATETABLE `product`  (  `id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOTNULL,  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '产品名称',  `price` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '价格',  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET= utf8mb4 COLLATE = utf8mb4_general_ci COMMENT ='产品表 ' ROW_FORMAT = Compact;order:支付产生的订单
-- ------------------------------ Table structure for orders-- ----------------------------DROPTABLE IF EXISTS `orders`;CREATETABLE `orders`  (  `id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOTNULL,  `order_num` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单号',  `order_status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单状态\r\n            10:待付款\r\n            20:已付款',  `order_amount` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单金额',  `paid_amount` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '实际支付金额',  `product_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '产品表外键ID',  `buy_counts` int(11)NULL DEFAULT NULL COMMENT '产品购买的个数',  `create_time` datetimeNULL DEFAULT NULL COMMENT '订单创建时间',  `paid_time` datetimeNULL DEFAULT NULL COMMENT '支付时间',  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET= utf8mb4 COLLATE = utf8mb4_general_ci COMMENT ='订单表' ROW_FORMAT = Compact;flow:流水账
-- ------------------------------ Table structure for flow-- ----------------------------DROPTABLE IF EXISTS `flow`;CREATETABLE `flow`  (  `id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOTNULL,  `flow_num` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '流水号',  `order_num` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '订单号',  `product_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '产品主键ID',  `paid_amount` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '支付金额',  `paid_method` int(11)NULL DEFAULT NULL COMMENT '支付方式\r\n            1:支付宝\r\n            2:微信',  `buy_counts` int(11)NULL DEFAULT NULL COMMENT '购买个数',  `create_time` datetimeNULL DEFAULT NULL COMMENT '创建时间',  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET= utf8mb4 COLLATE = utf8mb4_general_ci COMMENT ='流水表' ROW_FORMAT = Compact;

Mapper数据接口层

可以使用通用mapper,或者逆向工程就行。

支付宝支付controller(支付流程)

支付流程图

支付流程.png

代码详见idea中实现

基于SSM框架实现,此处省略SSM框架配置,只提供有关订单的核心配置与代码。


目录
相关文章
|
前端开发 Java Maven
96.【SpringBoot接入支付宝-thymeleaf-springBoot】
96.【SpringBoot接入支付宝-thymeleaf-springBoot】
176 0
|
8天前
|
XML 安全 Java
Spring Boot 怎么接入 Stripe 支付?
本文介绍了如何在 Spring Boot 应用中接入 Stripe 支付,提供了一个基本框架,并展示了处理 Webhook 的代码示例。通过捕获异常返回错误信息,成功处理事件则返回确认消息。作者 JustinNeil 在文中还提到可根据需求扩展更多功能,如订阅管理和优惠券应用等。
|
5月前
|
Java 测试技术 Spring
支付系统15-----支付宝支付,引入支付参数,如何使支付宝的配置信息变成SpringBoot相关的配置信息
支付系统15-----支付宝支付,引入支付参数,如何使支付宝的配置信息变成SpringBoot相关的配置信息
|
6月前
|
测试技术 数据安全/隐私保护 Java
基于SpringBoot+Vue+uniapp的金融支付终端管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的金融支付终端管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
5月前
|
JSON Java 数据格式
支付系统---微信支付15------创建SpringBoot项目
支付系统---微信支付15------创建SpringBoot项目
|
7月前
|
消息中间件 JSON Java
Springboot支付宝沙箱支付---完整详细步骤
Springboot支付宝沙箱支付---完整详细步骤
1433 0
|
7月前
|
Java 开发工具
Springboot接入微信支付、支付宝支付
Springboot接入微信支付、支付宝支付
372 0
|
7月前
|
消息中间件 数据库 RocketMQ
Springboot+RocketMQ通过事务消息优雅的实现订单支付功能
RocketMQ的事务消息,是指发送消息事件和其他事件需要同时成功或同时失败。比如银行转账, A银行的某账户要转一万元到B银行的某账户。A银行发送“B银行账户增加一万元”这个消息,要和“从A银 行账户扣除一万元”这个操作同时成功或者同时失败。RocketMQ采用两阶段提交的方式实现事务消息。
272 0
|
7月前
|
Java 开发工具
解决SpringBoot集成支付宝支付中文订单描述验签错误问题
解决SpringBoot集成支付宝支付中文订单描述验签错误问题
79 0
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
190 1