|
@@ -100,11 +100,7 @@ public class PayCallService extends SuperService {
|
|
|
ResultContent<List<PaymentType>> resultContent = payOrderSettingService.getUserPayment(entity.getUserId(), entity.getProjectOid());
|
|
ResultContent<List<PaymentType>> resultContent = payOrderSettingService.getUserPayment(entity.getUserId(), entity.getProjectOid());
|
|
|
if (resultContent.isFailed()) {
|
|
if (resultContent.isFailed()) {
|
|
|
String msg = resultContent.getMsg();
|
|
String msg = resultContent.getMsg();
|
|
|
- entity.setPaymentStatus("支付失败");
|
|
|
|
|
- entity.setIsPaySuccess(Boolean.FALSE);
|
|
|
|
|
- entity.setPayRemark(msg);
|
|
|
|
|
- entity.setOrderType(OrderState.PAID_ERROR);
|
|
|
|
|
- entity.setIsPaid(Boolean.TRUE);
|
|
|
|
|
|
|
+ entity.setPayFailed(msg);
|
|
|
expenseFlowDao.save(entity);
|
|
expenseFlowDao.save(entity);
|
|
|
return ResultContent.buildFail(msg);
|
|
return ResultContent.buildFail(msg);
|
|
|
}
|
|
}
|
|
@@ -112,52 +108,58 @@ public class PayCallService extends SuperService {
|
|
|
List<PaymentType> paymentTypes = resultContent.getContent();
|
|
List<PaymentType> paymentTypes = resultContent.getContent();
|
|
|
if (ObjectUtils.isEmpty(paymentTypes)) {
|
|
if (ObjectUtils.isEmpty(paymentTypes)) {
|
|
|
String msg = "用户暂无开启支付渠道";
|
|
String msg = "用户暂无开启支付渠道";
|
|
|
- entity.setPaymentStatus("支付失败");
|
|
|
|
|
- entity.setIsPaySuccess(Boolean.FALSE);
|
|
|
|
|
- entity.setPayRemark(msg);
|
|
|
|
|
- entity.setOrderType(OrderState.PAID_ERROR);
|
|
|
|
|
- entity.setIsPaid(Boolean.TRUE);
|
|
|
|
|
|
|
+ entity.setPayFailed(msg);
|
|
|
expenseFlowDao.save(entity);
|
|
expenseFlowDao.save(entity);
|
|
|
return ResultContent.buildFail(msg);
|
|
return ResultContent.buildFail(msg);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
log.info("开始时间:{}", DateUtils.paresTime(System.currentTimeMillis(), DateUtils.patternyyyySSS));
|
|
log.info("开始时间:{}", DateUtils.paresTime(System.currentTimeMillis(), DateUtils.patternyyyySSS));
|
|
|
- log.info("开始支付: {} {}", entity.getPaymentNo(), paymentTypes);
|
|
|
|
|
- int maxTime = 2 * 1000;
|
|
|
|
|
|
|
+ log.info("渠道: {} {}", paymentTypes, entity.getPaymentNo());
|
|
|
|
|
+
|
|
|
|
|
+ int maxTime = 5 * 1000;
|
|
|
|
|
+ int stepTime = 110;
|
|
|
boolean b = false;
|
|
boolean b = false;
|
|
|
for (PaymentType paymentType : paymentTypes) {
|
|
for (PaymentType paymentType : paymentTypes) {
|
|
|
entity = expenseFlowDao.findTopById(entity.getId());
|
|
entity = expenseFlowDao.findTopById(entity.getId());
|
|
|
entity.setPaymentType(paymentType);
|
|
entity.setPaymentType(paymentType);
|
|
|
entity.setPaymentWay(paymentType.getRemark());
|
|
entity.setPaymentWay(paymentType.getRemark());
|
|
|
if (paymentType == PaymentType.UserWallet) {
|
|
if (paymentType == PaymentType.UserWallet) {
|
|
|
|
|
+ // 钱包支付
|
|
|
balancePay(entity);
|
|
balancePay(entity);
|
|
|
} else if (paymentType == PaymentType.UnionFrictionlessPay) {
|
|
} else if (paymentType == PaymentType.UnionFrictionlessPay) {
|
|
|
|
|
+ // 银联云闪付
|
|
|
unionFrictionlessPay(entity);
|
|
unionFrictionlessPay(entity);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- boolean isPaying = orderIsPaying(entity.getPaymentNo(), paymentType);
|
|
|
|
|
- if (isPaying) {
|
|
|
|
|
- AtomicInteger atomicInteger = new AtomicInteger(0);
|
|
|
|
|
- while (atomicInteger.get() <= maxTime) {
|
|
|
|
|
- isPaying = orderIsPaying(entity.getPaymentNo(), paymentType);
|
|
|
|
|
- if (!isPaying) {
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
- try {
|
|
|
|
|
- TimeUnit.MILLISECONDS.sleep(110);
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
|
|
+ if (paymentType.isPayIsAsync()) {
|
|
|
|
|
+ boolean isPaying = orderIsPaying(entity.getPaymentNo(), paymentType);
|
|
|
|
|
+ if (isPaying) {
|
|
|
|
|
+ AtomicInteger atomicInteger = new AtomicInteger(0);
|
|
|
|
|
+ while (atomicInteger.get() <= maxTime) {
|
|
|
|
|
+ isPaying = orderIsPaying(entity.getPaymentNo(), paymentType);
|
|
|
|
|
+ log.info("等待:{} {} {}", atomicInteger.get(), isPaying, paymentType);
|
|
|
|
|
+ if (!isPaying) {
|
|
|
|
|
+ entity = expenseFlowDao.findTopById(entity.getId());
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ try {
|
|
|
|
|
+ TimeUnit.MILLISECONDS.sleep(stepTime);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ atomicInteger.addAndGet(stepTime);
|
|
|
}
|
|
}
|
|
|
- atomicInteger.addAndGet(110);
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 支付成功
|
|
|
if (entity.getIsPaySuccess() != null && entity.getIsPaySuccess()) {
|
|
if (entity.getIsPaySuccess() != null && entity.getIsPaySuccess()) {
|
|
|
b = true;
|
|
b = true;
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ log.info("支付: {}", b);
|
|
|
// 所有的渠道都支付失败
|
|
// 所有的渠道都支付失败
|
|
|
if (!b && paymentTypes.size() > 1) {
|
|
if (!b && paymentTypes.size() > 1) {
|
|
|
String msg = "支付失败";
|
|
String msg = "支付失败";
|
|
@@ -165,9 +167,9 @@ public class PayCallService extends SuperService {
|
|
|
entity.setIsPaySuccess(Boolean.FALSE);
|
|
entity.setIsPaySuccess(Boolean.FALSE);
|
|
|
entity.setPayRemark(msg);
|
|
entity.setPayRemark(msg);
|
|
|
entity.setOrderType(OrderState.PAID_ERROR);
|
|
entity.setOrderType(OrderState.PAID_ERROR);
|
|
|
|
|
+ entity.setIsPaid(Boolean.TRUE);
|
|
|
|
|
+ expenseFlowDao.save(entity);
|
|
|
}
|
|
}
|
|
|
- entity.setIsPaid(Boolean.TRUE);
|
|
|
|
|
- expenseFlowDao.save(entity);
|
|
|
|
|
return ResultContent.buildSuccess();
|
|
return ResultContent.buildSuccess();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -189,8 +191,8 @@ public class PayCallService extends SuperService {
|
|
|
paymentProcess.setPayStartTime(System.currentTimeMillis());
|
|
paymentProcess.setPayStartTime(System.currentTimeMillis());
|
|
|
|
|
|
|
|
entity.setPayStartTime(System.currentTimeMillis());
|
|
entity.setPayStartTime(System.currentTimeMillis());
|
|
|
- com.github.microservice.net.ResultContent<List<TransactionLogModel>> resultContent = balancePayService.balancePay(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), entity.getPayAmount(), entity.getPaymentNo(), entity.getRemark());
|
|
|
|
|
- if (resultContent.getState() == com.github.microservice.net.ResultState.Success) {
|
|
|
|
|
|
|
+ com.github.microservice.pay.client.ret.ResultContent<List<TransactionLogModel>> resultContent = balancePayService.balancePay(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), entity.getPayAmount(), entity.getPaymentNo(), entity.getRemark());
|
|
|
|
|
+ if (resultContent.getState() == com.github.microservice.pay.client.ret.ResultState.Success) {
|
|
|
// 关联参数
|
|
// 关联参数
|
|
|
String msg = "支付成功";
|
|
String msg = "支付成功";
|
|
|
List<TransactionLogModel> list = resultContent.getContent();
|
|
List<TransactionLogModel> list = resultContent.getContent();
|
|
@@ -218,7 +220,7 @@ public class PayCallService extends SuperService {
|
|
|
String msg = resultContent.getMsg();
|
|
String msg = resultContent.getMsg();
|
|
|
if (StringUtils.isNotEmpty(msg) && msg.contains("Connection reset")) {
|
|
if (StringUtils.isNotEmpty(msg) && msg.contains("Connection reset")) {
|
|
|
msg = "调用支付中心失败";
|
|
msg = "调用支付中心失败";
|
|
|
- } else {
|
|
|
|
|
|
|
+ } else if (resultContent.getException() != null) {
|
|
|
String cls = resultContent.getException().getCls();
|
|
String cls = resultContent.getException().getCls();
|
|
|
msg = PayExceptionToShowUtil.convertException(cls);
|
|
msg = PayExceptionToShowUtil.convertException(cls);
|
|
|
if (cls.contains("UncategorizedMongoDbException") && entity.getRepeatTime() <= 1) {
|
|
if (cls.contains("UncategorizedMongoDbException") && entity.getRepeatTime() <= 1) {
|
|
@@ -234,13 +236,14 @@ public class PayCallService extends SuperService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
if (StringUtils.isEmpty(msg)) {
|
|
if (StringUtils.isEmpty(msg)) {
|
|
|
- msg = "支付中心失败";
|
|
|
|
|
|
|
+ msg = "支付中心调用失败";
|
|
|
}
|
|
}
|
|
|
entity.setPaymentStatus(msg);
|
|
entity.setPaymentStatus(msg);
|
|
|
entity.setIsPaySuccess(Boolean.FALSE);
|
|
entity.setIsPaySuccess(Boolean.FALSE);
|
|
|
entity.setPayRemark(msg);
|
|
entity.setPayRemark(msg);
|
|
|
entity.setOrderType(OrderState.PAID_ERROR);
|
|
entity.setOrderType(OrderState.PAID_ERROR);
|
|
|
|
|
|
|
|
|
|
+ // 支付记录流程
|
|
|
paymentProcess.setIsPaySuccess(Boolean.FALSE);
|
|
paymentProcess.setIsPaySuccess(Boolean.FALSE);
|
|
|
paymentProcess.setPayRemark(msg);
|
|
paymentProcess.setPayRemark(msg);
|
|
|
// 日志
|
|
// 日志
|
|
@@ -255,6 +258,7 @@ public class PayCallService extends SuperService {
|
|
|
entity.setPayMillis(entity.getPayEndTime() - entity.getPayStartTime());
|
|
entity.setPayMillis(entity.getPayEndTime() - entity.getPayStartTime());
|
|
|
expenseFlowDao.save(entity);
|
|
expenseFlowDao.save(entity);
|
|
|
|
|
|
|
|
|
|
+ paymentProcess.setIsPaying(Boolean.FALSE);
|
|
|
paymentProcess.setPayEndTime(System.currentTimeMillis());
|
|
paymentProcess.setPayEndTime(System.currentTimeMillis());
|
|
|
paymentProcess.setPayMillis(paymentProcess.getPayEndTime() - paymentProcess.getPayStartTime());
|
|
paymentProcess.setPayMillis(paymentProcess.getPayEndTime() - paymentProcess.getPayStartTime());
|
|
|
paymentProcess.setTimeStr(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
|
|
paymentProcess.setTimeStr(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
|
|
@@ -370,6 +374,7 @@ public class PayCallService extends SuperService {
|
|
|
entity.setIsPaySuccess(Boolean.TRUE);
|
|
entity.setIsPaySuccess(Boolean.TRUE);
|
|
|
entity.setPayRemark("支付成功");
|
|
entity.setPayRemark("支付成功");
|
|
|
entity.setPaymentStatus("支付成功");
|
|
entity.setPaymentStatus("支付成功");
|
|
|
|
|
+ entity.setIsPaid(Boolean.TRUE);
|
|
|
JSONObject payResult = new JSONObject();
|
|
JSONObject payResult = new JSONObject();
|
|
|
payResult.set("targetOrderId", targetOrderId);
|
|
payResult.set("targetOrderId", targetOrderId);
|
|
|
entity.setPayResult(payResult);
|
|
entity.setPayResult(payResult);
|
|
@@ -391,10 +396,10 @@ public class PayCallService extends SuperService {
|
|
|
paymentProcess.setPayRemark("支付失败");
|
|
paymentProcess.setPayRemark("支付失败");
|
|
|
paymentProcess.setIsPaying(Boolean.FALSE);
|
|
paymentProcess.setIsPaying(Boolean.FALSE);
|
|
|
}
|
|
}
|
|
|
- expenseFlowDao.save(entity);
|
|
|
|
|
|
|
+ // 订单支付流程数据
|
|
|
paymentProcessDao.save(paymentProcess);
|
|
paymentProcessDao.save(paymentProcess);
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+ // 订单数据
|
|
|
|
|
+ expenseFlowDao.save(entity);
|
|
|
}
|
|
}
|
|
|
return ResultContent.buildSuccess();
|
|
return ResultContent.buildSuccess();
|
|
|
}
|
|
}
|
|
@@ -423,8 +428,8 @@ public class PayCallService extends SuperService {
|
|
|
public BigDecimal queryBalance(ExpenseFlow entity) {
|
|
public BigDecimal queryBalance(ExpenseFlow entity) {
|
|
|
BigDecimal balance = BigDecimal.ZERO;
|
|
BigDecimal balance = BigDecimal.ZERO;
|
|
|
if (entity.getPaymentType() == PaymentType.UserWallet) {
|
|
if (entity.getPaymentType() == PaymentType.UserWallet) {
|
|
|
- com.github.microservice.net.ResultContent<Long> resultContent = balancePayService.queryUserBalance(entity.getProjectOid(), entity.getUserId());
|
|
|
|
|
- if (resultContent.getState() == com.github.microservice.net.ResultState.Success) {
|
|
|
|
|
|
|
+ com.github.microservice.pay.client.ret.ResultContent<Long> resultContent = balancePayService.queryUserBalance(entity.getProjectOid(), entity.getUserId());
|
|
|
|
|
+ if (resultContent.getState() == com.github.microservice.pay.client.ret.ResultState.Success) {
|
|
|
long number = resultContent.getContent();
|
|
long number = resultContent.getContent();
|
|
|
balance = BigDecimal.valueOf(number);
|
|
balance = BigDecimal.valueOf(number);
|
|
|
} else {
|
|
} else {
|
|
@@ -479,8 +484,8 @@ public class PayCallService extends SuperService {
|
|
|
refundRecord.setProjectOid(entity.getProjectOid());
|
|
refundRecord.setProjectOid(entity.getProjectOid());
|
|
|
refundRecord.setPaymentType(entity.getPaymentType());
|
|
refundRecord.setPaymentType(entity.getPaymentType());
|
|
|
|
|
|
|
|
- com.github.microservice.net.ResultContent<List<TransactionLogModel>> resultContent = balancePayService.refund(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), refundNo, payAmount, param.getRemark());
|
|
|
|
|
- if (resultContent.getState() == com.github.microservice.net.ResultState.Success) {
|
|
|
|
|
|
|
+ com.github.microservice.pay.client.ret.ResultContent<List<TransactionLogModel>> resultContent = balancePayService.refund(entity.getProjectOid(), entity.getShopOid(), entity.getUserId(), refundNo, payAmount, param.getRemark());
|
|
|
|
|
+ if (resultContent.getState() == com.github.microservice.pay.client.ret.ResultState.Success) {
|
|
|
entity.setIsRefund(Boolean.TRUE);
|
|
entity.setIsRefund(Boolean.TRUE);
|
|
|
entity.setRefundRemark(param.getRemark());
|
|
entity.setRefundRemark(param.getRemark());
|
|
|
entity.setRefundTime(System.currentTimeMillis());
|
|
entity.setRefundTime(System.currentTimeMillis());
|