Commit 479f2c35dc5f7b0cbc7160fb91c0a3f78e35ce1e

Authored by huanggang
1 parent 95109117

refund result issue fixed

cashier-trade/src/main/java/com/diligrp/cashier/trade/manager/PaymentResultManager.java
@@ -76,6 +76,7 @@ public class PaymentResultManager { @@ -76,6 +76,7 @@ public class PaymentResultManager {
76 * 通知业务系统退款处理结果 76 * 通知业务系统退款处理结果
77 */ 77 */
78 public void notifyRefundResult(String uri, OnlineRefundResult refundResult) { 78 public void notifyRefundResult(String uri, OnlineRefundResult refundResult) {
  79 + LOG.info("Notifying online payment result: {}, {}", refundResult.getTradeId(), refundResult.getRefundId());
79 ThreadPoolService.getIoThreadPoll().submit(() -> { 80 ThreadPoolService.getIoThreadPoll().submit(() -> {
80 List<IPaymentEventListener> lifeCycles = eventListeners.stream().toList(); 81 List<IPaymentEventListener> lifeCycles = eventListeners.stream().toList();
81 if (!lifeCycles.isEmpty()) { 82 if (!lifeCycles.isEmpty()) {
cashier-trade/src/main/java/com/diligrp/cashier/trade/manager/TaskMessageSender.java
@@ -47,10 +47,10 @@ public class TaskMessageSender { @@ -47,10 +47,10 @@ public class TaskMessageSender {
47 properties.setHeader("x-delay", String.valueOf(delayInMillis)); 47 properties.setHeader("x-delay", String.valueOf(delayInMillis));
48 String payload = JsonUtils.toJsonString(task); 48 String payload = JsonUtils.toJsonString(task);
49 Message message = new Message(payload.getBytes(StandardCharsets.UTF_8), properties); 49 Message message = new Message(payload.getBytes(StandardCharsets.UTF_8), properties);
50 - LOG.info("Sending async delay task message for {}", task.getPayload()); 50 + LOG.info("Sending async delay task message: {}", task.getPayload());
51 rabbitTemplate.send(Constants.PAYMENT_DELAY_EXCHANGE, Constants.PAYMENT_DELAY_KEY, message); 51 rabbitTemplate.send(Constants.PAYMENT_DELAY_EXCHANGE, Constants.PAYMENT_DELAY_KEY, message);
52 } catch (Exception ex) { 52 } catch (Exception ex) {
53 - LOG.error("Failed to send async delay task message for {}", task.getPayload(), ex); 53 + LOG.error("Failed to send async delay task message: {}", task.getPayload(), ex);
54 } 54 }
55 }); 55 });
56 } 56 }
cashier-trade/src/main/java/com/diligrp/cashier/trade/service/impl/CashierPaymentServiceImpl.java
@@ -14,6 +14,7 @@ import com.diligrp.cashier.pipeline.type.OutPaymentType; @@ -14,6 +14,7 @@ import com.diligrp.cashier.pipeline.type.OutPaymentType;
14 import com.diligrp.cashier.pipeline.type.PaymentState; 14 import com.diligrp.cashier.pipeline.type.PaymentState;
15 import com.diligrp.cashier.pipeline.type.PaymentType; 15 import com.diligrp.cashier.pipeline.type.PaymentType;
16 import com.diligrp.cashier.shared.ErrorCode; 16 import com.diligrp.cashier.shared.ErrorCode;
  17 +import com.diligrp.cashier.shared.util.DateUtils;
17 import com.diligrp.cashier.trade.Constants; 18 import com.diligrp.cashier.trade.Constants;
18 import com.diligrp.cashier.trade.dao.IOnlinePaymentDao; 19 import com.diligrp.cashier.trade.dao.IOnlinePaymentDao;
19 import com.diligrp.cashier.trade.dao.ITradeOrderDao; 20 import com.diligrp.cashier.trade.dao.ITradeOrderDao;
@@ -137,13 +138,19 @@ public class CashierPaymentServiceImpl implements ICashierPaymentService { @@ -137,13 +138,19 @@ public class CashierPaymentServiceImpl implements ICashierPaymentService {
137 if (pipeline instanceof OnlinePipeline<?> onlinePipeline) { // 在线支付通道 138 if (pipeline instanceof OnlinePipeline<?> onlinePipeline) { // 在线支付通道
138 // 在线支付通道: 不同的收银台类型使用不同的支付方式(目前只支持小程序收银台) 139 // 在线支付通道: 不同的收银台类型使用不同的支付方式(目前只支持小程序收银台)
139 // 小程序收银台将使用在线支付通道的小程序支付 140 // 小程序收银台将使用在线支付通道的小程序支付
140 - MiniProPrepayRequest request = new MiniProPaymentConverter(trade, paymentId, now).convert(cashierPayment);  
141 - MiniProPrepayResponse response = onlinePipeline.sendMiniProPrepayRequest(request); 141 +// MiniProPrepayRequest request = new MiniProPaymentConverter(trade, paymentId, now).convert(cashierPayment);
  142 +// MiniProPrepayResponse response = onlinePipeline.sendMiniProPrepayRequest(request);
  143 + long seconds = DateUtils.secondsDiff(trade.getCreatedTime(), now);
  144 + long timeout = Math.max(trade.getTimeout() - seconds, com.diligrp.cashier.pipeline.Constants.MIN_PIPELINE_TIMEOUT);
  145 + NativePrepayRequest request = new NativePrepayRequest(paymentId, trade.getMaxAmount(), trade.getGoods(),
  146 + trade.getDescription(), now, timeout);
  147 + NativePrepayResponse response = onlinePipeline.sendNativePrepayRequest(request);
  148 +
142 String outMchId = request.getString(com.diligrp.cashier.pipeline.Constants.PARAM_MCH_ID); 149 String outMchId = request.getString(com.diligrp.cashier.pipeline.Constants.PARAM_MCH_ID);
143 OnlinePayment payment = OnlinePayment.builder().outMchId(outMchId).tradeId(trade.getTradeId()) 150 OnlinePayment payment = OnlinePayment.builder().outMchId(outMchId).tradeId(trade.getTradeId())
144 .type(TradeType.TRADE).paymentId(paymentId).channelId(onlinePipeline.supportedChannel()) 151 .type(TradeType.TRADE).paymentId(paymentId).channelId(onlinePipeline.supportedChannel())
145 .payType(PaymentType.MINI_PRO).pipelineId(onlinePipeline.pipelineId()).goods(trade.getGoods()) 152 .payType(PaymentType.MINI_PRO).pipelineId(onlinePipeline.pipelineId()).goods(trade.getGoods())
146 - .amount(trade.getAmount()).payerId(request.getOpenId()).outTradeNo(response.getOutTradeNo()) 153 + .amount(trade.getAmount()).payerId(null).outTradeNo(response.getOutTradeNo())
147 .outPayType(OutPaymentType.NOP).finishTime(null).state(response.getState()) 154 .outPayType(OutPaymentType.NOP).finishTime(null).state(response.getState())
148 .notifyUrl(trade.getNotifyUrl()).description(null).version(0).createdTime(now).modifiedTime(now).build(); 155 .notifyUrl(trade.getNotifyUrl()).description(null).version(0).createdTime(now).modifiedTime(now).build();
149 onlinePaymentDao.insertOnlinePayment(payment); 156 onlinePaymentDao.insertOnlinePayment(payment);
@@ -357,7 +364,7 @@ public class CashierPaymentServiceImpl implements ICashierPaymentService { @@ -357,7 +364,7 @@ public class CashierPaymentServiceImpl implements ICashierPaymentService {
357 } else if (!PaymentState.isFinished(response.getState())) { 364 } else if (!PaymentState.isFinished(response.getState())) {
358 // 固定周期后,查询退款状态,根据状态完成退款订单 365 // 固定周期后,查询退款状态,根据状态完成退款订单
359 TaskMessage message = new TaskMessage(TaskMessage.TYPE_CASHIER_REFUND_SCAN, refundId, "1"); 366 TaskMessage message = new TaskMessage(TaskMessage.TYPE_CASHIER_REFUND_SCAN, refundId, "1");
360 - taskMessageSender.sendDelayTaskMessage(message, trade.getTimeout()); 367 + taskMessageSender.sendDelayTaskMessage(message, trade.getTimeout() * 1000);
361 } 368 }
362 369
363 return new OnlineRefundResult(refundId, payment.getPaymentId(), response.getState(), response.getWhen(), response.getMessage()); 370 return new OnlineRefundResult(refundId, payment.getPaymentId(), response.getState(), response.getWhen(), response.getMessage());