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

本文介绍了如何在SSM框架下实现支付宝支付功能。通过下载官方DEMO,配置AlipayConfig,然后将支付功能整合进SSM项目,包括订单、流水表的数据库设计,以及支付流程的详细步骤。
摘要由CSDN通过智能技术生成

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

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

支付宝测试环境代码测试

源代码

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

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

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

1642825d1513d5c5e6874936fab82347.png

2.下载解压导入eclipse

8f3a1ccb2880b194fbd36675344869e5.png

readme.txt请好好看一下。

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

3.配置AlipayConfig

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

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

(2) 设置app_id和gatewayUrl

24e548aebd58534b6b276924333870c6.png

7cdd2602aa2687a7a67ce4afae3d440d.png

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

8dfa71e43269f76d5dfb90f0c063418f.png

注意部分:

34363dbabf4408a0d9b31ee5054ca0da.png

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

9def08db8afa3ebdd637d5c34c96cddb.png

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

eaa107aba90e5eaa297c8773e63cb4c7.png

8d34f93fae6159641c9ba9911eb723e6.png

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

42604aa48444decbe7bd1fdf89eace96.png

47148eb2f9fe4a1fb28ae270eec5f830.png

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

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

930ff1ddea11cc4fbaa7257aada120e3.png

e69863a29ea3a1e44a825c9d07d3873d.png

4df19f40585eae004a44b392241b37f3.png

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

4ed6e243e0bc2188b00186423e470deb.png

SSM+alipay

源代码下载

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

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

1、项目架构

e29f7cafb3a48af7085a73056ddbf59f.png

项目架构: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);

List selectByExample(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(支付流程)

38f30ca8b6af4da180b4704000a4b1e5.png

产品编号

产品名称

产品价格

操作

${p.id }

${p.name }

${p.price }

购买

$(document).ready(function() {

var hdnContextPath = $("#hdnContextPath").val();

});

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

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

c67061c9b997ab2daac1da47ef647c39.png

controller:

0e0f0201e1c89d984766ab45b4bf923a.png

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

f032225d416772cee1d67b042b9f25d8.png

支付宝支付 controller代码:

63435f08cf1bf10c483d6857b03bc98d.png

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

/**

*

* @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、付费专栏及课程。

余额充值