Commit ed597807 by ping.wu

支付退款代码整理

parent 622d5753
...@@ -55,7 +55,8 @@ public class DeliveryController { ...@@ -55,7 +55,8 @@ public class DeliveryController {
@ApiOperation(value = "麦咖啡配送回调", notes = "麦咖啡配送回调", produces = "application/json") @ApiOperation(value = "麦咖啡配送回调", notes = "麦咖啡配送回调", produces = "application/json")
@PostMapping("/delivery/macCafeCallback") @PostMapping("/delivery/macCafeCallback")
public BaseResponse macCafeCallback(@Valid @LogParams @RequestBody MacCafeCallbackUrlRequestDto request) { public BaseResponse macCafeCallback(@Valid @LogParams @RequestBody MacCafeCallbackUrlRequestDto request) {
return deliveryService.macCafeCallbackUrl(request); // return deliveryService.macCafeCallbackUrl(request);
return new BaseResponse("1","101");
} }
@ApiAnnotation(logMessage = "商城配送回调") @ApiAnnotation(logMessage = "商城配送回调")
@ApiOperation(value = "商城配送回调", notes = "商城配送回调", produces = "application/json") @ApiOperation(value = "商城配送回调", notes = "商城配送回调", produces = "application/json")
......
...@@ -20,7 +20,7 @@ public interface ThirdDeliveryService { ...@@ -20,7 +20,7 @@ public interface ThirdDeliveryService {
/** /**
* 配送回调 * 配送回调
*/ */
BaseResponse macCafeCallbackUrl(MacCafeCallbackUrlRequestDto request); // BaseResponse macCafeCallbackUrl(MacCafeCallbackUrlRequestDto request);
/** /**
......
...@@ -212,76 +212,76 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService { ...@@ -212,76 +212,76 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
* *
* @param request * @param request
*/ */
@Override // @Override
public BaseResponse macCafeCallbackUrl(MacCafeCallbackUrlRequestDto request) { // public BaseResponse macCafeCallbackUrl(MacCafeCallbackUrlRequestDto request) {
OrderManagerRequest orderManagerRequest = new OrderManagerRequest(); // OrderManagerRequest orderManagerRequest = new OrderManagerRequest();
orderManagerRequest.setPartnerId(request.getPartnerId()); // orderManagerRequest.setPartnerId(request.getPartnerId());
orderManagerRequest.setOrderId(request.getOrderId()); // orderManagerRequest.setOrderId(request.getOrderId());
if ("1".equals(request.getCancelApplicant())) { // if ("1".equals(request.getCancelApplicant())) {
orderManagerRequest.setReason(StringUtils.isNotBlank(request.getCancelReason()) ? request.getCancelReason() : "餐道主动取消"); // orderManagerRequest.setReason(StringUtils.isNotBlank(request.getCancelReason()) ? request.getCancelReason() : "餐道主动取消");
} else { // } else {
orderManagerRequest.setReason(null); // orderManagerRequest.setReason(null);
} // }
orderManagerRequest.setOperator("配送回调"); // orderManagerRequest.setOperator("配送回调");
//
//
Integer reviewStatus = request.getReviewStatus(); // Integer reviewStatus = request.getReviewStatus();
int deliveryStatus = request.getDeliveryStatus(); // int deliveryStatus = request.getDeliveryStatus();
if (reviewStatus != null && reviewStatus.equals(DeliveryReviewStatus.AGREE.getCode())) { // if (reviewStatus != null && reviewStatus.equals(DeliveryReviewStatus.AGREE.getCode())) {
orderManagerRequest.setOperateType(OperateType.ORDER_AGREE_REFUND.getOpType()); // orderManagerRequest.setOperateType(OperateType.ORDER_AGREE_REFUND.getOpType());
orderManagerRequest.setReason("配送回调-同意退款"); // orderManagerRequest.setReason("配送回调-同意退款");
return orderManagerAdapter.orderPayRefund(orderManagerRequest); // return orderManagerAdapter.orderPayRefund(orderManagerRequest);
} // }
if (reviewStatus != null && reviewStatus.equals(DeliveryReviewStatus.REJECT.getCode())) { // if (reviewStatus != null && reviewStatus.equals(DeliveryReviewStatus.REJECT.getCode())) {
orderManagerRequest.setOperateType(OperateType.ORDER_REJECT_REFUND.getOpType()); // orderManagerRequest.setOperateType(OperateType.ORDER_REJECT_REFUND.getOpType());
orderManagerRequest.setReason("配送回调-拒绝退款"); // orderManagerRequest.setReason("配送回调-拒绝退款");
return orderManagerAdapter.mcCafeOrderRejectRefund(orderManagerRequest); // return orderManagerAdapter.mcCafeOrderRejectRefund(orderManagerRequest);
} // }
if (deliveryStatus == DeliveryStatus.RIDERGETMEAL.getCode() || deliveryStatus == DeliveryStatus.RIDERSTARTDELIVERY.getCode()) { // if (deliveryStatus == DeliveryStatus.RIDERGETMEAL.getCode() || deliveryStatus == DeliveryStatus.RIDERSTARTDELIVERY.getCode()) {
orderManagerRequest.setOperateType(OperateType.ORDER_SEND.getOpType()); // orderManagerRequest.setOperateType(OperateType.ORDER_SEND.getOpType());
BaseResponse<OrderManagerResponse> baseResponse = orderManagerAdapter.orderDelivery(orderManagerRequest); // BaseResponse<OrderManagerResponse> baseResponse = orderManagerAdapter.orderDelivery(orderManagerRequest);
if (ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(baseResponse.getCode())) { // if (ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(baseResponse.getCode())) {
updateDeliveryStatus(request); // updateDeliveryStatus(request);
} // }
sendMcCafeMicroMessage(request.getPartnerId(), request.getOrderId(), request.getDeliveryStatus()); // sendMcCafeMicroMessage(request.getPartnerId(), request.getOrderId(), request.getDeliveryStatus());
return baseResponse; // return baseResponse;
} else if (deliveryStatus == DeliveryStatus.DELIVERYARRIVED.getCode()) { // } else if (deliveryStatus == DeliveryStatus.DELIVERYARRIVED.getCode()) {
orderManagerRequest.setOperateType(OperateType.ORDER_AFFIRM.getOpType()); // orderManagerRequest.setOperateType(OperateType.ORDER_AFFIRM.getOpType());
BaseResponse<OrderManagerResponse> baseResponse = orderManagerAdapter.orderAffirm(orderManagerRequest, null); // BaseResponse<OrderManagerResponse> baseResponse = orderManagerAdapter.orderAffirm(orderManagerRequest, null);
if (ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(baseResponse.getCode())) { // if (ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(baseResponse.getCode())) {
updateDeliveryStatus(request); // updateDeliveryStatus(request);
} // }
sendMcCafeMicroMessage(request.getPartnerId(), request.getOrderId(), request.getDeliveryStatus()); // sendMcCafeMicroMessage(request.getPartnerId(), request.getOrderId(), request.getDeliveryStatus());
return baseResponse; // return baseResponse;
} else if (deliveryStatus == DeliveryStatus.WATINGORDER.getCode() || deliveryStatus == DeliveryStatus.SYSTEMGETORDER.getCode() // } else if (deliveryStatus == DeliveryStatus.WATINGORDER.getCode() || deliveryStatus == DeliveryStatus.SYSTEMGETORDER.getCode()
|| deliveryStatus == DeliveryStatus.ALLOTRIDER.getCode() || deliveryStatus == DeliveryStatus.RIDERARRIVESTORE.getCode()) { // || deliveryStatus == DeliveryStatus.ALLOTRIDER.getCode() || deliveryStatus == DeliveryStatus.RIDERARRIVESTORE.getCode()) {
updateDeliveryStatus(request); // updateDeliveryStatus(request);
return ResponseUtil.success(); // return ResponseUtil.success();
} else if (deliveryStatus == DeliveryStatus.COLLECTING.getCode()) { // } else if (deliveryStatus == DeliveryStatus.COLLECTING.getCode()) {
//推送订单到拉单队列 // //推送订单到拉单队列
OrderCollectReq orderCollectReq = new OrderCollectReq(); // OrderCollectReq orderCollectReq = new OrderCollectReq();
orderCollectReq.setOrderCode(request.getOrderId()); // orderCollectReq.setOrderCode(request.getOrderId());
orderCollectReq.setPartnerId(request.getPartnerId()); // orderCollectReq.setPartnerId(request.getPartnerId());
OrderBaseResp baseResponse = orderSdkService.collectOrder(orderCollectReq, LogThreadLocal.getTrackingNo()); // OrderBaseResp baseResponse = orderSdkService.collectOrder(orderCollectReq, LogThreadLocal.getTrackingNo());
if (ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(baseResponse.getCode())) { // if (ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(baseResponse.getCode())) {
ResponseUtil.error(ResponseResult.ORDER_COLLECT_FAILED); // ResponseUtil.error(ResponseResult.ORDER_COLLECT_FAILED);
} // }
//回调成功,记录汇集状态 // //回调成功,记录汇集状态
updateDeliveryStatus(request); // updateDeliveryStatus(request);
return ResponseUtil.success(); // return ResponseUtil.success();
} else if (deliveryStatus == DeliveryStatus.DELIVERYERROR.getCode()) { // } else if (deliveryStatus == DeliveryStatus.DELIVERYERROR.getCode()) {
AssortmentUpdateDeliveryAbnormalRequest assortmentUpdateDeliveryAbnormalRequest = AssortmentUpdateDeliveryAbnormalRequest.builder() // AssortmentUpdateDeliveryAbnormalRequest assortmentUpdateDeliveryAbnormalRequest = AssortmentUpdateDeliveryAbnormalRequest.builder()
.abnormalDesc(request.getRemark()) // .abnormalDesc(request.getRemark())
.deliveryId(request.getDeliveryId()) // .deliveryId(request.getDeliveryId())
.orderCode(request.getOrderId()) // .orderCode(request.getOrderId())
.partnerId(request.getPartnerId()) // .partnerId(request.getPartnerId())
.operator("餐道") // .operator("餐道")
.build(); // .build();
orderCenterSdkService.updateDeliveryAbnormal(assortmentUpdateDeliveryAbnormalRequest); // orderCenterSdkService.updateDeliveryAbnormal(assortmentUpdateDeliveryAbnormalRequest);
return ResponseUtil.success(); // return ResponseUtil.success();
} // }
return ResponseUtil.error(ResponseResult.ORDER_DELIVERY_CALL_BACK_FAILED); // return ResponseUtil.error(ResponseResult.ORDER_DELIVERY_CALL_BACK_FAILED);
} // }
private OrderBaseResponse updateDeliveryStatus(MacCafeCallbackUrlRequestDto request) { private OrderBaseResponse updateDeliveryStatus(MacCafeCallbackUrlRequestDto request) {
UpdateDeliveryInfoByIdRequest updateDeliveryInfoByIdRequest = new UpdateDeliveryInfoByIdRequest(); UpdateDeliveryInfoByIdRequest updateDeliveryInfoByIdRequest = new UpdateDeliveryInfoByIdRequest();
......
...@@ -1329,7 +1329,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -1329,7 +1329,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
extendParams.put("mealType", "pickup"); extendParams.put("mealType", "pickup");
} }
orderPayRefundRequest.setExtendParams(extendParams); orderPayRefundRequest.setExtendParams(extendParams);
response = payService.orderRefund(orderPayRefundRequest); // response = payService.orderRefund(orderPayRefundRequest);
if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) { if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed"); return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
} }
......
...@@ -27,8 +27,10 @@ import cn.freemud.entities.vo.*; ...@@ -27,8 +27,10 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.handler.MemberBlacklistHandler; import cn.freemud.handler.MemberBlacklistHandler;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
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;
import cn.freemud.management.entities.dto.response.pay.OrderRefundResponse; import cn.freemud.management.entities.dto.response.pay.OrderRefundResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.manager.SpellGroupOrderDataManager; import cn.freemud.manager.SpellGroupOrderDataManager;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.BuriedPointService; import cn.freemud.service.BuriedPointService;
...@@ -683,19 +685,24 @@ public class MallOrderServiceImpl implements MallOrderService { ...@@ -683,19 +685,24 @@ public class MallOrderServiceImpl implements MallOrderService {
* @param orderBean * @param orderBean
*/ */
private BaseResponse partnerNoTakeOrder(OrderRefundVo orderRefundVo, OrderBeanV1 orderBean, String fatherOrderId) { private BaseResponse partnerNoTakeOrder(OrderRefundVo orderRefundVo, OrderBeanV1 orderBean, String fatherOrderId) {
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> response = null; // PayRefundResponse response = null;
Long refundId = System.currentTimeMillis(); Long refundId = System.currentTimeMillis();
String partnerId = orderBean.getCompanyId(); String partnerId = orderBean.getCompanyId();
int state = PayRefundStatus.SUCCESS.getCode(); int state = PayRefundStatus.SUCCESS.getCode();
if (orderBean.getAmount() != 0) { if (orderBean.getAmount() != 0) {
//调用支付退款 //调用支付退款
PayRefundRequestDto orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, fatherOrderId); // PayRefundRequestDto orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, fatherOrderId);
response = payServiceImpl.orderRefund(orderPayRefundRequest); // response = payServiceImpl.orderRefund(orderPayRefundRequest);
if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) { // if (response == null || response.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(response.getCode())) {
return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed"); // return ResponseUtil.error(ResponseResult.ORDER__ERRORREFUND.getCode(), "orderRefund_failed");
} // }
//获取支付返回退款状态
// state = response.getData().getRefundStatus() == null ? PayRefundStatus.SUCCESS.getCode() : response.getData().getRefundStatus();
OrderManagerRequest request = new OrderManagerRequest();
request.setReason(orderRefundVo.getReason());
PayRefundResponse payRefundResponse = payServiceImpl.payRefundCommon(request, orderBean);
//获取支付返回退款状态 //获取支付返回退款状态
state = response.getData().getRefundStatus() == null ? PayRefundStatus.SUCCESS.getCode() : response.getData().getRefundStatus(); state = payRefundResponse.getPayRefundStatus() == null ? PayRefundStatus.SUCCESS.getCode() : payRefundResponse.getPayRefundStatus().getCode();
} }
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(),
partnerId, AfterSalesType.USER_CANCEL, orderRefundVo.getReason(), LogThreadLocal.getTrackingNo(), refundId.toString()); partnerId, AfterSalesType.USER_CANCEL, orderRefundVo.getReason(), LogThreadLocal.getTrackingNo(), refundId.toString());
......
...@@ -2081,7 +2081,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2081,7 +2081,7 @@ public class OrderServiceImpl implements Orderservice {
if (orderBean.getAmount() != 0) { if (orderBean.getAmount() != 0) {
OrderManagerRequest orderManagerRequest = new OrderManagerRequest(); OrderManagerRequest orderManagerRequest = new OrderManagerRequest();
orderManagerRequest.setReason(orderRefundVo.getReason()); orderManagerRequest.setReason(orderRefundVo.getReason());
PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(orderManagerRequest, orderBean); PayRefundResponse refundResponse = payServiceImpl.payRefundCommon(orderManagerRequest, orderBean);
state = refundResponse.getPayRefundStatus().getCode(); state = refundResponse.getPayRefundStatus().getCode();
} }
...@@ -2824,7 +2824,11 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2824,7 +2824,11 @@ public class OrderServiceImpl implements Orderservice {
String desc = "支付未及时回调"; String desc = "支付未及时回调";
PayRefundRequestDto orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, orderBean.getOid()); PayRefundRequestDto orderPayRefundRequest = orderAdapter.getOrderPayRefundRequest(orderBean, refundId, orderBean.getOid());
// TODO: 22-6-23 待联调修改
response = payServiceImpl.orderRefund(orderPayRefundRequest); response = payServiceImpl.orderRefund(orderPayRefundRequest);
// OrderManagerRequest request = new OrderManagerRequest();
// request.setReason(desc);
// PayRefundResponse response = payServiceImpl.payRefundCommon(request, orderBean);
if (response != null && noPay.equals(response.getCode())) { if (response != null && noPay.equals(response.getCode())) {
return; return;
} }
...@@ -3517,6 +3521,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3517,6 +3521,7 @@ public class OrderServiceImpl implements Orderservice {
if (Integer.valueOf(1).equals(queryRefundFailuresListDto.getLastFailureType()) || Integer.valueOf(2).equals(queryRefundFailuresListDto.getLastFailureType())) { if (Integer.valueOf(1).equals(queryRefundFailuresListDto.getLastFailureType()) || Integer.valueOf(2).equals(queryRefundFailuresListDto.getLastFailureType())) {
Long refundId = System.currentTimeMillis(); Long refundId = System.currentTimeMillis();
// TODO: 22-6-23 退款逻辑待合并
if (orderBean.getAmount() != 0) { if (orderBean.getAmount() != 0) {
if (null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size() > 0) { if (null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size() > 0) {
//调用支付退款 //调用支付退款
...@@ -3778,8 +3783,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3778,8 +3783,9 @@ public class OrderServiceImpl implements Orderservice {
PayRefundResponse refundResponse; PayRefundResponse refundResponse;
try { try {
if (null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size() > 0) { if (null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size() > 0) {
refundResponse = paymentHandle.multiRefund(orderBean); refundResponse = payServiceImpl.payRefundCommon(null,orderBean);
} else { } else {
// TODO: 22-6-23 待考虑合并到上面一起
refundResponse = paymentHandle.refund("用户买券订单-申请退款", orderBean); refundResponse = paymentHandle.refund("用户买券订单-申请退款", orderBean);
} }
if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) { if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
...@@ -3936,5 +3942,4 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3936,5 +3942,4 @@ public class OrderServiceImpl implements Orderservice {
this.sendPaySuccessMessage(orderBean); this.sendPaySuccessMessage(orderBean);
} }
} }
...@@ -28,13 +28,13 @@ import cn.freemud.enums.ResponseResult; ...@@ -28,13 +28,13 @@ import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.TradeState; import cn.freemud.enums.TradeState;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
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.pay.PayRefundRequestDto; import cn.freemud.management.entities.dto.request.pay.PayRefundRequestDto;
import cn.freemud.management.entities.dto.request.pay.PaymentQueryOrderRequestDto; import cn.freemud.management.entities.dto.request.pay.PaymentQueryOrderRequestDto;
import cn.freemud.management.entities.dto.response.pay.OrderRefundResponse; import cn.freemud.management.entities.dto.response.pay.*;
import cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundData;
import cn.freemud.management.entities.dto.response.pay.PaymentQueryOrderResponseDto; import cn.freemud.management.entities.dto.response.pay.PaymentQueryOrderResponseDto;
import cn.freemud.management.enums.PaymentRefundStatus; import cn.freemud.management.enums.PaymentRefundStatus;
import cn.freemud.management.service.handle.PaymentHandle;
import cn.freemud.management.thirdparty.MulitiPaymentClient; import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.management.thirdparty.OMSPaymentClient; import cn.freemud.management.thirdparty.OMSPaymentClient;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
...@@ -100,6 +100,8 @@ public class PayServiceImpl { ...@@ -100,6 +100,8 @@ public class PayServiceImpl {
private PaymentNewClient paymentNewClient; private PaymentNewClient paymentNewClient;
@Autowired @Autowired
private OMSPaymentClient omsPaymentClient; private OMSPaymentClient omsPaymentClient;
@Autowired
private PaymentHandle paymentHandle;
@Autowired @Autowired
private AssortmentOpenPlatformWxappManager openPlatformWxappManager; private AssortmentOpenPlatformWxappManager openPlatformWxappManager;
...@@ -861,20 +863,6 @@ public class PayServiceImpl { ...@@ -861,20 +863,6 @@ public class PayServiceImpl {
/** /**
* 支付退款
*/
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> orderRefund(PayRefundRequestDto orderPayRefundRequest) {
return orderPayRefund(orderPayRefundRequest);
}
/**
* 混合支付退款接口
*/
public MultiOrderRefundResponse paymentApplicationRefund(MultiOrderRefundRequest multiOrderRefundRequest, String partnerId) {
return mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest, partnerId);
}
/**
* 批量支付退款 * 批量支付退款
*/ */
public PayBatchRefundResponse batchRefund(BatchOrderRefundV2Request batchOrderRefundV2Request) { public PayBatchRefundResponse batchRefund(BatchOrderRefundV2Request batchOrderRefundV2Request) {
...@@ -1644,4 +1632,33 @@ public class PayServiceImpl { ...@@ -1644,4 +1632,33 @@ public class PayServiceImpl {
return orderPayResponse; return orderPayResponse;
} }
/**
* 支付退款
*/
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> orderRefund(PayRefundRequestDto orderPayRefundRequest) {
return orderPayRefund(orderPayRefundRequest);
}
/**
* 混合支付退款接口
*/
public MultiOrderRefundResponse paymentApplicationRefund(MultiOrderRefundRequest multiOrderRefundRequest, String partnerId) {
return mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest, partnerId);
}
/**
* 提取 退款公共代码
*
* @param request
* @param orderBean
* @return
*/
public PayRefundResponse payRefundCommon(OrderManagerRequest request, OrderBeanV1 orderBean) {
PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(request, orderBean);
return refundResponse;
}
} }
...@@ -72,6 +72,7 @@ public interface PaymentNewClient { ...@@ -72,6 +72,7 @@ public interface PaymentNewClient {
/** /**
* 支付查询 * 支付查询
* 关闭预支付使用
*/ */
@LogIgnoreFeign(logMessage="payQuery") @LogIgnoreFeign(logMessage="payQuery")
@PostMapping("paymentcenter/query") @PostMapping("paymentcenter/query")
......
...@@ -34,9 +34,9 @@ public class OrderBeanFactory { ...@@ -34,9 +34,9 @@ public class OrderBeanFactory {
// String source = orderBean.getSource(); // String source = orderBean.getSource();
String orderClient = orderBean.getOrderClient(); String orderClient = orderBean.getOrderClient();
String companyId = orderBean.getCompanyId(); String companyId = orderBean.getCompanyId();
if (macCafePartnerId.equals(companyId)){ // if (macCafePartnerId.equals(companyId)){
return applicationContext.getBean(McCafeMangerServiceImpl.class); // return applicationContext.getBean(McCafeMangerServiceImpl.class);
} // }
// if (OrderSource.BDWM.getSource().equals(source) || OrderSource.JDWM.getSource().equals(source) // if (OrderSource.BDWM.getSource().equals(source) || OrderSource.JDWM.getSource().equals(source)
// || OrderSource.MTWM.getSource().equals(source) || OrderSource.ELEME.getSource().equals(source) // || OrderSource.MTWM.getSource().equals(source) || OrderSource.ELEME.getSource().equals(source)
// || OrderSource.FMWD.getSource().equals(source) || OrderSource.EBAI.getSource().equals(source) // || OrderSource.FMWD.getSource().equals(source) || OrderSource.EBAI.getSource().equals(source)
......
...@@ -194,25 +194,25 @@ public class OrderManagerAdapter { ...@@ -194,25 +194,25 @@ public class OrderManagerAdapter {
/** /**
* 同意退款或者取消订单 * 同意退款或者取消订单
*/ */
public BaseResponse orderPayRefund(OrderManagerRequest request) { // public BaseResponse orderPayRefund(OrderManagerRequest request) {
//查询订单 // //查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId()); // OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId());
if (null == orderBean) { // if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST); // return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} // }
if (CollectionUtils.isNotEmpty(orderBean.getRefundList())) { // if (CollectionUtils.isNotEmpty(orderBean.getRefundList())) {
//订单接单参数校验 // //订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.orderAgreeRefundMCCafe(orderBean, request); // BaseResponse verifyResponse = orderVerifyHandle.orderAgreeRefundMCCafe(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { // if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request, orderBean, verifyResponse); // return handleResponse(request, orderBean, verifyResponse);
} // }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean); // BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderAgreeRefund(request, orderBean);
return handleResponse(request, orderBean, orderManagerResponse); // return handleResponse(request, orderBean, orderManagerResponse);
} else { // } else {
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancel(request, orderBean); // BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderCancel(request, orderBean);
return handleResponse(request, orderBean, orderManagerResponse); // return handleResponse(request, orderBean, orderManagerResponse);
} // }
} // }
/** /**
* 拒绝退款 * 拒绝退款
...@@ -264,20 +264,20 @@ public class OrderManagerAdapter { ...@@ -264,20 +264,20 @@ public class OrderManagerAdapter {
* @param request * @param request
* @return * @return
*/ */
public BaseResponse mcCafeOrderRejectRefund(OrderManagerRequest request) { // public BaseResponse mcCafeOrderRejectRefund(OrderManagerRequest request) {
//查询订单 // //查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId()); // OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId());
if (null == orderBean) { // if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST); // return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} // }
//订单接单参数校验 // //订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.mcCafeOrderRejectRefund(orderBean, request); // BaseResponse verifyResponse = orderVerifyHandle.mcCafeOrderRejectRefund(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) { // if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return handleResponse(request, orderBean, verifyResponse); // return handleResponse(request, orderBean, verifyResponse);
} // }
BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderRejectRefund(request, orderBean); // BaseResponse<OrderManagerResponse> orderManagerResponse = orderBeanFactory.getOrderManagerService(orderBean).orderRejectRefund(request, orderBean);
return handleResponse(request, orderBean, orderManagerResponse); // return handleResponse(request, orderBean, orderManagerResponse);
} // }
private BaseResponse<OrderManagerResponse> handleResponse(OrderManagerRequest request, OrderBeanV1 orderBean, BaseResponse result) { private BaseResponse<OrderManagerResponse> handleResponse(OrderManagerRequest request, OrderBeanV1 orderBean, BaseResponse result) {
......
...@@ -19,6 +19,7 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp ...@@ -19,6 +19,7 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp
import com.freemud.application.sdk.api.base.BaseResponse; 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.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1; import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1;
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;
...@@ -64,9 +65,6 @@ public class PaymentHandle { ...@@ -64,9 +65,6 @@ public class PaymentHandle {
public static final Integer REFUND_RESPONSE_CODE = 8200305; public static final Integer REFUND_RESPONSE_CODE = 8200305;
@Value("${mccafe.partner.id}")
private String macCafePartnerId;
@Autowired @Autowired
private PaymentSdkAdapter paymentSdkAdapter; private PaymentSdkAdapter paymentSdkAdapter;
@Autowired @Autowired
...@@ -75,8 +73,6 @@ public class PaymentHandle { ...@@ -75,8 +73,6 @@ public class PaymentHandle {
private MulitiPaymentClient mulitiPaymentClient; private MulitiPaymentClient mulitiPaymentClient;
@Autowired @Autowired
private RedisCache redisCache; private RedisCache redisCache;
// @Autowired
// private PaymentNewService paymentNewService;
@Autowired @Autowired
private OMSPaymentClient paymentNewClient; private OMSPaymentClient paymentNewClient;
...@@ -86,6 +82,14 @@ public class PaymentHandle { ...@@ -86,6 +82,14 @@ public class PaymentHandle {
@Autowired @Autowired
private LogUtil logUtil; private LogUtil logUtil;
/**
* 点餐订单退款入口
* 支付退款,包含纯现金,代付,混合支付
*
* @param request
* @param orderBean
* @return
*/
public PayRefundResponse getCommonPayRefundResponse(OrderManagerRequest request, OrderBeanV1 orderBean) { public PayRefundResponse getCommonPayRefundResponse(OrderManagerRequest request, OrderBeanV1 orderBean) {
PayRefundResponse refundResponse; PayRefundResponse refundResponse;
try { try {
...@@ -99,43 +103,118 @@ public class PaymentHandle { ...@@ -99,43 +103,118 @@ public class PaymentHandle {
refundResponse = this.agentPayRefund(orderBean); refundResponse = this.agentPayRefund(orderBean);
} else { } else {
//正常订单现金退款 paymentcenter/refund //正常订单现金退款 paymentcenter/refund
refundResponse = this.refund(request, orderBean); refundResponse = this.payRefund(request.getReason(), orderBean);
} }
} }
} catch (OrderServiceException orderEx) { } catch (OrderServiceException orderEx) {
ResponseResult result = orderEx.getResult(); ResponseResult result = orderEx.getResult();
refundResponse = new PayRefundResponse(); refundResponse = new PayRefundResponse();
refundResponse.setPayRefundStatus(PayRefundStatus.COMPATIBILITY_STATUS); refundResponse.setPayRefundStatus(PayRefundStatus.COMPATIBILITY_STATUS);
refundResponse.setMessage(result.getMessage());
refundResponse.setResult(result); refundResponse.setResult(result);
return refundResponse; return refundResponse;
} catch (Exception e) {
refundResponse = new PayRefundResponse();
refundResponse.setPayRefundStatus(PayRefundStatus.COMPATIBILITY_STATUS);
refundResponse.setMessage("请稍后再试!");
refundResponse.setResult(ResponseResult.SYSTEM_ERROR);
return refundResponse;
} }
return refundResponse; return refundResponse;
} }
/** /**
* 退款 * 纯现金支付退款,非代付和混合支付退款
* *
* @param request * @param reason 退款原因
* @param orderBean * @param orderBean
* @return * @return
*/ */
public PayRefundResponse refund(OrderManagerRequest request, OrderBeanV1 orderBean) { private PayRefundResponse payRefund(String reason, OrderBeanV1 orderBean) {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS; PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
PayRefundRequestDto orderRefundRequest = paymentSdkAdapter.getOrderRefundRequest(orderBean, getRefundAmount(orderBean)); PayRefundRequestDto orderRefundRequest = paymentSdkAdapter.getOrderRefundRequest(orderBean, getRefundAmount(orderBean));
//抖音支付必传 //抖音支付必传
orderRefundRequest.setRefundDesc(request.getReason() == null ? "商家退款" : request.getReason()); orderRefundRequest.setRefundDesc(reason == null ? "商家退款" : reason);
if (ObjectUtils.equals(orderBean.getAmount(), 0L)) { if (ObjectUtils.equals(orderBean.getAmount(), 0L)) {
return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId()); return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
} }
BaseResponse<OrderRefundResponse> orderRefundResponse = this.orderPayRefund(orderRefundRequest); BaseResponse<OrderRefundResponse> orderRefundResponse = this.orderPayRefund(orderRefundRequest);
String message = null;
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();
} }
return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId()); PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
if(message != null){
payRefundResponse.setMessage(message);
}
return payRefundResponse;
}
/**
* 混合支付退款
*/
private PayRefundResponse multiRefund(OrderBeanV1 orderBean) {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
MultiOrderRefundRequest multiOrderRefundRequest = paymentSdkAdapter.getMultiOrderPayRefundRequest(orderBean, getRefundAmount(orderBean));
MultiOrderRefundResponse multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest, orderBean.getCompanyId());
if (multiOrderRefundResponse == null || multiOrderRefundResponse.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) {
// fisherman 退款异常 也当做 退款中处理
refundStatus = PayRefundStatus.RUNNING;
} else {
List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = multiOrderRefundResponse.getData().refundPlatformResponseList;
if (null != refundPlatformResponseList && refundPlatformResponseList.size() > 0) {
redisCache.save(RedisUtil.getPaymentTransIdSequenceKey(refundPlatformResponseList.get(0).getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS);
}
if (CollectionUtils.isNotEmpty(refundPlatformResponseList)) {
long refundError = refundPlatformResponseList.stream()
.filter(s -> s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUNDED_RESULTCODE) != 0
&& s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUND_SUCCESS) != 0)
.count();
if (refundError > 0L) {
refundStatus = PayRefundStatus.FAIL;
}
// 退款中
long refunded = refundPlatformResponseList.stream()
.filter(s -> s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUNDED_RESULTCODE) == 0)
.count();
if (refunded > 0L) {
refundStatus = PayRefundStatus.RUNNING;
}
}
}
return handlePayRefundResponse(refundStatus, multiOrderRefundRequest.getRefundTradeNo());
} }
/**
* 代付订单退款
*
* @param orderBean
* @return
*/
private PayRefundResponse agentPayRefund(OrderBeanV1 orderBean) {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
String fmRefundNo = "";
try {
AgentPayRefundReq req = paymentSdkAdapter.getAgentPayefundReq(orderBean, this.getRefundAmount(orderBean));
AgentPayRefundResp resp = mulitiPaymentClient.agentPayRefund(req);
if (!resp.isOk()) {
refundStatus = PayRefundStatus.RUNNING;
}
AgentPayRefundResp.DataDTO data = resp.getData();
if (Objects.nonNull(data)) {
refundStatus = this.getFinalRefundStatus(data.getResultCode());
}
fmRefundNo = resp.getData().getFmRefundNo();
} catch (Throwable e) {
refundStatus = PayRefundStatus.FAIL;
}
return this.handlePayRefundResponse(refundStatus, fmRefundNo);
}
private PayRefundStatus getFinalRefundStatus(Integer resultCode) { private PayRefundStatus getFinalRefundStatus(Integer resultCode) {
switch (resultCode) { switch (resultCode) {
// 退款中状态码需要单独处理 // 退款中状态码需要单独处理
...@@ -153,6 +232,9 @@ public class PaymentHandle { ...@@ -153,6 +232,9 @@ public class PaymentHandle {
} }
/**
* 查询退款配置
*/
private PayRefundRequestDto queryWxAppStore(BaseResponse<PaymentQueryOrderResponseDto> payQueryOrderResponse, PayRefundRequestDto refundRequest) { private PayRefundRequestDto queryWxAppStore(BaseResponse<PaymentQueryOrderResponseDto> payQueryOrderResponse, PayRefundRequestDto refundRequest) {
String payCode = null; String payCode = null;
if (Objects.equals(payQueryOrderResponse.getCode(), "100") && payQueryOrderResponse.getData() != null) { if (Objects.equals(payQueryOrderResponse.getCode(), "100") && payQueryOrderResponse.getData() != null) {
...@@ -208,32 +290,6 @@ public class PaymentHandle { ...@@ -208,32 +290,6 @@ public class PaymentHandle {
return payQueryOrderResponse; return payQueryOrderResponse;
} }
/**
* 代付订单退款
*
* @param orderBean
* @return
*/
public PayRefundResponse agentPayRefund(OrderBeanV1 orderBean) {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
String fmRefundNo = "";
try {
AgentPayRefundReq req = paymentSdkAdapter.getAgentPayefundReq(orderBean, this.getRefundAmount(orderBean));
AgentPayRefundResp resp = mulitiPaymentClient.agentPayRefund(req);
if (!resp.isOk()) {
refundStatus = PayRefundStatus.RUNNING;
}
AgentPayRefundResp.DataDTO data = resp.getData();
if (Objects.nonNull(data)) {
refundStatus = this.getFinalRefundStatus(data.getResultCode());
}
fmRefundNo = resp.getData().getFmRefundNo();
} catch (Throwable e) {
refundStatus = PayRefundStatus.FAIL;
}
return this.handlePayRefundResponse(refundStatus, fmRefundNo);
}
/** /**
* 卖券调用退款 * 卖券调用退款
...@@ -269,7 +325,7 @@ public class PaymentHandle { ...@@ -269,7 +325,7 @@ public class PaymentHandle {
} }
/** /**
* 退款 * 线下pos下单使用储值卡支付,储值卡退款
* *
* @param orderBean * @param orderBean
* @return * @return
...@@ -280,10 +336,8 @@ public class PaymentHandle { ...@@ -280,10 +336,8 @@ public class PaymentHandle {
if (ObjectUtils.equals(orderBean.getAmount(), 0L)) { if (ObjectUtils.equals(orderBean.getAmount(), 0L)) {
return handlePayRefundResponse(refundStatus, refundRequest.getRefundId()); return handlePayRefundResponse(refundStatus, refundRequest.getRefundId());
} }
// com.freemud.application.sdk.api.base.BaseResponse<RefundNewResponse> orderRefundResponse;
BaseResponse<PayRefundData> orderRefundResponse; BaseResponse<PayRefundData> orderRefundResponse;
try { try {
// orderRefundResponse = paymentNewService.newOrderRefund(refundRequest, LogThreadLocal.getTrackingNo());
orderRefundResponse = paymentNewClient.payRefund(refundRequest); orderRefundResponse = paymentNewClient.payRefund(refundRequest);
} catch (Exception ex) { } catch (Exception ex) {
ErrorLog.errorConvertJson(this.getClass(), "paymentNewService.newOrderRefundError", ex); ErrorLog.errorConvertJson(this.getClass(), "paymentNewService.newOrderRefundError", ex);
...@@ -304,45 +358,6 @@ public class PaymentHandle { ...@@ -304,45 +358,6 @@ public class PaymentHandle {
} }
/** /**
* 麦咖啡退款
*
* @param request
* @param orderBean
* @return
*/
public PayRefundResponse mcCafeRefund(OrderManagerRequest request, OrderBeanV1 orderBean) {
// PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
PayRefundRequestDto orderRefundRequest = paymentSdkAdapter.getOrderRefundRequest(orderBean, new BigDecimal(orderBean.getAmount()));
// if (ObjectUtils.equals(orderBean.getAmount(), 0L)) {
// return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
// }
// if (macCafePartnerId.equals(orderBean.getCompanyId())) {
// Map<String, String> extendParams = new HashMap<>();
// if (OrderTypeV1.TAKE_OUT.getCode().equals(orderBean.getOrderType())) {
// extendParams.put("mealType", "delivery");
// } else {
// extendParams.put("mealType", "pickup");
// }
// orderRefundRequest.setExtendParams(extendParams);
// }
// BaseResponse<OrderRefundResponse> orderRefundResponse = null;
// try {
//// orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, "");
//// orderRefundResponse = this.orderPayRefund(orderRefundRequest);
// } catch (Exception ex) {
// ErrorLog.errorConvertJson(this.getClass(), "refundError", ex);
// return handlePayRefundResponse(PayRefundStatus.FAIL, orderRefundRequest.getRefundId());
// }
// if (orderRefundResponse == null || ObjectUtils.notEqual(orderRefundResponse.getCode(), SUCCESS)) {
// return handlePayRefundResponse(PayRefundStatus.FAIL, orderRefundRequest.getRefundId());
// }
// refundStatus = ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus()) ? PayRefundStatus.SUCCESS : PayRefundStatus.FAIL;
// return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
return handlePayRefundResponse(PayRefundStatus.FAIL, orderRefundRequest.getRefundId());
}
/**
* 获取退款金额 * 获取退款金额
* *
* @param data * @param data
...@@ -361,48 +376,17 @@ public class PaymentHandle { ...@@ -361,48 +376,17 @@ public class PaymentHandle {
PayRefundResponse payRefundResponse = new PayRefundResponse(); PayRefundResponse payRefundResponse = new PayRefundResponse();
payRefundResponse.setPayRefundStatus(refundStatus); payRefundResponse.setPayRefundStatus(refundStatus);
payRefundResponse.setRefundId(refundId); payRefundResponse.setRefundId(refundId);
payRefundResponse.setMessage(refundStatus.getDesc());
return payRefundResponse; return payRefundResponse;
} }
public PayRefundResponse multiRefund(OrderBeanV1 orderBean) {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
MultiOrderRefundRequest multiOrderRefundRequest = paymentSdkAdapter.getMultiOrderPayRefundRequest(orderBean, getRefundAmount(orderBean));
MultiOrderRefundResponse multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest, orderBean.getCompanyId());
if (multiOrderRefundResponse == null || multiOrderRefundResponse.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) {
// fisherman 退款异常 也当做 退款中处理
refundStatus = PayRefundStatus.RUNNING;
}else {
List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = multiOrderRefundResponse.getData().refundPlatformResponseList;
if (null != refundPlatformResponseList && refundPlatformResponseList.size() > 0) {
redisCache.save(RedisUtil.getPaymentTransIdSequenceKey(refundPlatformResponseList.get(0).getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS);
}
if (CollectionUtils.isNotEmpty(refundPlatformResponseList)) {
long refundError = refundPlatformResponseList.stream()
.filter(s -> s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUNDED_RESULTCODE) != 0
&& s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUND_SUCCESS) != 0)
.count();
if (refundError > 0L) {
refundStatus = PayRefundStatus.FAIL;
}
// 退款中
long refunded = refundPlatformResponseList.stream()
.filter(s -> s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUNDED_RESULTCODE) == 0)
.count();
if (refunded > 0L) {
refundStatus = PayRefundStatus.RUNNING;
}
}
}
return handlePayRefundResponse(refundStatus, multiOrderRefundRequest.getRefundTradeNo());
}
/** /**
* 支付退款 * 纯现金支付退款,非代付和混合支付退款
*/ */
public BaseResponse<OrderRefundResponse> orderPayRefund(PayRefundRequestDto refundRequest) { private BaseResponse<OrderRefundResponse> orderPayRefund(PayRefundRequestDto refundRequest) {
// step1 查询支付 // step1 查询支付结果
BaseResponse<PaymentQueryOrderResponseDto> paymentQueryOrderResponseDtoBaseResponse = this.queryPayOrder(refundRequest); BaseResponse<PaymentQueryOrderResponseDto> paymentQueryOrderResponseDtoBaseResponse = this.queryPayOrder(refundRequest);
if (Objects.isNull(paymentQueryOrderResponseDtoBaseResponse)) { if (Objects.isNull(paymentQueryOrderResponseDtoBaseResponse)) {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION); throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
...@@ -451,7 +435,7 @@ public class PaymentHandle { ...@@ -451,7 +435,7 @@ public class PaymentHandle {
} }
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount, AssortmentOpenPlatformIappWxappStore wxAppStore) { private com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount, AssortmentOpenPlatformIappWxappStore wxAppStore) {
if (StringUtils.isBlank(partnerId)) { if (StringUtils.isBlank(partnerId)) {
return ResponseUtils.error("501", "商户号不能为空"); return ResponseUtils.error("501", "商户号不能为空");
} else if (StringUtils.isBlank(storeId)) { } else if (StringUtils.isBlank(storeId)) {
...@@ -464,7 +448,7 @@ public class PaymentHandle { ...@@ -464,7 +448,7 @@ public class PaymentHandle {
} }
public Integer getRefundStatus(Integer resultCode) { private Integer getRefundStatus(Integer resultCode) {
if (Objects.equals(resultCode, SUCCESS_RESPONSE_CODE_INT)) { if (Objects.equals(resultCode, SUCCESS_RESPONSE_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode(); return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else if (Objects.equals(resultCode, SUCCESS_RESPONSE_101_CODE_INT)) { } else if (Objects.equals(resultCode, SUCCESS_RESPONSE_101_CODE_INT)) {
......
...@@ -14,12 +14,16 @@ import cn.freemud.management.service.handle.*; ...@@ -14,12 +14,16 @@ import cn.freemud.management.service.handle.*;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.constant.ResponseConstant; import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.log.LogThreadLocal;
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.AfterSalesStatus; import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesStatus;
import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.RefundModeEnum; import com.freemud.application.sdk.api.ordercenter.enums.RefundModeEnum;
import com.freemud.application.sdk.api.ordercenter.request.AfterOrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.AfterOrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.AfterSalesRefundFailReq;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
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.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -52,6 +56,8 @@ public class MallOrderMangerServiceImpl implements OrderManagerService { ...@@ -52,6 +56,8 @@ public class MallOrderMangerServiceImpl implements OrderManagerService {
private StockHandle stockHandle; private StockHandle stockHandle;
@Autowired @Autowired
private ActivityHandle activityHandle; private ActivityHandle activityHandle;
@Autowired
private OrderSdkService orderSdkService;
/** /**
* 同意退款 * 同意退款
...@@ -89,11 +95,10 @@ public class MallOrderMangerServiceImpl implements OrderManagerService { ...@@ -89,11 +95,10 @@ public class MallOrderMangerServiceImpl implements OrderManagerService {
} }
//支付退款 //支付退款
PayRefundResponse refundResponse = new PayRefundResponse(); PayRefundResponse refundResponse = this.payRefundCommon(request, orderBean);
try { //fisherman --> 退款中的状态 阻止后续流程 等待支付回调 不是退款成功 都终止下面的退款流程
refundResponse = paymentHandle.refund(request, orderBean); if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
} catch (OrderServiceException orderEx) { return ResponseUtil.error(ResponseResult.REFUND_FAIL);
return ResponseUtil.error(orderEx.getResult());
} }
//订单同意退款 //订单同意退款
mallOrderHandle.refundAgree(request, refundResponse, orderBean); mallOrderHandle.refundAgree(request, refundResponse, orderBean);
...@@ -117,11 +122,10 @@ public class MallOrderMangerServiceImpl implements OrderManagerService { ...@@ -117,11 +122,10 @@ public class MallOrderMangerServiceImpl implements OrderManagerService {
} }
//支付退款 //支付退款
PayRefundResponse refundResponse = new PayRefundResponse(); PayRefundResponse refundResponse = this.payRefundCommon(request, orderBean);
try { //fisherman --> 退款中的状态 阻止后续流程 等待支付回调 不是退款成功 都终止下面的退款流程
refundResponse = paymentHandle.refund(request, orderBean); if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
} catch (OrderServiceException orderEx) { return ResponseUtil.error(ResponseResult.REFUND_FAIL);
return ResponseUtil.error(orderEx.getResult());
} }
//订单同意退款 //订单同意退款
mallOrderHandle.refundAgree(request, refundResponse, orderBean); mallOrderHandle.refundAgree(request, refundResponse, orderBean);
...@@ -161,15 +165,10 @@ public class MallOrderMangerServiceImpl implements OrderManagerService { ...@@ -161,15 +165,10 @@ public class MallOrderMangerServiceImpl implements OrderManagerService {
@Override @Override
public BaseResponse<OrderManagerResponse> orderReject(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse<OrderManagerResponse> orderReject(OrderManagerRequest request, OrderBeanV1 orderBean) {
//支付退款 //支付退款
PayRefundResponse refundResponse = new PayRefundResponse(); PayRefundResponse refundResponse = this.payRefundCommon(request, orderBean);
try { //fisherman --> 退款中的状态 阻止后续流程 等待支付回调 不是退款成功 都终止下面的退款流程
if(null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size()>0){ if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
refundResponse = paymentHandle.multiRefund(orderBean); return ResponseUtil.error(ResponseResult.REFUND_FAIL);
}else{
refundResponse = paymentHandle.refund(request, orderBean);
}
} catch (OrderServiceException orderEx){ // 爱马哥兼容,不抛错
return ResponseUtil.error(orderEx.getResult());
} }
//订单拒单 //订单拒单
mallOrderHandle.mallOrderReject(request, refundResponse, orderBean); mallOrderHandle.mallOrderReject(request, refundResponse, orderBean);
...@@ -181,4 +180,28 @@ public class MallOrderMangerServiceImpl implements OrderManagerService { ...@@ -181,4 +180,28 @@ public class MallOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success(); return ResponseUtil.success();
} }
/**
* 提取 退款公共代码
*
* @param request
* @param orderBean
* @return
*/
private PayRefundResponse payRefundCommon(OrderManagerRequest request, OrderBeanV1 orderBean) {
PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(request, orderBean);
//同意退款失败记录到订单售后单
if (orderBean.getAfterSalesOrderResp() != null && refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
AfterSalesRefundFailReq refundFailReq = new AfterSalesRefundFailReq();
refundFailReq.setOrderCode(orderBean.getOid());
refundFailReq.setPartnerId(orderBean.getCompanyId());
refundFailReq.setRefundFailReason("退款失败或退款中," + refundResponse.getMessage());
refundFailReq.setAfterSalesCode(orderBean.getAfterSalesOrderResp().getAfterSalesCode());
refundFailReq.setOperationClient(request.getAfterSalesApplyClient());
refundFailReq.setOperator(request.getOperator());
orderSdkService.refundFail(refundFailReq, LogThreadLocal.getTrackingNo());
}
return refundResponse;
}
} }
package cn.freemud.management.service.impl; //package cn.freemud.management.service.impl;
//
import cn.freemud.base.entity.BaseResponse; //import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil; //import cn.freemud.base.util.DateUtil;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderAssemblyackRequest; //import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderAssemblyackRequest;
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.order.OrderManagerResponse; //import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse; //import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.ResponseResult; //import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderManagerService; //import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.handle.*; //import cn.freemud.management.service.handle.*;
import cn.freemud.management.thirdparty.DeliveryMCCafeClient; //import cn.freemud.management.thirdparty.DeliveryMCCafeClient;
import cn.freemud.management.util.ResponseUtil; //import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto; //import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
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.AbnormalStateEnum; //import com.freemud.application.sdk.api.ordercenter.enums.AbnormalStateEnum;
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.orderv1.OrderStatusV1; //import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderStatusV1;
import com.freemud.application.sdk.api.ordercenter.request.SdkUpdateAbnormalState; //import com.freemud.application.sdk.api.ordercenter.request.SdkUpdateAbnormalState;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; //import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.sdk.api.assortment.message.enums.OrderType; //import com.freemud.sdk.api.assortment.message.enums.OrderType;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus; //import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import org.apache.commons.lang.StringUtils; //import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils; //import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value; //import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; //import org.springframework.stereotype.Service;
//
import javax.annotation.Resource; //import javax.annotation.Resource;
import java.text.SimpleDateFormat; //import java.text.SimpleDateFormat;
import java.util.Date; //import java.util.Date;
import java.util.Objects; //import java.util.Objects;
//
/** ///**
* All rights Reserved, Designed By www.freemud.cn // * All rights Reserved, Designed By www.freemud.cn
* // *
* @version V1.0 // * @version V1.0
* @Title: McoffeMangerServiceImpl // * @Title: McoffeMangerServiceImpl
* @Package cn.freemud.management.service.impl // * @Package cn.freemud.management.service.impl
* @Description: // * @Description:
* @author: shuhu.hou // * @author: shuhu.hou
* @date: 2020/8/9 15:26 // * @date: 2020/8/9 15:26
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved. // * @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目 // * 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/ // */
@Service //@Service
public class McCafeMangerServiceImpl implements OrderManagerService { //public class McCafeMangerServiceImpl implements OrderManagerService {
@Resource // @Resource
private SaasOrderHandle saasOrderHandle; // private SaasOrderHandle saasOrderHandle;
@Resource // @Resource
private CouponHandle couponHandle; // private CouponHandle couponHandle;
@Resource // @Resource
private DeliveryHandle deliveryHandle; // private DeliveryHandle deliveryHandle;
@Resource // @Resource
private PaymentHandle paymentHandle; // private PaymentHandle paymentHandle;
@Resource // @Resource
private StockHandle stockHandle; // private StockHandle stockHandle;
@Resource // @Resource
private DeliveryMCCafeClient deliveryMCCafeClient; // private DeliveryMCCafeClient deliveryMCCafeClient;
@Resource // @Resource
private OrderSdkService orderSdkService; // private OrderSdkService orderSdkService;
//
@Value("${mccafe.partner.id}") // @Value("${mccafe.partner.id}")
private String macCafePartnerId; // private String macCafePartnerId;
@Value("${mcCafe.withOrderBuy.cardId}") // @Value("${mcCafe.withOrderBuy.cardId}")
private String macCafeCardId; // private String macCafeCardId;
//
@Override // @Override
public BaseResponse<OrderManagerResponse> orderConfirm(OrderManagerRequest request, OrderBeanV1 orderBean) { // public BaseResponse<OrderManagerResponse> orderConfirm(OrderManagerRequest request, OrderBeanV1 orderBean) {
if (orderBean == null) { // if (orderBean == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST); // return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
} // }
OrderManagerRequest orderManagerRequest =new OrderManagerRequest(); // OrderManagerRequest orderManagerRequest =new OrderManagerRequest();
BeanUtils.copyProperties(request,orderManagerRequest); // BeanUtils.copyProperties(request,orderManagerRequest);
if (!OrderStatusV1.TAKE_ORDER.getV2Code().equals(orderBean.getStatusV2()) && !OrderStatusV1.RECEIPT.getV2Code().equals(orderBean.getStatusV2())){ // if (!OrderStatusV1.TAKE_ORDER.getV2Code().equals(orderBean.getStatusV2()) && !OrderStatusV1.RECEIPT.getV2Code().equals(orderBean.getStatusV2())){
return ResponseUtil.error(ResponseResult.ORDER_STATUS_FAILED); // return ResponseUtil.error(ResponseResult.ORDER_STATUS_FAILED);
} // }
if (StringUtils.isNotEmpty(request.getPickUpGoodsNo())){ // if (StringUtils.isNotEmpty(request.getPickUpGoodsNo())){
//更新取餐码 // //更新取餐码
BaseResponse baseResponse = saasOrderHandle.updatePickUpGoodNo(request, orderBean); // BaseResponse baseResponse = saasOrderHandle.updatePickUpGoodNo(request, orderBean);
if (!ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())){ // if (!ResponseResult.SUCCESS.getCode().equals(baseResponse.getCode())){
return ResponseUtil.error(ResponseResult.ORDER_UPDATE_PICKUP_FAILED); // return ResponseUtil.error(ResponseResult.ORDER_UPDATE_PICKUP_FAILED);
} // }
} // }
if (OrderStatusV1.TAKE_ORDER.getV2Code().equals(orderBean.getStatusV2())) { // if (OrderStatusV1.TAKE_ORDER.getV2Code().equals(orderBean.getStatusV2())) {
// 订单接单 // // 订单接单
saasOrderHandle.orderConfirm(orderManagerRequest, orderBean); // saasOrderHandle.orderConfirm(orderManagerRequest, orderBean);
} // }
if (!Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) { // if (!Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) {
// 异步核销券码 // // 异步核销券码
couponHandle.asyncVerificationCoupon(orderBean); // couponHandle.asyncVerificationCoupon(orderBean);
} // }
if (StringUtils.isNotEmpty(request.getPickUpGoodsNo())){ // if (StringUtils.isNotEmpty(request.getPickUpGoodsNo())){
//
if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) { // if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
DeliveryOrderAssemblyackRequest assemblyAckRequest = new DeliveryOrderAssemblyackRequest(); // DeliveryOrderAssemblyackRequest assemblyAckRequest = new DeliveryOrderAssemblyackRequest();
assemblyAckRequest.setOrderKey(request.getOrderId()); // assemblyAckRequest.setOrderKey(request.getOrderId());
assemblyAckRequest.setDisplayOrderNumber(request.getPickUpGoodsNo()); // assemblyAckRequest.setDisplayOrderNumber(request.getPickUpGoodsNo());
assemblyAckRequest.setAssemblyTimeUTC(dateFormat.format(DateUtil.addHours(new Date(), -8))); // assemblyAckRequest.setAssemblyTimeUTC(dateFormat.format(DateUtil.addHours(new Date(), -8)));
assemblyAckRequest.setStoreId(orderBean.getShopId()); // assemblyAckRequest.setStoreId(orderBean.getShopId());
//入机成功通知配送 // //入机成功通知配送
DeliveryResponseDto deliveryResponse = deliveryMCCafeClient.assemblyAck(assemblyAckRequest); // DeliveryResponseDto deliveryResponse = deliveryMCCafeClient.assemblyAck(assemblyAckRequest);
if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode() + "")) { // if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode() + "")) {
return ResponseUtil.error(ResponseResult.DELIVERY_ASSEMBLY_ACK_ERROR); // return ResponseUtil.error(ResponseResult.DELIVERY_ASSEMBLY_ACK_ERROR);
} // }
} // }
} // }
//
return ResponseUtil.success(); // return ResponseUtil.success();
} // }
//
@Override // @Override
public BaseResponse<OrderManagerResponse> orderReject(OrderManagerRequest request, OrderBeanV1 orderBean) { // public BaseResponse<OrderManagerResponse> orderReject(OrderManagerRequest request, OrderBeanV1 orderBean) {
OrderManagerRequest orderManagerRequest =new OrderManagerRequest(); // OrderManagerRequest orderManagerRequest =new OrderManagerRequest();
BeanUtils.copyProperties(request,orderManagerRequest); // BeanUtils.copyProperties(request,orderManagerRequest);
//根据是否是外卖单来判断 // //根据是否是外卖单来判断
if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) { // if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) {
// 订单接单 // // 订单接单
BaseResponse<OrderManagerResponse> orderManagerResponseBaseResponse = orderConfirm(request, orderBean); // BaseResponse<OrderManagerResponse> orderManagerResponseBaseResponse = orderConfirm(request, orderBean);
if (ResponseResult.SUCCESS.getCode().equals(orderManagerResponseBaseResponse.getCode())){ // if (ResponseResult.SUCCESS.getCode().equals(orderManagerResponseBaseResponse.getCode())){
//通知配送服务停单 // //通知配送服务停单
deliveryHandle.haltedDelivery(orderBean); // deliveryHandle.haltedDelivery(orderBean);
} // }
//
}else { // }else {
//支付退款 // //支付退款
PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(orderManagerRequest, orderBean); // PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(orderManagerRequest, orderBean);
if(refundResponse.getPayRefundStatus().getCode().equals(PayRefundStatus.SUCCESS.getCode())) { // if(refundResponse.getPayRefundStatus().getCode().equals(PayRefundStatus.SUCCESS.getCode())) {
//订单拒单 // //订单拒单
saasOrderHandle.mcCafeOrderReject(orderManagerRequest, refundResponse, orderBean); // saasOrderHandle.mcCafeOrderReject(orderManagerRequest, refundResponse, orderBean);
//冲正库存 // //冲正库存
stockHandle.revert(orderManagerRequest, orderBean); // stockHandle.revert(orderManagerRequest, orderBean);
} else { // } else {
SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState(); // SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState();
sdkUpdateAbnormalState.setOrderCode(request.getOrderId()); // sdkUpdateAbnormalState.setOrderCode(request.getOrderId());
sdkUpdateAbnormalState.setPartnerId(request.getPartnerId()); // sdkUpdateAbnormalState.setPartnerId(request.getPartnerId());
sdkUpdateAbnormalState.setAbnormalState(AbnormalStateEnum.ABNORMAL.getCode()); // sdkUpdateAbnormalState.setAbnormalState(AbnormalStateEnum.ABNORMAL.getCode());
sdkUpdateAbnormalState.setAbnormalDesc("支付退款失败,订单入机失败回调异常"); // sdkUpdateAbnormalState.setAbnormalDesc("支付退款失败,订单入机失败回调异常");
sdkUpdateAbnormalState.setOrderClient(OrderClientType.SAAS.getIndex()); // sdkUpdateAbnormalState.setOrderClient(OrderClientType.SAAS.getIndex());
sdkUpdateAbnormalState.setOperator(request.getOperator()); // sdkUpdateAbnormalState.setOperator(request.getOperator());
orderSdkService.updateAbnormalState(sdkUpdateAbnormalState); // orderSdkService.updateAbnormalState(sdkUpdateAbnormalState);
} // }
} // }
return ResponseUtil.success(); // return ResponseUtil.success();
} // }
//
/** // /**
* 制作完成 // * 制作完成
* // *
* @param request // * @param request
* @param orderBean // * @param orderBean
* @return // * @return
*/ // */
@Override // @Override
public BaseResponse<OrderManagerResponse> orderDone(OrderManagerRequest request, OrderBeanV1 orderBean) { // public BaseResponse<OrderManagerResponse> orderDone(OrderManagerRequest request, OrderBeanV1 orderBean) {
// 订单制作完成 // // 订单制作完成
saasOrderHandle.orderDone(request, orderBean); // saasOrderHandle.orderDone(request, orderBean);
return ResponseUtil.success(); // return ResponseUtil.success();
} // }
//
/** // /**
* 订单配送 // * 订单配送
* // *
* @param request // * @param request
* @param orderBean // * @param orderBean
* @return // * @return
*/ // */
@Override // @Override
public BaseResponse<OrderManagerResponse> orderDelivery(OrderManagerRequest request, OrderBeanV1 orderBean) { // public BaseResponse<OrderManagerResponse> orderDelivery(OrderManagerRequest request, OrderBeanV1 orderBean) {
// 订单配送 // // 订单配送
saasOrderHandle.orderDelivery(request, orderBean); // saasOrderHandle.orderDelivery(request, orderBean);
return ResponseUtil.success(); // return ResponseUtil.success();
} // }
//
/** // /**
* 订单完成 // * 订单完成
* // *
* @param request // * @param request
* @param orderBean // * @param orderBean
* @return // * @return
*/ // */
@Override // @Override
public BaseResponse<OrderManagerResponse> orderAffirm(OrderManagerRequest request, OrderBeanV1 orderBean) { // public BaseResponse<OrderManagerResponse> orderAffirm(OrderManagerRequest request, OrderBeanV1 orderBean) {
// 订单完成 // // 订单完成
saasOrderHandle.orderAffirm(request, orderBean); // saasOrderHandle.orderAffirm(request, orderBean);
return ResponseUtil.success(); // return ResponseUtil.success();
} // }
//
//
//
/** // /**
* 同意退款 // * 同意退款
* // *
* @param request // * @param request
* @param orderBean // * @param orderBean
* @return // * @return
*/ // */
@Override // @Override
public BaseResponse<OrderManagerResponse> orderAgreeRefund(OrderManagerRequest request, OrderBeanV1 orderBean) { // public BaseResponse<OrderManagerResponse> orderAgreeRefund(OrderManagerRequest request, OrderBeanV1 orderBean) {
//支付退款 // //支付退款
PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(request, orderBean); // PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(request, orderBean);
if(refundResponse.getPayRefundStatus().getCode().equals(PayRefundStatus.SUCCESS.getCode())) { // if(refundResponse.getPayRefundStatus().getCode().equals(PayRefundStatus.SUCCESS.getCode())) {
//订单拒单 // //订单拒单
saasOrderHandle.mcCafeRefundAgree(request, refundResponse, orderBean); // saasOrderHandle.mcCafeRefundAgree(request, refundResponse, orderBean);
//冲正库存 // //冲正库存
stockHandle.revert(request, orderBean); // stockHandle.revert(request, orderBean);
} else { // } else {
SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState(); // SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState();
sdkUpdateAbnormalState.setOrderCode(request.getOrderId()); // sdkUpdateAbnormalState.setOrderCode(request.getOrderId());
sdkUpdateAbnormalState.setPartnerId(request.getPartnerId()); // sdkUpdateAbnormalState.setPartnerId(request.getPartnerId());
sdkUpdateAbnormalState.setAbnormalState(AbnormalStateEnum.ABNORMAL.getCode()); // sdkUpdateAbnormalState.setAbnormalState(AbnormalStateEnum.ABNORMAL.getCode());
sdkUpdateAbnormalState.setAbnormalDesc("支付退款失败,订单入机失败回调异常"); // sdkUpdateAbnormalState.setAbnormalDesc("支付退款失败,订单入机失败回调异常");
sdkUpdateAbnormalState.setOrderClient(OrderClientType.SAAS.getIndex()); // sdkUpdateAbnormalState.setOrderClient(OrderClientType.SAAS.getIndex());
sdkUpdateAbnormalState.setOperator(request.getOperator()); // sdkUpdateAbnormalState.setOperator(request.getOperator());
orderSdkService.updateAbnormalState(sdkUpdateAbnormalState); // orderSdkService.updateAbnormalState(sdkUpdateAbnormalState);
} // }
return ResponseUtil.success(); // return ResponseUtil.success();
} // }
//
/** // /**
* 拒绝退款 // * 拒绝退款
* // *
* @param request // * @param request
* @param orderBean // * @param orderBean
* @return // * @return
*/ // */
@Override // @Override
public BaseResponse<OrderManagerResponse> orderRejectRefund(OrderManagerRequest request, OrderBeanV1 orderBean) { // public BaseResponse<OrderManagerResponse> orderRejectRefund(OrderManagerRequest request, OrderBeanV1 orderBean) {
//拒绝退款 // //拒绝退款
saasOrderHandle.mcCafeRefundReject(request,orderBean); // saasOrderHandle.mcCafeRefundReject(request,orderBean);
return ResponseUtil.success(); // return ResponseUtil.success();
} // }
//
//
/** // /**
* 商家取消 // * 商家取消
*/ // */
@Override // @Override
public BaseResponse<OrderManagerResponse> orderCancel(OrderManagerRequest request, OrderBeanV1 orderBean) { // public BaseResponse<OrderManagerResponse> orderCancel(OrderManagerRequest request, OrderBeanV1 orderBean) {
//支付退款 // //支付退款
PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(request, orderBean); // PayRefundResponse refundResponse = paymentHandle.mcCafeRefund(request, orderBean);
if(refundResponse.getPayRefundStatus().getCode().equals(PayRefundStatus.SUCCESS.getCode())) { // if(refundResponse.getPayRefundStatus().getCode().equals(PayRefundStatus.SUCCESS.getCode())) {
//订单拒单 // //订单拒单
saasOrderHandle.orderCancel(request, refundResponse, orderBean); // saasOrderHandle.orderCancel(request, refundResponse, orderBean);
//冲正库存 // //冲正库存
stockHandle.revert(request, orderBean); // stockHandle.revert(request, orderBean);
} else { // } else {
SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState(); // SdkUpdateAbnormalState sdkUpdateAbnormalState = new SdkUpdateAbnormalState();
sdkUpdateAbnormalState.setOrderCode(request.getOrderId()); // sdkUpdateAbnormalState.setOrderCode(request.getOrderId());
sdkUpdateAbnormalState.setPartnerId(request.getPartnerId()); // sdkUpdateAbnormalState.setPartnerId(request.getPartnerId());
sdkUpdateAbnormalState.setAbnormalState(AbnormalStateEnum.ABNORMAL.getCode()); // sdkUpdateAbnormalState.setAbnormalState(AbnormalStateEnum.ABNORMAL.getCode());
sdkUpdateAbnormalState.setAbnormalDesc("支付退款失败,订单入机失败回调异常"); // sdkUpdateAbnormalState.setAbnormalDesc("支付退款失败,订单入机失败回调异常");
sdkUpdateAbnormalState.setOrderClient(OrderClientType.SAAS.getIndex()); // sdkUpdateAbnormalState.setOrderClient(OrderClientType.SAAS.getIndex());
sdkUpdateAbnormalState.setOperator(request.getOperator()); // sdkUpdateAbnormalState.setOperator(request.getOperator());
orderSdkService.updateAbnormalState(sdkUpdateAbnormalState); // orderSdkService.updateAbnormalState(sdkUpdateAbnormalState);
} // }
return ResponseUtil.success(); // return ResponseUtil.success();
} // }
//
} //}
...@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse; ...@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse;
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.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderManagerService; import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.handle.ActivityHandle; import cn.freemud.management.service.handle.ActivityHandle;
import cn.freemud.management.service.handle.MallOrderHandle; import cn.freemud.management.service.handle.MallOrderHandle;
...@@ -11,12 +12,16 @@ import cn.freemud.management.service.handle.PaymentHandle; ...@@ -11,12 +12,16 @@ import cn.freemud.management.service.handle.PaymentHandle;
import cn.freemud.management.service.handle.StockHandle; import cn.freemud.management.service.handle.StockHandle;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.log.LogThreadLocal;
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.AfterSalesStatus; import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesStatus;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType; import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.enums.RefundModeEnum; import com.freemud.application.sdk.api.ordercenter.enums.RefundModeEnum;
import com.freemud.application.sdk.api.ordercenter.request.AfterOrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.AfterOrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.AfterSalesRefundFailReq;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.sdk.api.assortment.order.enums.PayRefundStatus;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -45,6 +50,8 @@ public class NewMallOrderMangerServiceImpl implements OrderManagerService { ...@@ -45,6 +50,8 @@ public class NewMallOrderMangerServiceImpl implements OrderManagerService {
private StockHandle stockHandle; private StockHandle stockHandle;
@Autowired @Autowired
private ActivityHandle activityHandle; private ActivityHandle activityHandle;
@Autowired
private OrderSdkService orderSdkService;
/** /**
* 同意退款 * 同意退款
...@@ -67,34 +74,37 @@ public class NewMallOrderMangerServiceImpl implements OrderManagerService { ...@@ -67,34 +74,37 @@ public class NewMallOrderMangerServiceImpl implements OrderManagerService {
// 修改售后单状态为退货中 // 修改售后单状态为退货中
mallOrderHandle.mallOrderAgreeApply(request, orderBean); mallOrderHandle.mallOrderAgreeApply(request, orderBean);
} else { } else {
//支付退款 //支付退款
PayRefundResponse refundResponse; PayRefundResponse refundResponse = this.payRefundCommon(request, orderBean);
boolean cashPay = false; // 退款异常
boolean svcPay = false; if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.COMPATIBILITY_STATUS.getCode()) == 0) {
if(CollectionUtils.isNotEmpty(orderBean.getOrderPayItem())){ return ResponseUtil.error(refundResponse.getResult());
for (OrderPayItemResp payItemResp : orderBean.getOrderPayItem()){
if(Objects.equals(payItemResp.getPayChannelType(),(int)PayChannelType.SVC.getIndex())){
svcPay = true;
}
if(Objects.equals(payItemResp.getPayChannelType(),(int)PayChannelType.WECHAT.getIndex())){
cashPay = true;
}
if(Objects.equals(payItemResp.getPayChannelType(),(int)PayChannelType.ALIPAY.getIndex())){
cashPay = true;
}
}
} }
if (cashPay && svcPay) { // fisherman --> 退款中的状态 阻止后续流程 等待支付回调 不是退款成功 都终止下面的退款流程
refundResponse = paymentHandle.multiRefund(orderBean); if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
} else { return ResponseUtil.error(ResponseResult.REFUND_FAIL_WAIT_CALLBACK);
// OrderExtendedReq ext = orderBean.getOrderExtended();
// if (StringUtils.isNotBlank(ext.getAgentPayerId()) && !Objects.equals(ext.getAgentPayerId(), orderBean.getUserId())) {
// //代付人信息不为空 并且和订单创建人不一样,表示代付单
// refundResponse = paymentHandle.agentPayRefund(orderBean);
// }
refundResponse = paymentHandle.refund(request, orderBean);
} }
// PayRefundResponse refundResponse;
// boolean cashPay = false;
// boolean svcPay = false;
// if(CollectionUtils.isNotEmpty(orderBean.getOrderPayItem())){
// for (OrderPayItemResp payItemResp : orderBean.getOrderPayItem()){
// if(Objects.equals(payItemResp.getPayChannelType(),(int)PayChannelType.SVC.getIndex())){
// svcPay = true;
// }
// if(Objects.equals(payItemResp.getPayChannelType(),(int)PayChannelType.WECHAT.getIndex())){
// cashPay = true;
// }
// if(Objects.equals(payItemResp.getPayChannelType(),(int)PayChannelType.ALIPAY.getIndex())){
// cashPay = true;
// }
// }
// }
// if (cashPay && svcPay) {
// refundResponse = paymentHandle.multiRefund(orderBean);
// } else {
// refundResponse = paymentHandle.getCommonPayRefundResponse(request, orderBean);
// }
//订单同意退款 //订单同意退款
mallOrderHandle.refundAgree(request, refundResponse, orderBean); mallOrderHandle.refundAgree(request, refundResponse, orderBean);
//冲正库存 //冲正库存
...@@ -129,4 +139,28 @@ public class NewMallOrderMangerServiceImpl implements OrderManagerService { ...@@ -129,4 +139,28 @@ public class NewMallOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.error("501","暂无"); return ResponseUtil.error("501","暂无");
} }
/**
* 提取 退款公共代码
*
* @param request
* @param orderBean
* @return
*/
private PayRefundResponse payRefundCommon(OrderManagerRequest request, OrderBeanV1 orderBean) {
PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(request, orderBean);
//同意退款失败记录到订单售后单
if (orderBean.getAfterSalesOrderResp() != null && refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
AfterSalesRefundFailReq refundFailReq = new AfterSalesRefundFailReq();
refundFailReq.setOrderCode(orderBean.getOid());
refundFailReq.setPartnerId(orderBean.getCompanyId());
refundFailReq.setRefundFailReason("退款失败或退款中," + refundResponse.getMessage());
refundFailReq.setAfterSalesCode(orderBean.getAfterSalesOrderResp().getAfterSalesCode());
refundFailReq.setOperationClient(request.getAfterSalesApplyClient());
refundFailReq.setOperator(request.getOperator());
orderSdkService.refundFail(refundFailReq, LogThreadLocal.getTrackingNo());
}
return refundResponse;
}
} }
...@@ -207,15 +207,14 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -207,15 +207,14 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Override @Override
public BaseResponse<OrderManagerResponse> orderReject(OrderManagerRequest request, OrderBeanV1 orderBean) { public BaseResponse<OrderManagerResponse> orderReject(OrderManagerRequest request, OrderBeanV1 orderBean) {
//支付退款 //支付退款
PayRefundResponse refundResponse; PayRefundResponse refundResponse = this.payRefundCommon(request,orderBean);
try { // 退款异常
if (null != orderBean.getOrderPayItem() && orderBean.getOrderPayItem().size() > 0) { if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.COMPATIBILITY_STATUS.getCode()) == 0) {
refundResponse = paymentHandle.multiRefund(orderBean); return ResponseUtil.error(refundResponse.getResult());
} else { }
refundResponse = paymentHandle.refund(request, orderBean); // fisherman --> 退款中的状态 阻止后续流程 等待支付回调 不是退款成功 都终止下面的退款流程
} if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
} catch (OrderServiceException orderEx) { // 爱马哥兼容,不抛错 return ResponseUtil.error(ResponseResult.REFUND_FAIL_WAIT_CALLBACK);
return ResponseUtil.error(orderEx.getResult());
} }
//订单拒单 //订单拒单
saasOrderHandle.orderReject(request, refundResponse, orderBean); saasOrderHandle.orderReject(request, refundResponse, orderBean);
...@@ -240,7 +239,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -240,7 +239,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
//取消配送单 //取消配送单
deliveryHandle.cancelDelivery(orderBean, request); deliveryHandle.cancelDelivery(orderBean, request);
//支付退款 //支付退款
PayRefundResponse refundResponse = this.getPayRefundResponse(request, orderBean); PayRefundResponse refundResponse = this.payRefundCommon(request, orderBean);
// 退款异常 // 退款异常
if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.COMPATIBILITY_STATUS.getCode()) == 0) { if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.COMPATIBILITY_STATUS.getCode()) == 0) {
return ResponseUtil.error(refundResponse.getResult()); return ResponseUtil.error(refundResponse.getResult());
...@@ -261,20 +260,20 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -261,20 +260,20 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
} }
/** /**
* 提 退款公共代码 * 提 退款公共代码
* *
* @param request * @param request
* @param orderBean * @param orderBean
* @return * @return
*/ */
private PayRefundResponse getPayRefundResponse(OrderManagerRequest request, OrderBeanV1 orderBean) { private PayRefundResponse payRefundCommon(OrderManagerRequest request, OrderBeanV1 orderBean) {
PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(request, orderBean); PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(request, orderBean);
//退款失败记录到订单售后单 //同意退款失败记录到订单售后单
if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) { if (orderBean.getAfterSalesOrderResp() != null && refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
AfterSalesRefundFailReq refundFailReq = new AfterSalesRefundFailReq(); AfterSalesRefundFailReq refundFailReq = new AfterSalesRefundFailReq();
refundFailReq.setOrderCode(orderBean.getOid()); refundFailReq.setOrderCode(orderBean.getOid());
refundFailReq.setPartnerId(orderBean.getCompanyId()); refundFailReq.setPartnerId(orderBean.getCompanyId());
refundFailReq.setRefundFailReason("退款失败"); refundFailReq.setRefundFailReason("退款失败或退款中," + refundResponse.getMessage());
refundFailReq.setAfterSalesCode(orderBean.getAfterSalesOrderResp().getAfterSalesCode()); refundFailReq.setAfterSalesCode(orderBean.getAfterSalesOrderResp().getAfterSalesCode());
refundFailReq.setOperationClient(request.getAfterSalesApplyClient()); refundFailReq.setOperationClient(request.getAfterSalesApplyClient());
refundFailReq.setOperator(request.getOperator()); refundFailReq.setOperator(request.getOperator());
...@@ -322,7 +321,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -322,7 +321,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
} else if (OrderSourceV1.POS.getCode().equals(orderBean.getSource())) { } else if (OrderSourceV1.POS.getCode().equals(orderBean.getSource())) {
return posCancel(orderBean); return posCancel(orderBean);
} }
return ResponseUtil.success(); return ResponseUtil.error("501","暂不支持");
} }
/** /**
......
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