Skip to content

Commit 2e297ee

Browse files
close alipay order after 5min
1 parent 490715a commit 2e297ee

File tree

4 files changed

+54
-16
lines changed

4 files changed

+54
-16
lines changed

src/main/java/project/daihao18/panel/common/payment/alipay/Alipay.java

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,10 @@
44
import cn.hutool.json.JSONUtil;
55
import com.alipay.api.AlipayApiException;
66
import com.alipay.api.AlipayClient;
7-
import com.alipay.api.domain.AlipayTradePagePayModel;
8-
import com.alipay.api.domain.AlipayTradePrecreateModel;
9-
import com.alipay.api.domain.AlipayTradeQueryModel;
10-
import com.alipay.api.domain.AlipayTradeWapPayModel;
7+
import com.alipay.api.domain.*;
118
import com.alipay.api.internal.util.AlipayLogger;
12-
import com.alipay.api.request.AlipayTradePagePayRequest;
13-
import com.alipay.api.request.AlipayTradePrecreateRequest;
14-
import com.alipay.api.request.AlipayTradeQueryRequest;
15-
import com.alipay.api.request.AlipayTradeWapPayRequest;
9+
import com.alipay.api.request.*;
10+
import com.alipay.api.response.AlipayTradeCloseResponse;
1611
import com.alipay.api.response.AlipayTradeQueryResponse;
1712
import com.ijpay.alipay.AliPayApiConfig;
1813
import com.ijpay.alipay.AliPayApiConfigKit;
@@ -272,10 +267,10 @@ protected Map<String, Object> createByF2F(CommonOrder order, String subject, Boo
272267
* @return
273268
* @throws AlipayApiException
274269
*/
275-
public AlipayTradeQueryResponse query(Order order) throws AlipayApiException {
270+
public AlipayTradeQueryResponse query(CommonOrder order) throws AlipayApiException {
276271
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
277272
AlipayTradeQueryModel model = new AlipayTradeQueryModel();
278-
model.setOutTradeNo(order.getOrderId() + "_0");
273+
model.setOutTradeNo(order.getId() + "_0");
279274
request.setBizModel(model);
280275
// 设置alipayClient
281276
// 查2次
@@ -288,7 +283,7 @@ public AlipayTradeQueryResponse query(Order order) throws AlipayApiException {
288283
if (!"40004".equals(execute.getCode())) {
289284
return execute;
290285
} else {
291-
model.setOutTradeNo(order.getOrderId() + "_1");
286+
model.setOutTradeNo(order.getId() + "_1");
292287
request.setBizModel(model);
293288
if (isCertMode) {
294289
execute = alipayClient.certificateExecute(request);
@@ -301,4 +296,22 @@ public AlipayTradeQueryResponse query(Order order) throws AlipayApiException {
301296
}
302297
return null;
303298
}
299+
300+
/**
301+
* 关闭订单
302+
* @param order
303+
* @return
304+
*/
305+
public AlipayTradeCloseResponse close(CommonOrder order) throws AlipayApiException {
306+
AlipayTradeCloseRequest request = new AlipayTradeCloseRequest();
307+
AlipayTradeCloseModel model = new AlipayTradeCloseModel();
308+
model.setOutTradeNo(order.getId());
309+
request.setBizModel(model);
310+
// 设置alipayClient
311+
if (isCertMode) {
312+
return alipayClient.certificateExecute(request);
313+
} else {
314+
return alipayClient.execute(request);
315+
}
316+
}
304317
}

src/main/java/project/daihao18/panel/common/schedule/tasks/CheckOrderJobTaskService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import project.daihao18.panel.common.enums.PayStatusEnum;
1212
import project.daihao18.panel.common.payment.alipay.Alipay;
1313
import project.daihao18.panel.common.utils.NotifyLockUtil;
14+
import project.daihao18.panel.entity.CommonOrder;
1415
import project.daihao18.panel.entity.Funds;
1516
import project.daihao18.panel.entity.Order;
1617
import project.daihao18.panel.entity.User;
@@ -59,7 +60,9 @@ public void checkOrderJob() throws AlipayApiException {
5960
List<Order> orders = orderService.getCheckedOrder();
6061
for (Order order : orders) {
6162
// log.info("{}", order);
62-
AlipayTradeQueryResponse response = alipay.query(order);
63+
CommonOrder commonOrder = new CommonOrder();
64+
commonOrder.setId(order.getOrderId());
65+
AlipayTradeQueryResponse response = alipay.query(commonOrder);
6366
if (ObjectUtil.isEmpty(response)) {
6467
continue;
6568
}

src/main/java/project/daihao18/panel/service/OrderService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package project.daihao18.panel.service;
22

3+
import com.alipay.api.AlipayApiException;
34
import com.baomidou.mybatisplus.extension.service.IService;
45
import project.daihao18.panel.common.response.Result;
56
import project.daihao18.panel.entity.Order;
@@ -37,7 +38,7 @@ public interface OrderService extends IService<Order> {
3738

3839
Result getOrder(HttpServletRequest request);
3940

40-
List<Order> getCheckedOrder();
41+
List<Order> getCheckedOrder() throws AlipayApiException;
4142

4243
BigDecimal getMonthIncome();
4344

src/main/java/project/daihao18/panel/serviceImpl/OrderServiceImpl.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,21 @@
33
import cn.hutool.core.date.DateUtil;
44
import cn.hutool.core.util.ObjectUtil;
55
import cn.hutool.json.JSONUtil;
6+
import com.alipay.api.AlipayApiException;
7+
import com.alipay.api.response.AlipayTradeCloseResponse;
68
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
79
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
810
import com.baomidou.mybatisplus.core.metadata.IPage;
911
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
1012
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
13+
import lombok.extern.slf4j.Slf4j;
1114
import org.springframework.beans.factory.annotation.Autowired;
1215
import org.springframework.stereotype.Service;
1316
import org.springframework.transaction.annotation.Transactional;
1417
import project.daihao18.panel.common.enums.PayStatusEnum;
18+
import project.daihao18.panel.common.payment.alipay.Alipay;
1519
import project.daihao18.panel.common.response.Result;
20+
import project.daihao18.panel.entity.CommonOrder;
1621
import project.daihao18.panel.entity.Order;
1722
import project.daihao18.panel.entity.User;
1823
import project.daihao18.panel.mapper.OrderMapper;
@@ -32,6 +37,7 @@
3237
* @Date: 2020-10-07 21:14
3338
*/
3439
@Service
40+
@Slf4j
3541
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
3642

3743
@Autowired
@@ -40,6 +46,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
4046
@Autowired
4147
private UserService userService;
4248

49+
@Autowired
50+
private Alipay alipay;
51+
4352
@Override
4453
public Order getCurrentPlan(Integer userId) {
4554
QueryWrapper<Order> orderQueryWrapper = new QueryWrapper<>();
@@ -205,13 +214,25 @@ public Result getOrder(HttpServletRequest request) {
205214
}
206215

207216
@Override
208-
public List<Order> getCheckedOrder() {
217+
public List<Order> getCheckedOrder() throws AlipayApiException {
209218
Date now = new Date();
210-
// 关闭5分钟前的订单
219+
// 查5分钟前的订单
220+
QueryWrapper<Order> orderQueryWrapper = new QueryWrapper<>();
221+
orderQueryWrapper.lt("create_time", DateUtil.offsetMinute(now, -5)).in("status", 0, 2);
222+
List<Order> orders = this.list(orderQueryWrapper);
223+
for (Order order : orders) {
224+
// 关闭支付宝订单
225+
CommonOrder commonOrder = new CommonOrder();
226+
commonOrder.setId(order.getOrderId());
227+
AlipayTradeCloseResponse close = alipay.close(commonOrder);
228+
log.debug("closeResponse: {}", close.toString());
229+
}
230+
// 关闭本地订单
211231
UpdateWrapper<Order> orderUpdateWrapper = new UpdateWrapper<>();
212232
orderUpdateWrapper.set("status", 2).lt("create_time", DateUtil.offsetMinute(now, -5)).eq("status", 0);
213233
this.update(orderUpdateWrapper);
214-
QueryWrapper<Order> orderQueryWrapper = new QueryWrapper<>();
234+
// 返回需要查询的订单
235+
orderQueryWrapper = new QueryWrapper<>();
215236
orderQueryWrapper
216237
.eq("`status`", 0)
217238
.or()

0 commit comments

Comments
 (0)