|
@@ -1674,15 +1674,26 @@ DISCOUNT("畅学卡")
|
|
|
// 执行状态锁定
|
|
|
String lockNameInner = redisCacheService.getPaymentCacheKey(orderRefundBill.getBillNo());
|
|
|
DistributedLock.of(redissonClient).runIfLockCanGet(lockNameInner, () -> {
|
|
|
- RefundResp refundResp = paymentServiceContext.getPaymentService(paymentOrder.getPaymentVendor()).refund(refundOrder);
|
|
|
- // 申请请求失败
|
|
|
- if (PaymentStatus.FAILED == refundResp.getPaymentStatus()) {
|
|
|
+ if (StringUtils.isEmpty(paymentOrder.getTransNo())) {
|
|
|
+ orderRefundBill.setStatus(TradeStatusEnum.succeeded);
|
|
|
+ userOrderRefundBillService.save(orderRefundBill);
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ RefundResp refundResp = paymentServiceContext.getPaymentService(paymentOrder.getPaymentVendor()).refund(refundOrder);
|
|
|
+ // 申请请求失败
|
|
|
+ if (PaymentStatus.FAILED == refundResp.getPaymentStatus()) {
|
|
|
+ orderRefundBill.setStatus(TradeStatusEnum.failed);
|
|
|
+ orderRefundBill.setPayFailMsg(refundResp.getMsg());
|
|
|
+ } else {
|
|
|
+ orderRefundBill.setTransNo(refundResp.getTransNo());
|
|
|
+ orderRefundBill.setStatus(TradeStatusEnum.pending);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
orderRefundBill.setStatus(TradeStatusEnum.failed);
|
|
|
- orderRefundBill.setPayFailMsg(refundResp.getMsg());
|
|
|
- } else {
|
|
|
- orderRefundBill.setTransNo(refundResp.getTransNo());
|
|
|
- orderRefundBill.setStatus(TradeStatusEnum.pending);
|
|
|
+ orderRefundBill.setPayFailMsg(e.getMessage());
|
|
|
+ log.error("refundOnly orderNo={}", orderRefundBill.getBillNo(), e);
|
|
|
}
|
|
|
+
|
|
|
userOrderRefundBillService.save(orderRefundBill);
|
|
|
|
|
|
}, 10L, TimeUnit.SECONDS);
|