Skip to content

Commit 10f61f9

Browse files
fix close order bug
1 parent 2e297ee commit 10f61f9

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

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

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,13 +305,30 @@ public AlipayTradeQueryResponse query(CommonOrder order) throws AlipayApiExcepti
305305
public AlipayTradeCloseResponse close(CommonOrder order) throws AlipayApiException {
306306
AlipayTradeCloseRequest request = new AlipayTradeCloseRequest();
307307
AlipayTradeCloseModel model = new AlipayTradeCloseModel();
308-
model.setOutTradeNo(order.getId());
308+
model.setOutTradeNo(order.getId() + "_0");
309309
request.setBizModel(model);
310310
// 设置alipayClient
311+
// 关闭2次
312+
AlipayTradeCloseResponse execute = null;
311313
if (isCertMode) {
312-
return alipayClient.certificateExecute(request);
314+
execute = alipayClient.certificateExecute(request);
313315
} else {
314-
return alipayClient.execute(request);
316+
execute = alipayClient.execute(request);
317+
}
318+
if (!"40004".equals(execute.getCode())) {
319+
return execute;
320+
} else {
321+
model.setOutTradeNo(order.getId() + "_1");
322+
request.setBizModel(model);
323+
if (isCertMode) {
324+
execute = alipayClient.certificateExecute(request);
325+
} else {
326+
execute = alipayClient.execute(request);
327+
}
328+
if (!"40004".equals(execute.getCode())) {
329+
return execute;
330+
}
315331
}
332+
return null;
316333
}
317334
}

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,18 +216,20 @@ public Result getOrder(HttpServletRequest request) {
216216
@Override
217217
public List<Order> getCheckedOrder() throws AlipayApiException {
218218
Date now = new Date();
219-
// 查5分钟前的订单
219+
// 查询10分钟前到5分钟前的订单->关闭
220220
QueryWrapper<Order> orderQueryWrapper = new QueryWrapper<>();
221-
orderQueryWrapper.lt("create_time", DateUtil.offsetMinute(now, -5)).in("status", 0, 2);
221+
orderQueryWrapper.between("create_time", DateUtil.offsetMinute(now, -10), DateUtil.offsetMinute(now, -5)).in("status", 0, 2);
222222
List<Order> orders = this.list(orderQueryWrapper);
223223
for (Order order : orders) {
224224
// 关闭支付宝订单
225225
CommonOrder commonOrder = new CommonOrder();
226226
commonOrder.setId(order.getOrderId());
227227
AlipayTradeCloseResponse close = alipay.close(commonOrder);
228-
log.debug("closeResponse: {}", close.toString());
228+
if (ObjectUtil.isNotEmpty(close)) {
229+
log.debug("closeResponse: {}", close.getBody());
230+
}
229231
}
230-
// 关闭本地订单
232+
// 关闭5分钟前本地订单
231233
UpdateWrapper<Order> orderUpdateWrapper = new UpdateWrapper<>();
232234
orderUpdateWrapper.set("status", 2).lt("create_time", DateUtil.offsetMinute(now, -5)).eq("status", 0);
233235
this.update(orderUpdateWrapper);

0 commit comments

Comments
 (0)