diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index debaede09..0cfe1e574 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -509,13 +509,21 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND); } - // 创建退款订单 - final IdWorker idWorker = IdWorker.get(); - Long refundId = idWorker.nextId(); - WxRefundOrder record = new WxRefundOrder(); + record.updateTenantInfo(wxOrder); record.setPayOrderNo(String.valueOf(payOrder.getId())); record.setOrderId(wxOrder.getId()); + record.setNotStatus(EnumRefundStatus.REFUND_FAIL.getCode()); + // check 是否有退款订单 + List refundList = wxRefundOrderMapper.findList(record); + if (refundList.size() > 0) { + logger.error("退款订单已存在, 无法再提交退款申请"); + throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请"); + } + + // 创建退款订单 + final IdWorker idWorker = IdWorker.get(); + Long refundId = idWorker.nextId(); //String out_refund_id = String.valueOf(refundId); @@ -543,13 +551,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { logger.error("退款订单数据库插入出错: " + record.toString()); throw new MallinkException(ErrorCode.DB_FAIL); } - - // check 是否有退款订单 - List refundList = wxRefundOrderMapper.findList(record); - if (refundList.size() > 0) { - logger.error("退款订单已存在, 无法再提交退款申请"); - throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请"); - } + WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); if (null == payAccount) { throw new MallinkException(ErrorCode.PAY_ORDER_QUERY_ERROR.getCode(), "payAccount为空[payId:"+appInfo.getPayId()+"]"); @@ -735,8 +737,16 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { } WxRefundOrder record = new WxRefundOrder(); + record.updateTenantInfo(wxOrder); record.setPayOrderNo(String.valueOf(payOrder.getId())); record.setOrderId(orderId); + record.setNotStatus(EnumRefundStatus.REFUND_FAIL.getCode()); + // check 是否有退款订单 + List refundList = wxRefundOrderMapper.findList(record); + if (refundList.size() > 0) { + logger.error("退款订单已存在, 无法再提交退款申请"); + throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请"); + } // 创建退款订单 Long refundId = idWorker.nextId(); String out_refund_id = String.valueOf(refundId); @@ -770,12 +780,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { logger.error("order:("+orderId+")"+appInfo.getPayId()+"查询不到WxPayAccount"); throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(), appInfo.getPayId()+"查询不到WxPayAccount"); } - // check 是否有退款订单 - List refundList = wxRefundOrderMapper.findList(record); - if (refundList.size() > 0) { - logger.error("退款订单已存在, 无法再提交退款申请"); - throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请"); - } + RefundAdapterResult refundResult = payServiceFactory.getRefundPayAdapterService(payOrder.getPayVendor(),payAccount.getPayVersion()).refund(payAccount, appInfo, record, payOrder,orderId, null); if (refundResult.isSuccess()) { record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode()); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/wx/v3/WxRefundV3AdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/wx/v3/WxRefundV3AdapterService.java index c9975aa9e..8eed5222c 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/refund/wx/v3/WxRefundV3AdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/refund/wx/v3/WxRefundV3AdapterService.java @@ -74,9 +74,11 @@ public class WxRefundV3AdapterService implements RefundPayAdapterService{ private V3PayRefundReq getReq(WxPayAccount payAccount,WxAppinfo appInfo,WxRefundOrder record,WxPayOrder payOrder,Long orderId,EnumPayType payType) { V3PayRefundReq req = new V3PayRefundReq(); + log.error("ceshi+"+JSON.toJSONString(payAccount)); //直连 if (payAccount.getMchType() == EnumPayMchType.DIRECT.getCode()) { WxComposeChildOrderShare share = payOrder.getChildOrderShare(orderId); + log.error("ceshi+"+JSON.toJSONString(share)); req.setSub_mchid(share.getMerchantUid()); //总分 }else if (payAccount.getMchType() == EnumPayMchType.TOTAL.getCode()) { @@ -84,7 +86,9 @@ public class WxRefundV3AdapterService implements RefundPayAdapterService{ }else { throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"当前支付模式非法"); } + log.error("ceshi+"+JSON.toJSONString(payOrder)); req.setOut_trade_no(payOrder.getPayOrderNo()); + log.error("ceshi+"+JSON.toJSONString(record)); req.setOut_refund_no(String.valueOf(record.getId())); try { req.setReason(WxPayV3.handleChinese(payType.getMessage()));