fix: 设备最后上数时间,新增字段,接口调用,小程序显示。
This commit is contained in:
@@ -92,6 +92,14 @@ public interface PayOrderBusinessService {
|
||||
*/
|
||||
int compensateUnpaidOrders();
|
||||
|
||||
/**
|
||||
* 主动确认单笔订单支付状态。
|
||||
*
|
||||
* @param outTradeNumber 商户订单号
|
||||
* @return 是否已确认并处理支付成功
|
||||
*/
|
||||
boolean confirmPaidOrder(String outTradeNumber);
|
||||
|
||||
/**
|
||||
* 修复已支付订单中设备有效期未落库的异常数据。
|
||||
*
|
||||
|
||||
@@ -570,6 +570,49 @@ public class PayOrderBusinessServiceImpl implements PayOrderBusinessService {
|
||||
return Boolean.TRUE.equals(success);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean confirmPaidOrder(String outTradeNumber) {
|
||||
if (outTradeNumber == null || outTradeNumber.isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
PayOrder order = queryByOutTradeNumber(outTradeNumber);
|
||||
if (order == null) {
|
||||
log.warn("[支付确认] 本地订单不存在: outTradeNumber={}", outTradeNumber);
|
||||
return false;
|
||||
}
|
||||
if (PayOrderStatus.SUCCESS.equals(order.getOrderStatus())) {
|
||||
log.info("[支付确认] 订单已成功: orderId={}, outTradeNumber={}", order.getId(), outTradeNumber);
|
||||
return true;
|
||||
}
|
||||
|
||||
String queryResult = wxPayService.queryOrderByOutTradeNo(outTradeNumber);
|
||||
if (queryResult == null) {
|
||||
log.warn("[支付确认] 查询微信订单失败: orderId={}, outTradeNumber={}", order.getId(), outTradeNumber);
|
||||
return false;
|
||||
}
|
||||
|
||||
JSONObject resultJson = JSONUtil.parseObj(queryResult);
|
||||
String tradeState = resultJson.getStr("trade_state");
|
||||
if ("SUCCESS".equalsIgnoreCase(tradeState)) {
|
||||
return compensateSingleOrder(order, resultJson);
|
||||
}
|
||||
|
||||
if ("CLOSED".equalsIgnoreCase(tradeState)) {
|
||||
payOrderMapper.update(null,
|
||||
new LambdaUpdateWrapper<PayOrder>()
|
||||
.eq(PayOrder::getId, order.getId())
|
||||
.ne(PayOrder::getOrderStatus, PayOrderStatus.SUCCESS)
|
||||
.set(PayOrder::getOrderStatus, PayOrderStatus.CLOSED)
|
||||
.set(PayOrder::getTradeState, "CLOSED")
|
||||
.set(PayOrder::getTradeStateDescription, "微信侧已关闭")
|
||||
);
|
||||
}
|
||||
log.info("[支付确认] 订单未支付成功: orderId={}, outTradeNumber={}, tradeState={}",
|
||||
order.getId(), outTradeNumber, tradeState);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int repairPaidOrderDeviceDeadTime() {
|
||||
|
||||
Reference in New Issue
Block a user