本篇攻略将详细讲解Java如何集成支付宝支付接口,并实现简单的支付流程。
详解java集成支付宝支付接口(JSP+支付宝20160912)攻略
概述
本篇攻略将详细讲解Java如何集成支付宝支付接口,并实现简单的支付流程。
准备工作
- 首先,需要到支付宝开放平台注册账号,并创建应用,拿到app_id、商户私钥和支付宝公钥;
- 在本地环境配置Java开发环境、Maven,确定要编写的Java版本,本篇攻略使用的是Java 1.8;
- 下载集成支付宝的Demo代码,进行必要的修改,使得程序能够进行正常的调试和测试。
集成步骤
第一步:添加Maven依赖
在pom.xml
文件中添加以下依赖:
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.6.0.ALL</version>
</dependency>
第二步:编写配置文件
创建alipay.properties
配置文件,配置必要的参数:
# 应用ID
app_id=
# 商户私钥,去掉头尾
merchant_private_key=
# 支付宝公钥,去掉头尾
alipay_public_key=
# 服务器异步通知页面路径
notify_url=http://yourwebsite.com/notify_url.jsp
# 页面跳转同步通知页面路径
return_url=http://yourwebsite.com/return_url.jsp
第三步:编写支付接口
编写支付接口的Java代码,直接调用支付宝提供的API即可:
@RequestMapping(value = "/pay", method = RequestMethod.POST)
@ResponseBody
public String pay(HttpServletRequest request) throws AlipayApiException {
// 生成订单号
String out_trade_no = "order" + System.currentTimeMillis();
// 订单总金额,单位为元
String total_amount = "0.01";
// 订单标题
String subject = "测试订单";
// 订单描述
String body = "测试订单详细信息";
// 商品明细列表,可以为空
List<GoodsDetail> goodsDetailList = new ArrayList<>();
// 创建API对应的request
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl(AlipayConfig.return_url);
alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
// 填充订单参数
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
model.setOutTradeNo(out_trade_no);
model.setTotalAmount(total_amount);
model.setSubject(subject);
model.setBody(body);
// 商品明细列表
if (!goodsDetailList.isEmpty()) {
model.setGoodsDetail(goodsDetailList);
}
alipayRequest.setBizModel(model);
String form = alipayClient.pageExecute(alipayRequest).getBody();
// 返回支付宝提交表单
return form;
}
第四步:编写回调接口
编写回调接口的Java代码,处理支付状态的回调:
@RequestMapping(value = "/notify_url")
public void notifyUrl(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, String> params = new HashMap<>();
Map<String, String[]> requestParams = request.getParameterMap();
for (String name : requestParams.keySet()) {
String[] values = requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
params.put(name, valueStr);
}
boolean verify_result = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, "UTF-8", "RSA2");
// 验证签名是否正确
if (verify_result) {
// TODO: 处理支付成功的逻辑
} else {
// TODO: 处理支付失败的逻辑
}
}
第五步:编写前端页面
编写前端页面,例如pay.jsp
和return_url.jsp
。
在pay.jsp
页面中,引入集成支付宝的Demo代码提供的JavaScript代码:
<script src="/alipay/js/jquery-1.12.4.min.js"></script>
<script src="/alipay/js/alipay.trade.common.js"></script>
<script src="/alipay/js/alipay.trade.page.pay.js"></script>
然后在需要付款的地方,添加如下代码:
$('#submitPay').click(function () {
// 调用支付接口
$.ajax({
url: '/pay',
type: 'post',
success: function (data) {
$('body').append(data);
$('form').submit();
}
});
});
最后,在return_url.jsp
页面中,可以根据支付状态,显示相应的内容。
示例说明
示例一
假设现在有一个网站需要接入支付宝支付功能,用户在购买商品的时候,可以选择使用支付宝进行付款。
在购买页面,用户点击“去支付”按钮,会跳转到支付页面,进行支付操作。
在支付页面,用户可以选择支付宝的各种支付方式,如余额支付、网银支付、花呗分期等。完成支付后,页面会自动跳转到“支付成功”或“支付失败”页面。
如果支付成功,系统会保存相应的订单信息,同时通知商家进行发货处理。
示例二
假设现在有一个APP需要接入支付宝支付功能,用户在购买虚拟物品的时候,可以选择使用支付宝进行付款。
在APP内,用户点击“去支付”按钮,会调用支付接口,传递相应的参数,进行支付操作。
支付宝会自动跳转到相应的支付页面,用户可以选择支付宝的各种支付方式,如余额支付、网银支付、花呗分期等。完成支付后,APP会收到支付宝的支付结果通知,根据支付状态进行相应的处理。
如果支付成功,APP会保存相应的订单信息,同时通知用户进行查看相关信息。
本文标题为:详解java集成支付宝支付接口(JSP+支付宝20160912)
基础教程推荐
- 浅谈Java封装、继承、多态特性 2023-08-11
- HDFS Shell命令操作与java代码操作 2023-09-01
- 用jsp页面生成随机的验证数字码示例 2024-01-09
- java – 用于导入mysql转储文件的Shell脚本 2023-11-07
- 如果我在sql而不是’in’中使用’或’,那么Java会出现堆空间错误 2023-11-04
- 在JSP页面中动态生成图片验证码的方法实例 2023-07-30
- 为什么Java单例模式一定要加 volatile 2022-11-20
- java中String字符串删除空格的七种方式 2023-04-12
- SpringBoot之webflux全面解析 2022-10-30
- 关于泛型擦除问题的解决--Mybatis查询类型转换 2023-04-23