支付订单超时处理

业务场景:

一般电商下单流程中为了释放库存会针对用户下单做超时订单交易关闭的处理,这里一般都是15分钟,30分钟等。
使用队列ActiveMQ处理超时订单
在项目过程中遇到用户停留在支付页面15分钟之后再进行支付,就会出现用户付款,后台已经把订单当做超时处理为交易关闭的订单。
其实针对这种情景,支付宝和微信已经给出了解决方案:

支付宝:

官方文档:
在这里插入图片描述
支付宝设置绝对超时时间,设置一个时间点,如果拉起支付,一直等待,超过设定的时间点,就会提示订单超时。这里代码中的业务逻辑:订单15分钟未支付超时关闭订单
获取拉起支付时服务器时间,往后推迟15分钟,获取当前时间15分钟之后的系统时间,设置为绝对超时时间。在这里插入图片描述

// 获取当前系统时间15分钟之后的时间
Long currentTime = System.currentTimeMillis() + 15 * 60 * 1000;
Date date = new Date(currentTime);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String endTime = df.format(date);
model.setTimeExpire(endTime);// 订单绝对超时时间

微信:

官方文档:
在这里插入图片描述
微信设置起止时间,如果该笔支付订单超过交易结束时间还未支付,则订单交易关闭。
代码示例:

Long currentTime = System.currentTimeMillis() + 15 * 60 * 1000;
Date date = new Date(currentTime);
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String endTime = df.format(date);
// 开始时间:获取服务器当前时间
data.put("time_start", df.format(new Date()));
// 结束时间:服务器当前时间推迟15分钟
data.put("time_expire", endTime);
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值