Commit b41d1ccc by 查志伟

订单售后单退款记录退款信息

parent 179cedad
package com.freemud.sdk.api.assortment.order.request.order; package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType; import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq;
import com.freemud.sdk.api.assortment.order.config.BaseConfig; import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import lombok.Data; import lombok.Data;
...@@ -94,4 +95,10 @@ public class BaseQueryOrderRequest extends BaseConfig { ...@@ -94,4 +95,10 @@ public class BaseQueryOrderRequest extends BaseConfig {
* 1是服务端自动接单 * 1是服务端自动接单
*/ */
private Integer acceptMode; private Integer acceptMode;
/**
* 对退款明细的记录
*/
private List<OrderCancelReq.PayRefundItem> payRefundItemList;
} }
...@@ -1124,6 +1124,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -1124,6 +1124,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request.setOperator(baseQueryOrderRequest.getOperator()); request.setOperator(baseQueryOrderRequest.getOperator());
request.setOperationClient(baseQueryOrderRequest.getOperationClient()); request.setOperationClient(baseQueryOrderRequest.getOperationClient());
request.setRefundState(baseQueryOrderRequest.getRefundState()); request.setRefundState(baseQueryOrderRequest.getRefundState());
request.setPayRefundItemList(baseQueryOrderRequest.getPayRefundItemList());
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp response = orderSdkService.adultApproveWithRefundComplete(request, baseQueryOrderRequest.getTrackingNo()); com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp response = orderSdkService.adultApproveWithRefundComplete(request, baseQueryOrderRequest.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response); return orderSdkAdapter.convent2BaseOrderResponse(response);
} }
...@@ -1139,6 +1140,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -1139,6 +1140,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request.setAfterSerialNo(baseQueryOrderRequest.getRefundSerialNo()); request.setAfterSerialNo(baseQueryOrderRequest.getRefundSerialNo());
request.setOperationClient(baseQueryOrderRequest.getOperationClient()); request.setOperationClient(baseQueryOrderRequest.getOperationClient());
request.setRefundState(baseQueryOrderRequest.getRefundState()); request.setRefundState(baseQueryOrderRequest.getRefundState());
request.setPayRefundItemList(baseQueryOrderRequest.getPayRefundItemList());
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp response = orderSdkService.adultWithRefundComplete(request, baseQueryOrderRequest.getTrackingNo()); com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp response = orderSdkService.adultWithRefundComplete(request, baseQueryOrderRequest.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response); return orderSdkAdapter.convent2BaseOrderResponse(response);
} }
......
...@@ -49,4 +49,19 @@ public class RefundNotifyCallbackRequestVo { ...@@ -49,4 +49,19 @@ public class RefundNotifyCallbackRequestVo {
* 退款流水号 * 退款流水号
*/ */
private String refundId; private String refundId;
/**
* 退款发起时间
*/
private String businessDate;
/**
* 支付渠道编号
*/
private String payCode;
/**
* 退款时间 格式:yyyyMMddHHmmss
*/
private String refundTime;
} }
...@@ -27,6 +27,7 @@ import cn.freemud.service.store.StoreManager; ...@@ -27,6 +27,7 @@ import cn.freemud.service.store.StoreManager;
import cn.freemud.service.thirdparty.DeliveryFeiginClient; import cn.freemud.service.thirdparty.DeliveryFeiginClient;
import cn.freemud.service.thirdparty.EcologyAdminApplicationClient; import cn.freemud.service.thirdparty.EcologyAdminApplicationClient;
import cn.freemud.service.thirdparty.FMAssistantCloudPrintClient; import cn.freemud.service.thirdparty.FMAssistantCloudPrintClient;
import cn.freemud.utils.BeanUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentCloudPrinter; import com.freemud.api.assortment.datamanager.entity.db.AssortmentCloudPrinter;
import com.freemud.api.assortment.datamanager.manager.AssortmentCloudPrinterManager; import com.freemud.api.assortment.datamanager.manager.AssortmentCloudPrinterManager;
...@@ -51,6 +52,7 @@ import lombok.RequiredArgsConstructor; ...@@ -51,6 +52,7 @@ import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -281,9 +283,17 @@ public class RefundService { ...@@ -281,9 +283,17 @@ public class RefundService {
*/ */
private void refundOrder(OrderInfoReqs order, String reason, String remark, Boolean isRefundDeliveryFee, Byte refundMode) { private void refundOrder(OrderInfoReqs order, String reason, String remark, Boolean isRefundDeliveryFee, Byte refundMode) {
int state = PayRefundStatus.SUCCESS.getCode(); int state = PayRefundStatus.SUCCESS.getCode();
List<OrderCancelReq.PayRefundItem> refundItemList = new ArrayList<>();
if (order.getSettlementAmount().longValue() > 0) { if (order.getSettlementAmount().longValue() > 0) {
PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(order, reason); PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(order, reason);
state = refundResponse.getPayRefundStatus().getCode(); state = refundResponse.getPayRefundStatus().getCode();
if (CollectionUtils.isNotEmpty(refundResponse.getPayRefundItemList())) {
refundResponse.getPayRefundItemList().forEach(item -> {
OrderCancelReq.PayRefundItem refundItem = new OrderCancelReq.PayRefundItem();
BeanUtils.copyProperties(item, refundItem);
refundItemList.add(refundItem);
});
}
} }
OrderCancelReq req = OrderCancelReqAdapter.convert(order, UUID.randomUUID().toString(), OrderCancelReq req = OrderCancelReqAdapter.convert(order, UUID.randomUUID().toString(),
...@@ -292,6 +302,8 @@ public class RefundService { ...@@ -292,6 +302,8 @@ public class RefundService {
if (Objects.equals(PayRefundStatus.SUCCESS.getCode(), state)) { if (Objects.equals(PayRefundStatus.SUCCESS.getCode(), state)) {
//退款成功 //退款成功
req.setCreateEvent(AfterSalesOrderCreateEventEnum.REFUND_COMPLETE.getCreateEvent()); req.setCreateEvent(AfterSalesOrderCreateEventEnum.REFUND_COMPLETE.getCreateEvent());
// 设置退款信息
req.setPayRefundItemList(refundItemList);
} else if (Objects.equals(PayRefundStatus.RUNNING.getCode(), state)) { } else if (Objects.equals(PayRefundStatus.RUNNING.getCode(), state)) {
req.setCreateEvent(null); req.setCreateEvent(null);
req.setRefundState(AfterSalesRefunStateEnum.STATE_2.getIndex()); req.setRefundState(AfterSalesRefunStateEnum.STATE_2.getIndex());
......
...@@ -55,6 +55,7 @@ import cn.freemud.enums.*; ...@@ -55,6 +55,7 @@ import cn.freemud.enums.*;
import cn.freemud.handler.MemberBlacklistHandler; import cn.freemud.handler.MemberBlacklistHandler;
import cn.freemud.handler.WeChatLiveMsgHandle; import cn.freemud.handler.WeChatLiveMsgHandle;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.adapter.OrderCancelReqAdapter;
import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request; import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto; import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
...@@ -620,6 +621,15 @@ public class OrderServiceImpl implements Orderservice { ...@@ -620,6 +621,15 @@ public class OrderServiceImpl implements Orderservice {
request.setTrackingNo(trackingNo); request.setTrackingNo(trackingNo);
request.setOperationClient(OperationClientEnum.STATE_6.getIndex()); request.setOperationClient(OperationClientEnum.STATE_6.getIndex());
request.setRefundState(AfterSalesRefunStateEnum.STATE_4.getIndex()); request.setRefundState(AfterSalesRefunStateEnum.STATE_4.getIndex());
List<OrderCancelReq.PayRefundItem> refundItemList = new ArrayList<>();
OrderCancelReq.PayRefundItem refundItem = new OrderCancelReq.PayRefundItem();
refundItem.setPayChannelType(Integer.valueOf(PayChannelType.getByEbcode(requestVo.getPayCode()).getIndex()));
refundItem.setPayChannelName(PayChannelType.getByEbcode(requestVo.getPayCode()).getName());
refundItem.setAmount(requestVo.getRefundAmount());
refundItem.setRefundTradeNo(requestVo.getRefundTradeNo());
refundItem.setRefundDate(DateUtil.convert2Date(requestVo.getRefundTime(), "yyyyMMddHHmmss").getTime());
refundItemList.add(refundItem);
request.setPayRefundItemList(refundItemList);
BaseOrderResponse response = orderCenterSdkService.orderRefundComplete(request); BaseOrderResponse response = orderCenterSdkService.orderRefundComplete(request);
if (response == null || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, response.getErrcode())) { if (response == null || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, response.getErrcode())) {
return refundFaileMessage("orderRefundComplete fail" + response); return refundFaileMessage("orderRefundComplete fail" + response);
......
package cn.freemud.management.adapter;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.List;
/**
* @author Clover.z
* @version 1.0.0
* @since 1.0.0
*/
public class OrderCancelReqAdapter {
public static List<OrderCancelReq.PayRefundItem> convert(List<PayRefundResponse.PayRefundItem> list) {
List<OrderCancelReq.PayRefundItem> refundItemList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(list)) {
list.forEach(item -> {
OrderCancelReq.PayRefundItem refundItem = new OrderCancelReq.PayRefundItem();
BeanUtils.copyProperties(item, refundItem);
refundItemList.add(refundItem);
});
}
return refundItemList;
}
}
...@@ -14,5 +14,13 @@ public class OrderRefundResponse { ...@@ -14,5 +14,13 @@ public class OrderRefundResponse {
private Long refundAmount; private Long refundAmount;
private Long totalAmount; private Long totalAmount;
private Integer refundStatus; private Integer refundStatus;
/**
* 退款成功时间
*/
private String refundTime;
/**
* 支付渠道编号
*/
private String payCode;
} }
...@@ -11,8 +11,18 @@ public class PayRefundData { ...@@ -11,8 +11,18 @@ public class PayRefundData {
private String tradeNo; private String tradeNo;
private String refundTradeNo; private String refundTradeNo;
private String thirdPartRefundTradeNo; private String thirdPartRefundTradeNo;
/**
* 申请退款金额
*/
private Long refundAmount; private Long refundAmount;
private Long totalAmount; private Long totalAmount;
private Integer refundStatus; private Integer refundStatus;
/**
* 退款成功时间
*/
private String refundTime;
/**
* 支付渠道编号
*/
private String payCode;
} }
package cn.freemud.management.entities.dto.response.pay; package cn.freemud.management.entities.dto.response.pay;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
import com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus; import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
* *
...@@ -43,4 +46,37 @@ public class PayRefundResponse { ...@@ -43,4 +46,37 @@ public class PayRefundResponse {
* 是否为部分退款订单 * 是否为部分退款订单
*/ */
private Boolean partRefund = false; private Boolean partRefund = false;
/**
* 对退款明细的记录
*/
private List<PayRefundItem> payRefundItemList;
@Data
public static class PayRefundItem {
/**
* 退款支付渠道
*/
private Integer payChannelType;
/**
* 退款支付渠道名称
*/
private String payChannelName;
/**
* 退款金额
*/
private Integer amount;
/**
* 退款流水编号
*/
private String refundTradeNo;
/**
* 退款时间 单位毫秒
*/
private Long refundDate;
/**
* 退款储值卡卡号(退款渠道为储值卡时,则必须传递)
*/
private String cardCode;
}
} }
package cn.freemud.management.service.handle; package cn.freemud.management.service.handle;
import cn.freemud.base.util.DateUtil;
import cn.freemud.management.adapter.PaymentSdkAdapter; import cn.freemud.management.adapter.PaymentSdkAdapter;
import cn.freemud.management.entities.dto.request.pay.AgentPayRefundReq; import cn.freemud.management.entities.dto.request.pay.AgentPayRefundReq;
import cn.freemud.management.entities.dto.response.pay.AgentPayRefundResp; import cn.freemud.management.entities.dto.response.pay.AgentPayRefundResp;
...@@ -7,6 +8,8 @@ import cn.freemud.management.entities.dto.response.pay.PayRefundResponse; ...@@ -7,6 +8,8 @@ import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.thirdparty.MulitiPaymentClient; import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.management.util.RedisUtil; import cn.freemud.management.util.RedisUtil;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus; import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest; import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
...@@ -17,10 +20,9 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -17,10 +20,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Component @Component
public class MultiRefundService { public class MultiRefundService {
...@@ -109,6 +111,21 @@ public class MultiRefundService { ...@@ -109,6 +111,21 @@ public class MultiRefundService {
} }
PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, req.getRefundTradeNo()); PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, req.getRefundTradeNo());
if (PayRefundStatus.SUCCESS.equals(refundStatus)) {
resp.getData().getRefundPlatformResponseList().stream()
.map(r -> {
PayRefundResponse.PayRefundItem refundItem = new PayRefundResponse.PayRefundItem();
refundItem.setPayChannelType(Integer.valueOf(PayChannelType.getByEbcode(r.getEbcode()).getIndex()));
refundItem.setPayChannelName(PayChannelType.getByEbcode(r.getEbcode()).getName());
refundItem.setAmount(r.getRefundAmount());
refundItem.setRefundTradeNo(r.getRefundTradeNo());
refundItem.setRefundDate(DateUtil.convert2Date(r.getRefundTime(), "yyyy-MM-dd HH:mm:ss").getTime());
//TODO 混合支付储值卡卡号 这里需要跟支付对接,下游设计中
// refundItem.setCardCode("?");
return refundItem;
})
.collect(Collectors.toList());
}
if (StringUtils.isNotEmpty(message)) { if (StringUtils.isNotEmpty(message)) {
payRefundResponse.setMessage(message); payRefundResponse.setMessage(message);
} }
...@@ -122,6 +139,7 @@ public class MultiRefundService { ...@@ -122,6 +139,7 @@ public class MultiRefundService {
public PayRefundResponse agentPayRefund(String partnerId, String storeCode, String orderCode, BigDecimal refundAmount, String fmTradeNo) { public PayRefundResponse agentPayRefund(String partnerId, String storeCode, String orderCode, BigDecimal refundAmount, String fmTradeNo) {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS; PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
String fmRefundNo = ""; String fmRefundNo = "";
List<PayRefundResponse.PayRefundItem> refundItems = new ArrayList<>();
try { try {
AgentPayRefundReq req = paymentSdkAdapter.getAgentPayRefundReq(partnerId, storeCode, orderCode, refundAmount, fmTradeNo); AgentPayRefundReq req = paymentSdkAdapter.getAgentPayRefundReq(partnerId, storeCode, orderCode, refundAmount, fmTradeNo);
AgentPayRefundResp resp = mulitiPaymentClient.agentPayRefund(req); AgentPayRefundResp resp = mulitiPaymentClient.agentPayRefund(req);
...@@ -132,11 +150,20 @@ public class MultiRefundService { ...@@ -132,11 +150,20 @@ public class MultiRefundService {
if (Objects.nonNull(data)) { if (Objects.nonNull(data)) {
refundStatus = this.getFinalRefundStatus(data.getResultCode()); refundStatus = this.getFinalRefundStatus(data.getResultCode());
fmRefundNo = data.getFmRefundNo(); fmRefundNo = data.getFmRefundNo();
PayRefundResponse.PayRefundItem refundItem = new PayRefundResponse.PayRefundItem();
refundItem.setPayChannelType(Integer.valueOf(PayChannelType.getByEbcode(data.getEbcode()).getIndex()));
refundItem.setPayChannelName(PayChannelType.getByEbcode(data.getEbcode()).getName());
refundItem.setAmount(data.getRefundAmount());
refundItem.setRefundTradeNo(data.getRefundEndTransTradeNo());
refundItem.setRefundDate(DateUtil.convert2Date(data.getRefundTime(), "yyyy-MM-dd HH:mm:ss").getTime());
refundItems.add(refundItem);
} }
} catch (Throwable e) { } catch (Throwable e) {
refundStatus = PayRefundStatus.FAIL; refundStatus = PayRefundStatus.FAIL;
} }
return this.handlePayRefundResponse(refundStatus, fmRefundNo); PayRefundResponse payRefundResponse = this.handlePayRefundResponse(refundStatus, fmRefundNo);
payRefundResponse.setPayRefundItemList(refundItems);
return payRefundResponse;
} }
......
package cn.freemud.management.service.handle; package cn.freemud.management.service.handle;
import cn.freemud.base.util.DateUtil;
import cn.freemud.management.adapter.PaymentSdkAdapter; import cn.freemud.management.adapter.PaymentSdkAdapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto; import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
...@@ -18,6 +19,7 @@ import com.freemud.application.sdk.api.base.BaseResponse; ...@@ -18,6 +19,7 @@ import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp; import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
...@@ -34,10 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -34,10 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/** /**
...@@ -195,13 +194,23 @@ public class PaymentHandle { ...@@ -195,13 +194,23 @@ public class PaymentHandle {
} }
BaseResponse<OrderRefundResponse> orderRefundResponse = this.orderPayRefund(refundReq); BaseResponse<OrderRefundResponse> orderRefundResponse = this.orderPayRefund(refundReq);
String message = null; String message = null;
List<PayRefundResponse.PayRefundItem> refundItemList = new ArrayList<>();
if (orderRefundResponse == null) { if (orderRefundResponse == null) {
refundStatus = PayRefundStatus.RUNNING; refundStatus = PayRefundStatus.RUNNING;
} else { } else {
refundStatus = this.getFinalRefundStatus(Integer.valueOf(orderRefundResponse.getCode())); refundStatus = this.getFinalRefundStatus(Integer.valueOf(orderRefundResponse.getCode()));
message = orderRefundResponse.getMessage(); message = orderRefundResponse.getMessage();
OrderRefundResponse data = orderRefundResponse.getData();
PayRefundResponse.PayRefundItem refundItem = new PayRefundResponse.PayRefundItem();
refundItem.setPayChannelType(Integer.valueOf(PayChannelType.getByEbcode(data.getPayCode()).getIndex()));
refundItem.setPayChannelName(PayChannelType.getByEbcode(data.getPayCode()).getName());
refundItem.setAmount(data.getRefundAmount().intValue());
refundItem.setRefundTradeNo(data.getRefundTradeNo());
refundItem.setRefundDate(DateUtil.convert2Date(data.getRefundTime(), "yyyy-MM-dd HH:mm:ss").getTime());
refundItemList.add(refundItem);
} }
PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, refundReq.getRefundId()); PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, refundReq.getRefundId());
payRefundResponse.setPayRefundItemList(refundItemList);
if (message != null) { if (message != null) {
payRefundResponse.setMessage(message); payRefundResponse.setMessage(message);
} }
...@@ -422,6 +431,8 @@ public class PaymentHandle { ...@@ -422,6 +431,8 @@ public class PaymentHandle {
refundResponse.setThirdPartRefundTradeNo(refundData.getThirdPartRefundTradeNo()); refundResponse.setThirdPartRefundTradeNo(refundData.getThirdPartRefundTradeNo());
refundResponse.setThirdPartTradeNo(refundData.getThirdPartTradeNo()); refundResponse.setThirdPartTradeNo(refundData.getThirdPartTradeNo());
refundResponse.setTotalAmount(refundData.getTotalAmount()); refundResponse.setTotalAmount(refundData.getTotalAmount());
refundResponse.setPayCode(refundData.getPayCode());
refundResponse.setRefundTime(refundData.getRefundTime());
return ResponseUtils.success(refundResponse); return ResponseUtils.success(refundResponse);
} }
} }
......
...@@ -2,6 +2,7 @@ package cn.freemud.management.service.handle; ...@@ -2,6 +2,7 @@ package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.adapter.BaseQueryOrderRequestAdapter; import cn.freemud.management.adapter.BaseQueryOrderRequestAdapter;
import cn.freemud.management.adapter.OrderCancelReqAdapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest; import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.AfterSalesApplyClientEnum; import cn.freemud.management.enums.AfterSalesApplyClientEnum;
...@@ -243,6 +244,7 @@ public class SaasOrderHandle { ...@@ -243,6 +244,7 @@ public class SaasOrderHandle {
refundAgreeRequest.setOperationClient(request.getOperationClient()); refundAgreeRequest.setOperationClient(request.getOperationClient());
BaseOrderResponse baseOrderResponse = null; BaseOrderResponse baseOrderResponse = null;
if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) { if (PayRefundStatus.SUCCESS.equals(refundResponse.getPayRefundStatus())) {
refundAgreeRequest.setPayRefundItemList(OrderCancelReqAdapter.convert(refundResponse.getPayRefundItemList()));
// fisherman 判断是否在退款中, 如果是退款中 调用退货完成 // fisherman 判断是否在退款中, 如果是退款中 调用退货完成
if (orderBean.getAfterSalesOrderResp().getAfterSalesStatus().compareTo(AfterSalesRefunStateEnum.STATE_1.getIndex()) != 0) { if (orderBean.getAfterSalesOrderResp().getAfterSalesStatus().compareTo(AfterSalesRefunStateEnum.STATE_1.getIndex()) != 0) {
baseOrderResponse = orderCenterSdkService.orderRefundComplete(refundAgreeRequest); baseOrderResponse = orderCenterSdkService.orderRefundComplete(refundAgreeRequest);
...@@ -274,6 +276,7 @@ public class SaasOrderHandle { ...@@ -274,6 +276,7 @@ public class SaasOrderHandle {
refundAgreeRequest.setOperationClient(request.getOperationClient()); refundAgreeRequest.setOperationClient(request.getOperationClient());
PayRefundStatus payRefundStatus = refundResponse.getPayRefundStatus(); PayRefundStatus payRefundStatus = refundResponse.getPayRefundStatus();
if (payRefundStatus.getCode().equals(PayRefundStatus.SUCCESS.getCode())) { if (payRefundStatus.getCode().equals(PayRefundStatus.SUCCESS.getCode())) {
refundAgreeRequest.setPayRefundItemList(OrderCancelReqAdapter.convert(refundResponse.getPayRefundItemList()));
// 退款成功 调用 -> /afterSales/v2/adultRefundComplete // 退款成功 调用 -> /afterSales/v2/adultRefundComplete
orderCenterSdkService.orderRefundComplete(refundAgreeRequest); orderCenterSdkService.orderRefundComplete(refundAgreeRequest);
} else { } else {
......
...@@ -14,6 +14,8 @@ package com.freemud.application.sdk.api.ordercenter.request; ...@@ -14,6 +14,8 @@ package com.freemud.application.sdk.api.ordercenter.request;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class AfterSalesOperateReq { public class AfterSalesOperateReq {
...@@ -55,4 +57,37 @@ public class AfterSalesOperateReq { ...@@ -55,4 +57,37 @@ public class AfterSalesOperateReq {
* 售后退款状态 0:未定义(存量数据) 1:未退款 2:退款中 3:退款失败 4:已退款 * 售后退款状态 0:未定义(存量数据) 1:未退款 2:退款中 3:退款失败 4:已退款
*/ */
private Integer refundState; private Integer refundState;
/**
* 对退款明细的记录
*/
private List<OrderCancelReq.PayRefundItem> payRefundItemList;
@Data
public static class PayRefundItem {
/**
* 退款支付渠道
*/
private Integer payChannelType;
/**
* 退款支付渠道名称
*/
private String payChannelName;
/**
* 退款金额
*/
private Integer amount;
/**
* 退款流水编号
*/
private String refundTradeNo;
/**
* 退款时间 单位毫秒
*/
private Long refundDate;
/**
* 退款储值卡卡号(退款渠道为储值卡时,则必须传递)
*/
private String cardCode;
}
} }
...@@ -16,6 +16,7 @@ import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq; ...@@ -16,6 +16,7 @@ import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
@Data @Data
public class OrderCancelReq { public class OrderCancelReq {
...@@ -97,4 +98,37 @@ public class OrderCancelReq { ...@@ -97,4 +98,37 @@ public class OrderCancelReq {
* 是否部分退,默认否(全退) * 是否部分退,默认否(全退)
*/ */
private Boolean isPartRefund = false; private Boolean isPartRefund = false;
/**
* 对退款明细的记录
*/
private List<PayRefundItem> payRefundItemList;
@Data
public static class PayRefundItem {
/**
* 退款支付渠道
*/
private Integer payChannelType;
/**
* 退款支付渠道名称
*/
private String payChannelName;
/**
* 退款金额
*/
private Integer amount;
/**
* 退款流水编号
*/
private String refundTradeNo;
/**
* 退款时间 单位毫秒
*/
private Long refundDate;
/**
* 退款储值卡卡号(退款渠道为储值卡时,则必须传递)
*/
private String cardCode;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment