|
|
@@ -40,7 +40,6 @@ import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author TRX
|
|
|
@@ -178,7 +177,7 @@ public class PayCallService extends SuperService {
|
|
|
// 关联参数
|
|
|
String msg = "支付成功";
|
|
|
List<TransactionLogModel> list = resultContent.getContent();
|
|
|
- entity.setTransactionIds(list.stream().map(it -> it.getId()).collect(Collectors.toUnmodifiableList()));
|
|
|
+ entity.setTransactionIds(list);
|
|
|
entity.setPaymentStatus(msg);
|
|
|
entity.setIsPaySuccess(Boolean.TRUE);
|
|
|
entity.setPayRemark(msg);
|
|
|
@@ -332,11 +331,11 @@ public class PayCallService extends SuperService {
|
|
|
* @param paymentNo
|
|
|
* @return
|
|
|
*/
|
|
|
- public ResultContent unionFrictionlessPayFinish(String paymentNo,
|
|
|
- com.github.microservice.pay.client.ret.ResultContent<List<TransactionLogModel>> resultContent, String state) {
|
|
|
+ public ResultContent unionFrictionlessPayFinish(String paymentNo, com.github.microservice.pay.client.ret.ResultContent<List<TransactionLogModel>> resultContent, String state) {
|
|
|
if (StringUtils.isEmpty(paymentNo)) {
|
|
|
return ResultContent.buildFail("paymentNo为空");
|
|
|
}
|
|
|
+ orderNoInfoService.markSuccess(paymentNo);
|
|
|
log.info("云闪付支付回调: {}", paymentNo);
|
|
|
ExpenseFlow entity = expenseFlowDao.findTopByPaymentNo(paymentNo);
|
|
|
PaymentProcess paymentProcess = paymentProcessDao.findTopByPaymentNoAndPaymentTypeOrderByCreateTimeDesc(paymentNo, PaymentType.UnionFrictionlessPay);
|
|
|
@@ -350,9 +349,7 @@ public class PayCallService extends SuperService {
|
|
|
paymentProcess.setIsPaying(Boolean.FALSE);
|
|
|
if (resultContent.getState() == ResultState.Success) {
|
|
|
List<TransactionLogModel> list = resultContent.getContent();
|
|
|
- if (ObjectUtils.isNotEmpty(list)) {
|
|
|
- entity.setTransactionIds(list.stream().map(it -> it.getId()).collect(Collectors.toUnmodifiableList()));
|
|
|
- }
|
|
|
+ entity.setTransactionIds(list);
|
|
|
}
|
|
|
} else {
|
|
|
entity.setOrderType(OrderState.PAID_ERROR);
|
|
|
@@ -364,6 +361,8 @@ public class PayCallService extends SuperService {
|
|
|
}
|
|
|
expenseFlowDao.save(entity);
|
|
|
paymentProcessDao.save(paymentProcess);
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
return ResultContent.buildSuccess();
|
|
|
}
|
|
|
@@ -414,34 +413,11 @@ public class PayCallService extends SuperService {
|
|
|
return ResultContent.buildFail("数据为空");
|
|
|
}
|
|
|
if (entity.getPaymentType() == PaymentType.UserWallet) {
|
|
|
- ResultContent<List<TransactionLogModel>> resultContent = walletRefund(entity, param);
|
|
|
- if (resultContent.isSuccess()) {
|
|
|
- entity.setIsRefund(Boolean.TRUE);
|
|
|
- entity.setRefundRemark(param.getRemark());
|
|
|
- entity.setRefundTime(System.currentTimeMillis());
|
|
|
-
|
|
|
- List<TransactionLogModel> list = resultContent.getContent();
|
|
|
- if (ObjectUtils.isNotEmpty(list)) {
|
|
|
- entity.setRefundTransactionIds(list.stream().map(it -> it.getId()).collect(Collectors.toUnmodifiableList()));
|
|
|
- }
|
|
|
- // 申请人
|
|
|
- entity.setApplicant(getCurrentUserId());
|
|
|
- // 退款人
|
|
|
- entity.setRefundUserId(getCurrentUserId());
|
|
|
- // 退款金额
|
|
|
- entity.setRefundAMount(entity.getPayAmount());
|
|
|
- // 订单状态
|
|
|
- entity.setOrderType(OrderState.REFUNDED);
|
|
|
- // 退款状态
|
|
|
- entity.setRefundState(RefundState.Refunded);
|
|
|
- entity.setRefuseRemark("退款成功");
|
|
|
- expenseFlowDao.save(entity);
|
|
|
- return ResultContent.buildSuccess();
|
|
|
- } else {
|
|
|
- return ResultContent.buildFail(resultContent.getMsg());
|
|
|
- }
|
|
|
+ // 钱包退款
|
|
|
+ return walletRefund(entity, param);
|
|
|
} else if (entity.getPaymentType() == PaymentType.UnionFrictionlessPay) {
|
|
|
- unionFrictionlessPayRefund(entity, param);
|
|
|
+ // 云闪付退款
|
|
|
+ return unionFrictionlessPayRefund(entity, param);
|
|
|
}
|
|
|
return ResultContent.buildFail("不支持退款");
|
|
|
}
|
|
|
@@ -452,32 +428,68 @@ public class PayCallService extends SuperService {
|
|
|
* @param entity
|
|
|
* @return
|
|
|
*/
|
|
|
- public ResultContent<List<TransactionLogModel>> walletRefund(ExpenseFlow entity, ExpenseRefundParam param) {
|
|
|
+ public ResultContent walletRefund(ExpenseFlow entity, ExpenseRefundParam param) {
|
|
|
String refundNo = NextNoUtil.getNextPaymentNo(null);
|
|
|
entity.setRefundNo(refundNo);
|
|
|
orderNoInfoService.saveInfo(refundNo, OrderNoType.Refund, entity.getPaymentType());
|
|
|
|
|
|
com.github.microservice.pay.client.ret.ResultContent<List<TransactionLogModel>> resultContent = balancePayService.refund(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), refundNo, entity.getPayAmount(), param.getRemark());
|
|
|
if (resultContent.getState() == ResultState.Success) {
|
|
|
- return ResultContent.buildSuccess(resultContent.getContent());
|
|
|
+ entity.setIsRefund(Boolean.TRUE);
|
|
|
+ entity.setRefundRemark(param.getRemark());
|
|
|
+ entity.setRefundTime(System.currentTimeMillis());
|
|
|
+
|
|
|
+ List<TransactionLogModel> list = resultContent.getContent();
|
|
|
+ if (ObjectUtils.isNotEmpty(list)) {
|
|
|
+ entity.setRefundTransactionIds(list);
|
|
|
+ }
|
|
|
+ // 申请人
|
|
|
+ entity.setApplicant(getCurrentUserId());
|
|
|
+ // 退款人
|
|
|
+ entity.setRefundUserId(getCurrentUserId());
|
|
|
+ // 退款金额
|
|
|
+ entity.setRefundAMount(entity.getPayAmount());
|
|
|
+ // 订单状态
|
|
|
+ entity.setOrderType(OrderState.REFUNDED);
|
|
|
+ // 退款状态
|
|
|
+ entity.setRefundState(RefundState.Refunded);
|
|
|
+ entity.setRefuseRemark("退款成功");
|
|
|
+ expenseFlowDao.save(entity);
|
|
|
+ return ResultContent.buildSuccess();
|
|
|
} else {
|
|
|
return ResultContent.buildFail(String.format("退款失败:%s", resultContent.getMsg()));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 云闪付开始退款
|
|
|
+ *
|
|
|
* @param entity
|
|
|
* @param param
|
|
|
* @return
|
|
|
*/
|
|
|
- public ResultContent<List<TransactionLogModel>> unionFrictionlessPayRefund(ExpenseFlow entity, ExpenseRefundParam param) {
|
|
|
+ public ResultContent unionFrictionlessPayRefund(ExpenseFlow entity, ExpenseRefundParam param) {
|
|
|
String refundNo = NextNoUtil.getNextPaymentNo(null);
|
|
|
entity.setRefundNo(refundNo);
|
|
|
String paymentNo = entity.getPaymentNo();
|
|
|
orderNoInfoService.saveInfo(refundNo, OrderNoType.Refund, entity.getPaymentType());
|
|
|
|
|
|
- ResultContent resultContent = chinaumsSenselessPayService.refund(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), entity.getPayAmount(), paymentNo, refundNo, param.getRemark());
|
|
|
+ BigDecimal payAmount = entity.getPayAmount();
|
|
|
+ ResultContent resultContent = chinaumsSenselessPayService.refund(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), payAmount, paymentNo, refundNo, param.getRemark());
|
|
|
if (resultContent.isSuccess()) {
|
|
|
+ entity.setIsRefund(Boolean.FALSE);
|
|
|
+ entity.setRefundRemark(param.getRemark());
|
|
|
+ entity.setRefundTime(System.currentTimeMillis());
|
|
|
+ // 申请人
|
|
|
+ entity.setApplicant(getCurrentUserId());
|
|
|
+ // 退款人
|
|
|
+ entity.setRefundUserId(getCurrentUserId());
|
|
|
+ // 退款金额
|
|
|
+ entity.setRefundAMount(payAmount);
|
|
|
+ // 退款状态
|
|
|
+ entity.setRefundState(RefundState.Refunding);
|
|
|
+ entity.setRefuseRemark("退款中");
|
|
|
+ expenseFlowDao.save(entity);
|
|
|
return ResultContent.buildSuccess(resultContent.getContent());
|
|
|
} else {
|
|
|
return ResultContent.buildFail(String.format("退款失败:%s", resultContent.getMsg()));
|
|
|
@@ -497,7 +509,29 @@ public class PayCallService extends SuperService {
|
|
|
* @return
|
|
|
*/
|
|
|
public ResultContent unionFrictionlessPayRefundFinish(String paymentNo, com.github.microservice.pay.client.ret.ResultContent<List<TransactionLogModel>> resultContent, String state) {
|
|
|
+ // 退款完成
|
|
|
+ ExpenseFlow expenseFlow = expenseFlowDao.findTopByPaymentNo(paymentNo);
|
|
|
+ orderNoInfoService.markSuccess(paymentNo);
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotEmpty(expenseFlow)) {
|
|
|
+ if (state.equals("TRADE_REFUND")) {
|
|
|
+ // 退款流程 成功
|
|
|
+ expenseFlow.setIsRefund(Boolean.TRUE);
|
|
|
+ expenseFlow.setRefundState(RefundState.Refunded);
|
|
|
+ expenseFlow.setRefuseRemark("退款成功");
|
|
|
+ expenseFlow.setOrderType(OrderState.REFUNDED);
|
|
|
|
|
|
+ if (resultContent.getState() == ResultState.Success) {
|
|
|
+ expenseFlow.setRefundTransactionIds(resultContent.getContent());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 退款失败
|
|
|
+ expenseFlow.setIsRefund(Boolean.TRUE);
|
|
|
+ expenseFlow.setRefundState(RefundState.Fail);
|
|
|
+ expenseFlow.setRefuseRemark("退款失败");
|
|
|
+ }
|
|
|
+ expenseFlowDao.save(expenseFlow);
|
|
|
+ }
|
|
|
return ResultContent.buildSuccess();
|
|
|
}
|
|
|
|