Java支付宝支付demo_支付宝app支付java后台流程demo

本文档展示了如何在Java SSM(Spring+SpringMVC+Mybatis)框架下实现支付宝App支付功能。通过下载官方Demo,配置AlipayConfig,设置支付宝测试环境,将支付流程整合到SSM项目中,并提供了数据库表结构和关键代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

支付宝app支付java后台流程demo

使用ssm框架实现支付宝支付功能。

支付宝测试环境代码测试

源代码

https://github.com/OUYANGSIHAI/sihai-maven-ssm-alipay

1.下载电脑网站的官方demo:

下载:https://docs.open.alipay.com/270/106291/

a770a30e3c8949ddb2b1e9013a73d6e5.jpg

2.下载解压导入eclipse

555d1f893111442d911e76e8a42eb88f.jpg

readme.txt请好好看一下。

只有一个Java配置类,其余都是JSP。

3.配置AlipayConfig

(1) 注册蚂蚁金服开发者账号(免费,不像苹果会收取费用)

注册地址:https://open.alipay.com ,用你的支付宝账号扫码登录

(2) 设置app_id和gatewayUrl

e9f1af0f76cf45f78a44ffdf73101188.jpg

8ee0edb12c01400096474d1213f1dcef.jpg

其中密钥需要自己生成,appID和支付宝网关是已经给好的,网关有dev字样,表明是用于开发测试。点那个设置 可以下载生成公钥

7abe40e5f63747a6b6dff400b53b4f51.jpg

注意部分:

63698d37cf48401b8411792a6c3bd348.jpg

点击上图的生成方法 下载 跟你系统对用的  程序,然后生成 相应的 密匙

a7f1df7938034725ba88a2d459660bee.jpg

如果没有设置过,此时显示文本是"设置应用公钥",我这里是已经设置过得。

617513c1e0f249d388bcdeedfb1fd160.png

64754342434746f29b5980c64aa5c4d6.jpg

下一步:查看你的公钥把 公钥的字符串 复制过去ide   AlipayConfig.java 里面

2ff3a4eda4e047af998b01645fcfd5ea.jpg

bb23d8b212c343a2ab380f3f70f375ad.jpg

以上的步骤基本上是 完成搭建   测试用的DEMO  仅此而已;

如果是正式环境,需要上传到对应的应用中:

d4c0b399308d474f9b7bc98faf964c78.jpg

715265185071432fab11e4563d6aaadb.jpg

1b2ae847c7a04507a54f85f6a9b528ac.jpg

基本开发文档全部可以在这里看自己可以梳理流程

9f487d66554b46fe87841e6b853d647f.jpg

SSM+alipay

源代码下载

链接: 链接: https://pan.baidu.com/s/1pZodm4L_TKvGOQuBel2Quw 提取码: ksbq

将支付宝支付整合到ssm框架

1、项目架构

ef9f2b20973e4dea95824ec0cd8c871c.jpg

项目架构:spring+springmvc+mybatis

数据库:mysql

部署环境:tomcat7.0

开发环境:jdk8、idea

支付:支付宝、微信

整合到ssm一样,我们需要像沙箱测试环境一样,需要修改支付的配置信息

2、数据库代码

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

user:用户表

order:支付产生的订单

flow:流水账

product:商品表:用于模拟购买商品

drop table if exists user;

/*==============================================================*/

/* Table: user */

/*==============================================================*/

create table user

(

id varchar(20) not null,

username varchar(128),

sex varchar(20),

primary key (id)

);

alter table user comment '用户表';

