|
@@ -159,16 +159,35 @@ public class PayScoreServiceImpl implements PayScoreService {
|
|
|
PayScoreResult result = payScoreStrategy.completeServiceOrder(request);
|
|
PayScoreResult result = payScoreStrategy.completeServiceOrder(request);
|
|
|
|
|
|
|
|
if (result.isSuccess()) {
|
|
if (result.isSuccess()) {
|
|
|
- order.setPayScoreState(result.getState() != null ? result.getState() : "USER_PAYING");
|
|
|
|
|
|
|
+ // 微信 API 调用成功,根据返回的 state 更新订单
|
|
|
|
|
+ String state = result.getState() != null ? result.getState() : "USER_PAYING";
|
|
|
|
|
+ order.setPayScoreState(state);
|
|
|
order.setServiceEndTime(LocalDateTime.now());
|
|
order.setServiceEndTime(LocalDateTime.now());
|
|
|
order.setTotalAmount(totalAmount);
|
|
order.setTotalAmount(totalAmount);
|
|
|
- orderService.updateById(order);
|
|
|
|
|
|
|
|
|
|
- log.info("[支付分服务] 完结服务订单成功 - orderId: {}, state: {}",
|
|
|
|
|
- orderId, result.getState());
|
|
|
|
|
|
|
+ if (PayScoreState.DONE.getCode().equals(state)) {
|
|
|
|
|
+ log.info("[支付分服务] 完结并扣款成功 - orderId: {}, state: {}", orderId, state);
|
|
|
|
|
+ } else if (PayScoreState.isPaying(state)) {
|
|
|
|
|
+ log.warn("[支付分服务] 完结成功但用户待支付 - orderId: {}, state: {}", orderId, state);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ log.info("[支付分服务] 完结服务订单成功 - orderId: {}, state: {}", orderId, state);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ orderService.updateById(order);
|
|
|
} else {
|
|
} else {
|
|
|
- log.error("[支付分服务] 完结服务订单失败 - orderId: {}, errorCode: {}, errorMsg: {}",
|
|
|
|
|
- orderId, result.getErrorCode(), result.getErrorMsg());
|
|
|
|
|
|
|
+ // 微信 API 调用失败(网络异常、业务拒绝等),标记为 USER_PAYING 避免订单卡死
|
|
|
|
|
+ String failReason = result.getErrorCode() + ": " + result.getErrorMsg();
|
|
|
|
|
+ log.error("[支付分服务] 完结服务订单失败 - orderId: {}, failReason: {}", orderId, failReason);
|
|
|
|
|
+
|
|
|
|
|
+ order.setPayScoreState(PayScoreState.USER_PAYING.getCode());
|
|
|
|
|
+ order.setPayScoreFailReason(failReason);
|
|
|
|
|
+ order.setServiceEndTime(LocalDateTime.now());
|
|
|
|
|
+ order.setTotalAmount(totalAmount);
|
|
|
|
|
+ orderService.updateById(order);
|
|
|
|
|
+
|
|
|
|
|
+ // 本地已正确处理为 USER_PAYING 中间态,返回 success
|
|
|
|
|
+ return PayScoreResult.success(
|
|
|
|
|
+ order.getPayScoreOrderId(), PayScoreState.USER_PAYING.getCode());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
return result;
|
|
@@ -270,11 +289,17 @@ public class PayScoreServiceImpl implements PayScoreService {
|
|
|
order.setPayStatus(PayStatus.PAID.getCode());
|
|
order.setPayStatus(PayStatus.PAID.getCode());
|
|
|
order.setStatus(OrderStatus.COMPLETED.getCode());
|
|
order.setStatus(OrderStatus.COMPLETED.getCode());
|
|
|
order.setPayTime(result.getPayTime() != null ? result.getPayTime() : LocalDateTime.now());
|
|
order.setPayTime(result.getPayTime() != null ? result.getPayTime() : LocalDateTime.now());
|
|
|
|
|
+ order.setPayScoreFailReason(null);
|
|
|
if (result.getTotalAmount() != null) {
|
|
if (result.getTotalAmount() != null) {
|
|
|
order.setTotalAmount(result.getTotalAmount());
|
|
order.setTotalAmount(result.getTotalAmount());
|
|
|
}
|
|
}
|
|
|
log.info("[支付分服务] 用户完成支付 - orderId: {}, amount: {}元",
|
|
log.info("[支付分服务] 用户完成支付 - orderId: {}, amount: {}元",
|
|
|
order.getId(), result.getTotalAmount());
|
|
order.getId(), result.getTotalAmount());
|
|
|
|
|
+ } else if (PayScoreState.isPaying(state)) {
|
|
|
|
|
+ // 订单进入 USER_PAYING 状态(扣款已发起但用户尚未完成支付)
|
|
|
|
|
+ order.setPayScoreState(PayScoreState.USER_PAYING.getCode());
|
|
|
|
|
+ log.warn("[支付分服务] 订单进入用户支付中状态 - orderId: {}, state: {}",
|
|
|
|
|
+ order.getId(), state);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
orderService.updateById(order);
|
|
orderService.updateById(order);
|
|
@@ -316,11 +341,14 @@ public class PayScoreServiceImpl implements PayScoreService {
|
|
|
if (PayScoreState.isDone(newState)) {
|
|
if (PayScoreState.isDone(newState)) {
|
|
|
order.setPayStatus(PayStatus.PAID.getCode());
|
|
order.setPayStatus(PayStatus.PAID.getCode());
|
|
|
order.setStatus(OrderStatus.COMPLETED.getCode());
|
|
order.setStatus(OrderStatus.COMPLETED.getCode());
|
|
|
|
|
+ order.setPayScoreFailReason(null);
|
|
|
if (result.getTotalAmount() != null) {
|
|
if (result.getTotalAmount() != null) {
|
|
|
order.setTotalAmount(result.getTotalAmount());
|
|
order.setTotalAmount(result.getTotalAmount());
|
|
|
}
|
|
}
|
|
|
} else if (PayScoreState.isRevoked(newState)) {
|
|
} else if (PayScoreState.isRevoked(newState)) {
|
|
|
order.setStatus(OrderStatus.CANCELLED.getCode());
|
|
order.setStatus(OrderStatus.CANCELLED.getCode());
|
|
|
|
|
+ } else if (PayScoreState.isPaying(newState)) {
|
|
|
|
|
+ log.info("[支付分服务] 订单仍处于用户支付中状态 - orderId: {}", orderId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
orderService.updateById(order);
|
|
orderService.updateById(order);
|