详解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) - Python技术站