CREATE TABLE `flow` (

`id` varchar(20) NOT NULL,

`flow_num` varchar(20) DEFAULT NULL COMMENT '流水号',

`order_num` varchar(20) DEFAULT NULL COMMENT '订单号',

`product_id` varchar(20) DEFAULT NULL COMMENT '产品主键ID',

`paid_amount` varchar(11) DEFAULT NULL COMMENT '支付金额',

`paid_method` int(11) DEFAULT NULL COMMENT '支付方式\r\n 1:支付宝\r\n 2:微信',

`buy_counts` int(11) DEFAULT NULL COMMENT '购买个数',

`create_time` datetime DEFAULT NULL COMMENT '创建时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流水表';

CREATE TABLE `orders` (

`id` varchar(20) NOT NULL,

`order_num` varchar(20) DEFAULT NULL COMMENT '订单号',

`order_status` varchar(20) DEFAULT NULL COMMENT '订单状态\r\n 10:待付款\r\n 20:已付款',

`order_amount` varchar(11) DEFAULT NULL COMMENT '订单金额',

`paid_amount` varchar(11) DEFAULT NULL COMMENT '实际支付金额',

`product_id` varchar(20) DEFAULT NULL COMMENT '产品表外键ID',

`buy_counts` int(11) DEFAULT NULL COMMENT '产品购买的个数',

`create_time` datetime DEFAULT NULL COMMENT '订单创建时间',

`paid_time` datetime DEFAULT NULL COMMENT '支付时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';

CREATE TABLE `product` (

`id` varchar(20) NOT NULL,

`name` varchar(20) DEFAULT NULL COMMENT '产品名称',

`price` varchar(11) DEFAULT NULL COMMENT '价格',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品表 ';

3、dao数据接口层

这里就不介绍了,这个只包括简单的curd,可以使用`通用mapper`,或者`逆向工程`就行。以订单order为例给出:

public interface OrdersMapper {

int countByExample(OrdersExample example);

int deleteByExample(OrdersExample example);

int deleteByPrimaryKey(String id);

int insert(Orders record);

int insertSelective(Orders record);

ListselectByExample(OrdersExample example);

Orders selectByPrimaryKey(String id);

int updateByExampleSelective(@Param("record") Orders record, @Param("example") OrdersExample example);

int updateByExample(@Param("record") Orders record, @Param("example") OrdersExample example);

int updateByPrimaryKeySelective(Orders record);

int updateByPrimaryKey(Orders record);

}

4、service层

同上,最后在项目源代码里可见。 以订单order为例给出:

/**

* 订单操作 service

* @author ibm

*

*/

public interface OrdersService {

/**

* 新增订单

* @param order

*/

public void saveOrder(Orders order);

/**

*

* @Title: OrdersService.java

* @Package com.sihai.service

* @Description: 修改叮当状态,改为 支付成功,已付款; 同时新增支付流水

* Copyright: Copyright (c) 2017

* Company:FURUIBOKE.SCIENCE.AND.TECHNOLOGY

*

* @author sihai

* @date 2017年8月23日 下午9:04:35

* @version V1.0

*/

public void updateOrderStatus(String orderId, String alpayFlowNum, String paidAmount);

/**

* 获取订单

* @param orderId

* @return

*/

public Orders getOrderById(String orderId);

}

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

8e3c62143b494ef68e229ebd21e20de3.jpg

产品编号

产品名称

产品价格

操作

${p.id }

${p.name }

${p.price }

首先,启动项目后,输入http://localhost:8080/,会进入到商品页面,购买测试

点击上面的购买按钮后跳转,进入到订单页面

bb7f9cee288d4f30ac8a76ec00b7e2b8.jpg

controller:

af7c2a30e32245df80fdddeacbe21b4b.jpg

根据SID(生成id的工具)等信息生成订单,保存到数据库。

c0cafb28b9ae44fe87579b63e843c4fb.jpg

支付宝支付 controller代码:

0417706f0be347878803100e57cbf1de.jpg

然后,我们选择支付宝支付,进入到了我们支付的页面了,大功告成!

/**

*

* @Title: AlipayController.java

* @Package com.sihai.controller

* @Description: 前往支付宝第三方网关进行支付

* Copyright: Copyright (c) 2017

* Company:FURUIBOKE.SCIENCE.AND.TECHNOLOGY

*

* @author sihai

* @date 2017年8月23日 下午8:50:43

* @version V1.0

*/

@RequestMapping(value = "/goAlipay", produces = "text/html; charset=UTF-8")

@ResponseBody

public String goAlipay(String orderId, HttpServletRequest request, HttpServletRequest response) throws Exception {

Orders order = orderService.getOrderById(orderId);

Product product = productService.getProductById(order.getProductId());

//获得初始化的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);

//商户订单号,商户网站订单系统中唯一订单号,必填

String out_trade_no = orderId;

//付款金额,必填

String total_amount = order.getOrderAmount();

//订单名称,必填

String subject = product.getName();

//商品描述,可空

String body = "用户订购商品个数:" + order.getBuyCounts();

// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。

String timeout_express = "1c";

alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","

+ "\"total_amount\":\""+ total_amount +"\","

+ "\"subject\":\""+ subject +"\","

+ "\"body\":\""+ body +"\","

+ "\"timeout_express\":\""+ timeout_express +"\","

+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

//请求

String result = alipayClient.pageExecute(alipayRequest).getBody();

return result;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值