fix: 设备最后上数时间,新增字段,接口调用,小程序显示。
This commit is contained in:
@@ -262,6 +262,7 @@ public class WeixinController extends BaseController {
|
||||
// 9. 构建返回结果
|
||||
WxPayOrderVo result = new WxPayOrderVo();
|
||||
result.setPrepayId(prepayId);
|
||||
result.setOutTradeNumber(order.getOutTradeNumber());
|
||||
result.setTotalAmount(order.getTotalAmount());
|
||||
result.setTimestamp(payParams.get("timeStamp"));
|
||||
result.setNonceStr(payParams.get("nonceStr"));
|
||||
@@ -278,6 +279,27 @@ public class WeixinController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
@Operation(summary = "主动确认微信支付订单")
|
||||
@PostMapping("/pay/confirm_order")
|
||||
public R<Boolean> confirmOrder(@RequestBody Map<String, String> request) {
|
||||
try {
|
||||
if (payOrderBusinessService == null) {
|
||||
return R.fail("支付服务未启用");
|
||||
}
|
||||
|
||||
String outTradeNumber = request != null ? request.get("outTradeNumber") : null;
|
||||
if (outTradeNumber == null || outTradeNumber.isEmpty()) {
|
||||
return R.fail("商户订单号不能为空");
|
||||
}
|
||||
|
||||
boolean success = payOrderBusinessService.confirmPaidOrder(outTradeNumber);
|
||||
return success ? R.ok(true) : R.fail("订单未支付成功或确认失败");
|
||||
} catch (Exception e) {
|
||||
log.error("确认支付订单失败", e);
|
||||
return R.fail("确认支付订单失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Operation(summary = "微信支付回调通知")
|
||||
@PostMapping("/pay_notify")
|
||||
public Map<String, String> payNotify(
|
||||
|
||||
@@ -24,6 +24,12 @@ public class WxPayOrderVo implements Serializable {
|
||||
@Schema(description = "预支付ID")
|
||||
private String prepayId;
|
||||
|
||||
/**
|
||||
* 商户系统内部订单号
|
||||
*/
|
||||
@Schema(description = "商户订单号")
|
||||
private String outTradeNumber;
|
||||
|
||||
/**
|
||||
* 签名类型
|
||||
*/
|
||||
|
||||
@@ -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