Commit 4c7b22bd by rui.zhu

Merge branch 'feature/售后单记录支付信息' into qa

parents b7789716 75867de5
......@@ -58,5 +58,14 @@ public class MultiOrderRefundResponse<T> {
@ApiModelProperty(value = "业务返回消息")
private String resultMsg;
@ApiModelProperty(value = "支付方式编号")
private String payMethodCode;
@ApiModelProperty(value = "现金类型")
private String cashType;
@ApiModelProperty(value = "支付条码")
private String uniqueCode;
}
}
\ No newline at end of file
......@@ -27,6 +27,7 @@ import cn.freemud.enums.PaySuccessSource;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.TradeState;
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.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
......@@ -1445,7 +1446,7 @@ public class PayServiceImpl {
refundResponse.setMsg(refundData.getResultMsg());
refundResponse.setRefundAmount(refundData.getRefundAmount());
refundResponse.setTotalAmount(refundData.getTotalAmount());
refundResponse.setRefundStatus(this.getRefundStatus(refundData.getResultCode()));
refundResponse.setRefundStatus(OrderCancelReqAdapter.getRefundStatus(refundData.getResultCode()));
refundResponse.setRefundTradeNo(refundData.getRefundTradeNo());
refundResponse.setTradeNo(refundData.getRefundTradeNo());
refundResponse.setThirdPartRefundTradeNo(refundData.getThirdPartRefundTradeNo());
......@@ -1462,20 +1463,8 @@ public class PayServiceImpl {
return ResponseUtils.error(refundNewResponse.getCode(), refundNewResponse.getMessage());
}
}
public Integer getRefundStatus(Integer resultCode) {
if (Objects.equals(resultCode, SUCCESS_RESPONSE_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else if (Objects.equals(resultCode, SUCCESS_RESPONSE_101_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else {
return Objects.equals(resultCode, REFUND_RESPONSE_CODE) ? PaymentRefundStatus.PAYMENT_REFUND_STATUS_4.getCode() : PaymentRefundStatus.PAYMENT_REFUND_STATUS_2.getCode();
}
}
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount) {
if (StringUtils.isBlank(partnerId)) {
return ResponseUtils.error("501", "商户号不能为空");
......
package cn.freemud.management.adapter;
import cn.freemud.base.util.DateUtil;
import cn.freemud.management.entities.dto.request.order.RefundSuccessCallbackVo;
import cn.freemud.management.entities.dto.response.pay.OrderRefundResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundData;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.PaymentRefundStatus;
import com.freemud.application.sdk.api.ordercenter.enums.CashTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.PayMethodEnum;
import com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq;
import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static cn.freemud.management.service.handle.PaymentHandle.*;
/**
* @author Clover.z
......@@ -27,4 +40,89 @@ public class OrderCancelReqAdapter {
return refundItemList;
}
public static PayRefundResponse.PayRefundItem convert(OrderRefundResponse orderRefundData) {
PayRefundResponse.PayRefundItem refundItem = new PayRefundResponse.PayRefundItem();
if (orderRefundData.getCashType() != null) {
refundItem.setPayChannelType(Integer.valueOf(orderRefundData.getCashType()));
refundItem.setPayChannelName(CashTypeEnum.getByCode(orderRefundData.getCashType()).getDesc());
} else {
refundItem.setPayChannelType(PayMethodEnum.getByCode(orderRefundData.getPayMethodCode()).getIndex());
refundItem.setPayChannelName(PayMethodEnum.getByCode(orderRefundData.getPayMethodCode()).getDesc());
}
refundItem.setAmount(orderRefundData.getRefundAmount().intValue());
refundItem.setRefundTradeNo(orderRefundData.getRefundTradeNo());
refundItem.setRefundTime(DateUtil.convert2Date(orderRefundData.getRefundTime(), "yyyy-MM-dd HH:mm:ss").getTime());
refundItem.setCardCode(PayMethodEnum.TSVC.getCode().equals(orderRefundData.getPayMethodCode()) ? orderRefundData.getUniqueCode() : null);
return refundItem;
}
public static List<PayRefundResponse.PayRefundItem> convertMultiRefundItem(List<MultiOrderRefundResponse.RefundPlatformResponse> orderRefundList) {
return orderRefundList.stream()
.map(r -> {
PayRefundResponse.PayRefundItem refundItem = new PayRefundResponse.PayRefundItem();
if (r.getCashType() != null) {
refundItem.setPayChannelType(Integer.valueOf(r.getCashType()));
refundItem.setPayChannelName(CashTypeEnum.getByCode(r.getCashType()).getDesc());
} else {
refundItem.setPayChannelType(PayMethodEnum.getByCode(r.getPayMethodCode()).getIndex());
refundItem.setPayChannelName(PayMethodEnum.getByCode(r.getPayMethodCode()).getDesc());
}
refundItem.setAmount(r.getSettleRefundAmount());
refundItem.setRefundTradeNo(r.getRefundTradeNo());
refundItem.setRefundTime(DateUtil.convert2Date(r.getRefundTime(), "yyyy-MM-dd HH:mm:ss").getTime());
refundItem.setCardCode(PayMethodEnum.TSVC.getCode().equals(r.getPayMethodCode()) ? r.getUniqueCode() : null);
return refundItem;
})
.collect(Collectors.toList());
}
public static List<PayRefundResponse.PayRefundItem> convert(RefundSuccessCallbackVo request) {
List<PayRefundResponse.PayRefundItem> payRefundItemList = Lists.newArrayList();
PayRefundResponse.PayRefundItem payRefundItem = new PayRefundResponse.PayRefundItem();
payRefundItem.setRefundTradeNo(request.getRefundTradeNo());
if (request.getCashType() != null) {
payRefundItem.setPayChannelType(Integer.valueOf(request.getCashType()));
payRefundItem.setPayChannelName(CashTypeEnum.getByCode(request.getCashType()).getDesc());
} else {
payRefundItem.setPayChannelType(PayMethodEnum.getByCode(request.getPayMethodCode()).getIndex());
payRefundItem.setPayChannelName(PayMethodEnum.getByCode(request.getPayMethodCode()).getDesc());
}
payRefundItem.setAmount(request.getRefundAmount());
payRefundItem.setRefundTime(DateUtil.convert2Date(request.getRefundTime(), "yyyy-MM-dd HH:mm:ss").getTime());
payRefundItem.setCardCode(PayMethodEnum.TSVC.getCode().equals(request.getPayMethodCode()) ? request.getUniqueCode() : null);
payRefundItemList.add(payRefundItem);
return payRefundItemList;
}
public static OrderRefundResponse convert(PayRefundData refundData) {
OrderRefundResponse refundResponse = new OrderRefundResponse();
refundResponse.setStatusCode(refundData.getResultCode());
refundResponse.setMsg(refundData.getResultMsg());
refundResponse.setRefundAmount(refundData.getRefundAmount());
refundResponse.setTotalAmount(refundData.getTotalAmount());
refundResponse.setRefundStatus(getRefundStatus(refundData.getResultCode()));
refundResponse.setRefundTradeNo(refundData.getRefundTradeNo());
refundResponse.setTradeNo(refundData.getRefundTradeNo());
refundResponse.setThirdPartRefundTradeNo(refundData.getThirdPartRefundTradeNo());
refundResponse.setThirdPartTradeNo(refundData.getThirdPartTradeNo());
refundResponse.setTotalAmount(refundData.getTotalAmount());
refundResponse.setCashType(refundData.getCashType());
refundResponse.setPayMethodCode(refundData.getPayMethodCode());
refundResponse.setUniqueCode(refundData.getUniqueCode());
refundResponse.setRefundTime(refundData.getRefundTime());
return refundResponse;
}
public static Integer getRefundStatus(Integer resultCode) {
if (Objects.equals(resultCode, SUCCESS_RESPONSE_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else if (Objects.equals(resultCode, SUCCESS_RESPONSE_101_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else {
return Objects.equals(resultCode, REFUND_RESPONSE_CODE) ? PaymentRefundStatus.PAYMENT_REFUND_STATUS_4.getCode() : PaymentRefundStatus.PAYMENT_REFUND_STATUS_2.getCode();
}
}
}
......@@ -72,4 +72,13 @@ public class RefundSuccessCallbackVo {
@ApiModelProperty(value = "间联退款单号")
private String refundEndTransId;
@ApiModelProperty(value = "支付方式编号", position = 10)
private String payMethodCode;
@ApiModelProperty(value = "现金类型", position = 11)
private String cashType;
@ApiModelProperty(value = "支付条码", position = 12)
private String uniqueCode;
}
......@@ -19,10 +19,6 @@ public class OrderRefundResponse {
* 退款成功时间
*/
private String refundTime;
/**
* 支付渠道编号
*/
private String payCode;
/**
* 支付方式
......@@ -36,4 +32,9 @@ public class OrderRefundResponse {
*/
private String cashType;
/**
* 支付条码, 当支付方式为储值卡的时候,该字段为卡号
*/
private String uniqueCode;
}
......@@ -25,4 +25,21 @@ public class PayRefundData {
* 支付渠道编号
*/
private String payCode;
/**
* 支付方式
* {@link com.freemud.application.sdk.api.ordercenter.enums.PayMethodEnum}
*/
private String payMethodCode;
/**
* 现金类型, 当payMethodCode为其他的时候,存在该值
* {@link com.freemud.application.sdk.api.ordercenter.enums.CashTypeEnum}
*/
private String cashType;
/**
* 支付条码, 当支付方式为储值卡的时候,该字段为卡号
*/
private String uniqueCode;
}
package cn.freemud.management.service.handle;
import cn.freemud.management.entities.dto.response.pay.OrderRefundResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundData;
import cn.freemud.management.enums.PaymentRefundStatus;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.util.ResponseUtils;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import org.apache.commons.lang.ObjectUtils;
import java.util.Objects;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/6/13 10:56
* @description :
*/
public class DemoMain {
public static void main(String[] args) {
String str = "{\n" +
" \"code\": \"100\",\n" +
" \"data\": {\n" +
" \"resultCode\": 82004005,\n" +
" \"resultMsg\": \"当前订单有退款记录没有完成\"\n" +
" },\n" +
" \"message\": \"success\"\n" +
"}";
BaseResponse<PayRefundData> refundNewResponse = JSON.parseObject(str, new TypeReference<BaseResponse<PayRefundData>>() {
});
if (Objects.equals(refundNewResponse.getCode(), "100") && refundNewResponse.getData() != null) {
refundNewResponse.setCode(refundNewResponse.getData().getResultCode().toString());
refundNewResponse.setMessage(refundNewResponse.getData().getResultMsg());
}
if (Objects.equals(refundNewResponse.getCode(), "100")) {
PayRefundData refundData = refundNewResponse.getData();
if (null != refundData) {
OrderRefundResponse refundResponse = new OrderRefundResponse();
refundResponse.setStatusCode(refundData.getResultCode());
refundResponse.setMsg(refundData.getResultMsg());
refundResponse.setRefundAmount(refundData.getRefundAmount());
refundResponse.setTotalAmount(refundData.getTotalAmount());
refundResponse.setRefundStatus(getRefundStatus(refundData.getResultCode()));
refundResponse.setRefundTradeNo(refundData.getRefundTradeNo());
refundResponse.setTradeNo(refundData.getRefundTradeNo());
refundResponse.setThirdPartRefundTradeNo(refundData.getThirdPartRefundTradeNo());
refundResponse.setThirdPartTradeNo(refundData.getThirdPartTradeNo());
refundResponse.setTotalAmount(refundData.getTotalAmount());
// return ResponseUtils.success(refundResponse);
}
}
BaseResponse<OrderRefundResponse> orderRefundResponse = ResponseUtils.error(refundNewResponse.getCode(), refundNewResponse.getMessage());
// Integer refundStatus = PayRefundStatus.SUCCESS;
Integer refundStatus = 1;
if (orderRefundResponse == null) {
// refundStatus = PayRefundStatus.RUNNING;
refundStatus = 4;
} else {
refundStatus = getFinalRefundStatus(Integer.valueOf(orderRefundResponse.getCode()));
}
System.out.println(refundStatus);
}
private static Integer getFinalRefundStatus(Integer resultCode) {
switch (resultCode) {
// 退款中状态码需要单独处理
case 8200305:
// return PayRefundStatus.RUNNING;
return 4;
// 退款成功
case 100:
// return PayRefundStatus.SUCCESS;
return 1;
default:
// return PayRefundStatus.FAIL;
return 2;
}
}
private static final String SUCCESS = "100";
public static final Integer SUCCESS_RESPONSE_CODE_INT = 100;
public static final Integer SUCCESS_RESPONSE_101_CODE_INT = 101;
public static final Integer REFUND_RESPONSE_CODE = 8200305;
public static Integer getRefundStatus(Integer resultCode) {
if (Objects.equals(resultCode, SUCCESS_RESPONSE_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else if (Objects.equals(resultCode, SUCCESS_RESPONSE_101_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else {
return Objects.equals(resultCode, REFUND_RESPONSE_CODE) ? PaymentRefundStatus.PAYMENT_REFUND_STATUS_4.getCode() : PaymentRefundStatus.PAYMENT_REFUND_STATUS_2.getCode();
}
}
}
package cn.freemud.management.service.handle;
import cn.freemud.base.util.DateUtil;
import cn.freemud.management.adapter.OrderCancelReqAdapter;
import cn.freemud.management.adapter.PaymentSdkAdapter;
import cn.freemud.management.entities.dto.request.pay.AgentPayRefundReq;
import cn.freemud.management.entities.dto.response.pay.AgentPayRefundResp;
......@@ -8,7 +9,9 @@ import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.management.util.RedisUtil;
import cn.freemud.redis.RedisCache;
import com.freemud.application.sdk.api.ordercenter.enums.CashTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.enums.PayMethodEnum;
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.request.order.MultiOrderRefundRequest;
......@@ -111,20 +114,7 @@ public class MultiRefundService {
PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, req.getRefundTradeNo());
if (PayRefundStatus.SUCCESS.equals(refundStatus)) {
List<PayRefundResponse.PayRefundItem> payRefundItemList = 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.getSettleRefundAmount());
refundItem.setRefundTradeNo(r.getRefundTradeNo());
refundItem.setRefundTime(DateUtil.convert2Date(r.getRefundTime(), "yyyy-MM-dd HH:mm:ss").getTime());
//TODO 混合支付储值卡卡号 这里需要跟支付对接,下游设计中
// refundItem.setCardCode("?");
return refundItem;
})
.collect(Collectors.toList());
payRefundResponse.setPayRefundItemList(payRefundItemList);
payRefundResponse.setPayRefundItemList(OrderCancelReqAdapter.convertMultiRefundItem(resp.getData().getRefundPlatformResponseList()));
}
if (StringUtils.isNotEmpty(message)) {
payRefundResponse.setMessage(message);
......
package cn.freemud.management.service.handle;
import cn.freemud.base.util.DateUtil;
import cn.freemud.management.adapter.OrderCancelReqAdapter;
import cn.freemud.management.adapter.PaymentSdkAdapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
......@@ -201,19 +202,7 @@ public class PaymentHandle {
} else {
refundStatus = this.getFinalRefundStatus(Integer.valueOf(orderRefundResponse.getCode()));
message = orderRefundResponse.getMessage();
OrderRefundResponse data = orderRefundResponse.getData();
PayRefundResponse.PayRefundItem refundItem = new PayRefundResponse.PayRefundItem();
if (data.getCashType() != null) {
refundItem.setPayChannelType(Integer.valueOf(data.getCashType()));
refundItem.setPayChannelName(CashTypeEnum.getByCode(data.getCashType()).getDesc());
} else {
refundItem.setPayChannelType(PayMethodEnum.getByCode(data.getPayMethodCode()).getIndex());
refundItem.setPayChannelName(PayMethodEnum.getByCode(data.getPayMethodCode()).getDesc());
}
refundItem.setAmount(data.getRefundAmount().intValue());
refundItem.setRefundTradeNo(data.getRefundTradeNo());
refundItem.setRefundTime(DateUtil.convert2Date(data.getRefundTime(), "yyyy-MM-dd HH:mm:ss").getTime());
refundItemList.add(refundItem);
refundItemList.add(OrderCancelReqAdapter.convert(orderRefundResponse.getData()));
}
PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, refundReq.getRefundId());
payRefundResponse.setPayRefundItemList(refundItemList);
......@@ -223,13 +212,6 @@ public class PaymentHandle {
return payRefundResponse;
}
/**
* 代付订单退款
*
*/
private PayRefundStatus getFinalRefundStatus(Integer resultCode) {
return PayRefundStatus.getByPayResultCode(resultCode);
}
......@@ -421,20 +403,7 @@ public class PaymentHandle {
if (Objects.equals(refundNewResponse.getCode(), "100")) {
PayRefundData refundData = refundNewResponse.getData();
if (null != refundData) {
OrderRefundResponse refundResponse = new OrderRefundResponse();
refundResponse.setStatusCode(refundData.getResultCode());
refundResponse.setMsg(refundData.getResultMsg());
refundResponse.setRefundAmount(refundData.getRefundAmount());
refundResponse.setTotalAmount(refundData.getTotalAmount());
refundResponse.setRefundStatus(this.getRefundStatus(refundData.getResultCode()));
refundResponse.setRefundTradeNo(refundData.getRefundTradeNo());
refundResponse.setTradeNo(refundData.getRefundTradeNo());
refundResponse.setThirdPartRefundTradeNo(refundData.getThirdPartRefundTradeNo());
refundResponse.setThirdPartTradeNo(refundData.getThirdPartTradeNo());
refundResponse.setTotalAmount(refundData.getTotalAmount());
refundResponse.setPayCode(refundData.getPayCode());
refundResponse.setRefundTime(refundData.getRefundTime());
return ResponseUtils.success(refundResponse);
return ResponseUtils.success(OrderCancelReqAdapter.convert(refundData));
}
}
return ResponseUtils.error(refundNewResponse.getCode(), refundNewResponse.getMessage());
......@@ -452,16 +421,4 @@ public class PaymentHandle {
return ResponseUtils.success();
}
}
private Integer getRefundStatus(Integer resultCode) {
if (Objects.equals(resultCode, SUCCESS_RESPONSE_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else if (Objects.equals(resultCode, SUCCESS_RESPONSE_101_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else {
return Objects.equals(resultCode, REFUND_RESPONSE_CODE) ? PaymentRefundStatus.PAYMENT_REFUND_STATUS_4.getCode() : PaymentRefundStatus.PAYMENT_REFUND_STATUS_2.getCode();
}
}
}
package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.adapter.OrderCancelReqAdapter;
import cn.freemud.management.constant.ResponseCodeConstant;
import cn.freemud.management.entities.dto.request.console.*;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
......@@ -510,6 +511,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
}
refundResponse.setPayRefundStatus(payRefundStatus);
refundResponse.setRefundId(request.getRefundId());
refundResponse.setPayRefundItemList(OrderCancelReqAdapter.convert(request));
OrderManagerRequest omRequest = new OrderManagerRequest();
omRequest.setReason(reason);
......
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