diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index bd4d46a97..121ff7660 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -252,6 +252,18 @@ public class SpringBootTestController { @Autowired private NotificationService notificationService; + @Test + public void getOrderRefundInfoListTest() { + String orderCode = "C44565166677"; + OrderBasicInfo orderBasicInfo = new OrderBasicInfo(); + orderBasicInfo.setOrderCode(orderCode); + orderBasicInfo.setMerchantId("33"); + orderBasicInfo.setPayMode("4"); + // 查询退款明细 + List orderRefundInfoList = orderBasicInfoService.getOrderRefundInfoList(orderBasicInfo); + System.out.println(JSON.toJSONString(orderRefundInfoList)); + } + @Test public void getSnowflakeIdTest() { for (int i = 0; i < 100; i++) { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java index ffdf0389f..6d83a06f3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPayRecordService.java @@ -37,6 +37,8 @@ public interface OrderPayRecordService{ List parseDeductionRecord(String deductionRecord); + List parsePaymentIdByDeductionRecord(String deductionRecord); + // 更新订单退款金额 void updateRefundAmount(String orderCode, String paymentId, BigDecimal refundAmt); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java index c41dabd43..63e3be088 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPayRecordServiceImpl.java @@ -204,6 +204,16 @@ public class OrderPayRecordServiceImpl implements OrderPayRecordService { return resultList; } + @Override + public List parsePaymentIdByDeductionRecord(String deductionRecord) { + List resultList = Lists.newArrayList(); + List paymentInfos = parseDeductionRecord(deductionRecord); + if (CollectionUtils.isNotEmpty(paymentInfos)) { + resultList = paymentInfos.stream().map(PaymentInfo::getPaymentId).collect(Collectors.toList()); + } + return resultList; + } + @Override public void updateRefundAmount(String orderCode, String paymentId, BigDecimal refundAmt) { List orderPayRecordList = getOrderPayRecordList(orderCode); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index 4074766dc..7323e10cb 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -609,31 +609,52 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { } } + /** + * 查询订单在线支付的退款信息 + */ @Override public List getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) { List resultList = Lists.newArrayList(); // 查到原汇付支付id - AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderBasicInfo.getOrderCode()); - if (adapayCallbackRecord == null) { + // AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderBasicInfo.getOrderCode()); + // if (adapayCallbackRecord == null) { + // return resultList; + // } + + List orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderBasicInfo.getOrderCode()); + if (CollectionUtils.isEmpty(orderPayRecordList)) { return resultList; } + List paymentIdList = Lists.newArrayList(); + for (OrderPayRecord orderPayRecord : orderPayRecordList) { + String payMode = orderPayRecord.getPayMode(); + if (StringUtils.equals(payMode, OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue()) + || StringUtils.equals(payMode, OrderPayRecordEnum.ALIPAY_PAYMENT.getValue())) { + List idList = orderPayRecordService.parsePaymentIdByDeductionRecord(orderPayRecord.getDeductionRecord()); + paymentIdList.addAll(idList); + } + } // 获取appId String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderBasicInfo.getMerchantId()); // 通过支付id查询退款记录 - String paymentId = adapayCallbackRecord.getPaymentId(); - List paymentReverseResponses = null; - try { - paymentReverseResponses = adapayService.queryPaymentReverse(paymentId, wechatAppId); - } catch (BaseAdaPayException e) { - logger.error("查询支付撤销对象发生异常", e); + List paymentReverseResponseList = Lists.newArrayList(); + for (String paymentId : paymentIdList) { + try { + List paymentReverseResponses = adapayService.queryPaymentReverse(paymentId, wechatAppId); + if (CollectionUtils.isNotEmpty(paymentReverseResponses)) { + paymentReverseResponseList.addAll(paymentReverseResponses); + } + } catch (BaseAdaPayException e) { + logger.error("查询支付撤销对象发生异常", e); + } } OrderDetailInfoVO.OrderRefundInfo refundInfo; - if (CollectionUtils.isNotEmpty(paymentReverseResponses)) { - for (PaymentReverseResponse reverseResponse : paymentReverseResponses) { + if (CollectionUtils.isNotEmpty(paymentReverseResponseList)) { + for (PaymentReverseResponse reverseResponse : paymentReverseResponseList) { refundInfo = new OrderDetailInfoVO.OrderRefundInfo(); refundInfo.setReverseId(reverseResponse.getId()); refundInfo.setPaymentId(reverseResponse.getPayment_id());