Commit 71b1155b by ping.wu

退款返回结果判断修改

parent 7f4d66cf
...@@ -52,7 +52,7 @@ import java.util.concurrent.TimeUnit; ...@@ -52,7 +52,7 @@ import java.util.concurrent.TimeUnit;
@Component @Component
public class PaymentHandle { public class PaymentHandle {
private static final String SUCCESS="100"; private static final String SUCCESS = "100";
public static final Integer SUCCESS_RESPONSE_CODE_INT = 100; public static final Integer SUCCESS_RESPONSE_CODE_INT = 100;
public static final Integer REFUND_RESPONSE_CODE = 8200305; public static final Integer REFUND_RESPONSE_CODE = 8200305;
...@@ -61,8 +61,6 @@ public class PaymentHandle { ...@@ -61,8 +61,6 @@ public class PaymentHandle {
@Value("${mccafe.partner.id}") @Value("${mccafe.partner.id}")
private String macCafePartnerId; private String macCafePartnerId;
// @Autowired
// private StandardPaymentService standardPaymentService;
@Autowired @Autowired
private PaymentSdkAdapter paymentSdkAdapter; private PaymentSdkAdapter paymentSdkAdapter;
@Autowired @Autowired
...@@ -82,85 +80,89 @@ public class PaymentHandle { ...@@ -82,85 +80,89 @@ public class PaymentHandle {
/** /**
* 退款 * 退款
*
* @param request * @param request
* @param orderBean * @param orderBean
* @return * @return
*/ */
public PayRefundResponse refund(OrderManagerRequest request, OrderBeanV1 orderBean){ public PayRefundResponse refund(OrderManagerRequest request, 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(request.getReason() == null ? "商家退款" : request.getReason());
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; BaseResponse<OrderRefundResponse> orderRefundResponse;
// orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, LogThreadLocal.getTrackingNo()); // orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, LogThreadLocal.getTrackingNo());
orderRefundResponse = this.orderRefundNew(orderRefundRequest); orderRefundResponse = this.orderRefundNew(orderRefundRequest);
if (orderRefundResponse==null){ if (orderRefundResponse == null) {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION); throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
} }
if (ObjectUtils.notEqual(orderRefundResponse.getCode(),SUCCESS)){ if (ObjectUtils.notEqual(orderRefundResponse.getCode(), SUCCESS)) {
//商户余额不足的情况下,返回异常特殊处理. //商户余额不足的情况下,返回异常特殊处理.
if(ResponseResult.NOT_SUFFICIENT_FUNDS.getCode().equals(orderRefundResponse.getCode())){ if (ResponseResult.NOT_SUFFICIENT_FUNDS.getCode().equals(orderRefundResponse.getCode())) {
throw new OrderServiceException(ResponseResult.NOT_SUFFICIENT_FUNDS); throw new OrderServiceException(ResponseResult.NOT_SUFFICIENT_FUNDS);
} }
ResponseResult refundFail = ResponseResult.REFUND_FAIL; ResponseResult refundFail = ResponseResult.REFUND_FAIL;
refundFail.setMessage(orderRefundResponse.getMessage()); refundFail.setMessage(orderRefundResponse.getMessage());
throw new OrderServiceException(refundFail); throw new OrderServiceException(refundFail);
} }
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus())?PayRefundStatus.SUCCESS:PayRefundStatus.RUNNING; refundStatus = ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus()) ? PayRefundStatus.SUCCESS : PayRefundStatus.RUNNING;
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId()); return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
} }
/** /**
* 退款 * 退款
*
* @param orderBean * @param orderBean
* @return * @return
*/ */
public PayRefundResponse newOrderRefund(OrderBeanV1 orderBean, OrderExtInfoDto orderExtInfoDto){ public PayRefundResponse newOrderRefund(OrderBeanV1 orderBean, OrderExtInfoDto orderExtInfoDto) {
PayRefundStatus refundStatus=PayRefundStatus.SUCCESS; PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
PayRefundRequestDto refundRequest = paymentSdkAdapter.convert2OrderRefundNewRequest(orderBean, orderExtInfoDto); PayRefundRequestDto refundRequest = paymentSdkAdapter.convert2OrderRefundNewRequest(orderBean, orderExtInfoDto);
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; // com.freemud.application.sdk.api.base.BaseResponse<RefundNewResponse> orderRefundResponse;
BaseResponse<PayRefundResponseDto> orderRefundResponse; BaseResponse<PayRefundResponseDto> orderRefundResponse;
try { try {
// orderRefundResponse = paymentNewService.newOrderRefund(refundRequest, LogThreadLocal.getTrackingNo()); // 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);
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION); throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
} }
if (orderRefundResponse==null){ if (orderRefundResponse == null) {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION); throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
} }
if(ObjectUtils.equals(orderRefundResponse.getCode(),"101")){ if (ObjectUtils.equals(orderRefundResponse.getCode(), "101")) {
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getCode())?PayRefundStatus.SUCCESS:PayRefundStatus.FAIL; refundStatus = ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getCode()) ? PayRefundStatus.SUCCESS : PayRefundStatus.FAIL;
return handlePayRefundResponse(refundStatus,refundRequest.getRefundId()); return handlePayRefundResponse(refundStatus, refundRequest.getRefundId());
} }
if ( ObjectUtils.notEqual(orderRefundResponse.getCode(),SUCCESS)){ if (ObjectUtils.notEqual(orderRefundResponse.getCode(), SUCCESS)) {
throw new OrderServiceException(ResponseResult.REFUND_FAIL,orderRefundResponse.getMessage()); throw new OrderServiceException(ResponseResult.REFUND_FAIL, orderRefundResponse.getMessage());
} }
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getCode())?PayRefundStatus.SUCCESS:PayRefundStatus.FAIL; refundStatus = ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getCode()) ? PayRefundStatus.SUCCESS : PayRefundStatus.FAIL;
return handlePayRefundResponse(refundStatus,refundRequest.getRefundId()); return handlePayRefundResponse(refundStatus, refundRequest.getRefundId());
} }
/** /**
* 麦咖啡退款 * 麦咖啡退款
*
* @param request * @param request
* @param orderBean * @param orderBean
* @return * @return
*/ */
public PayRefundResponse mcCafeRefund(OrderManagerRequest request, OrderBeanV1 orderBean){ public PayRefundResponse mcCafeRefund(OrderManagerRequest request, OrderBeanV1 orderBean) {
PayRefundStatus refundStatus=PayRefundStatus.SUCCESS; PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
PayRefundRequestDto orderRefundRequest = paymentSdkAdapter.getOrderRefundRequest(orderBean, new BigDecimal(orderBean.getAmount())); PayRefundRequestDto orderRefundRequest = paymentSdkAdapter.getOrderRefundRequest(orderBean, new BigDecimal(orderBean.getAmount()));
if (ObjectUtils.equals(orderBean.getAmount(), 0L)) { if (ObjectUtils.equals(orderBean.getAmount(), 0L)) {
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId()); return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
} }
if(macCafePartnerId.equals(orderBean.getCompanyId())) { if (macCafePartnerId.equals(orderBean.getCompanyId())) {
Map<String, String> extendParams = new HashMap<>(); Map<String, String> extendParams = new HashMap<>();
if(OldOrderType.TAKE_OUT.getCode().equals(orderBean.getOrderType())) { if (OldOrderType.TAKE_OUT.getCode().equals(orderBean.getOrderType())) {
extendParams.put("mealType", "delivery"); extendParams.put("mealType", "delivery");
} else { } else {
extendParams.put("mealType", "pickup"); extendParams.put("mealType", "pickup");
...@@ -171,15 +173,15 @@ public class PaymentHandle { ...@@ -171,15 +173,15 @@ public class PaymentHandle {
try { try {
// orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, ""); // orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, "");
orderRefundResponse = this.orderRefundNew(orderRefundRequest); orderRefundResponse = this.orderRefundNew(orderRefundRequest);
}catch (Exception ex){ } catch (Exception ex) {
ErrorLog.errorConvertJson(this.getClass(), "refundError", ex); ErrorLog.errorConvertJson(this.getClass(), "refundError", ex);
return handlePayRefundResponse(PayRefundStatus.FAIL,orderRefundRequest.getRefundId()); return handlePayRefundResponse(PayRefundStatus.FAIL, orderRefundRequest.getRefundId());
} }
if (orderRefundResponse==null || ObjectUtils.notEqual(orderRefundResponse.getCode(),SUCCESS)){ if (orderRefundResponse == null || ObjectUtils.notEqual(orderRefundResponse.getCode(), SUCCESS)) {
return handlePayRefundResponse(PayRefundStatus.FAIL,orderRefundRequest.getRefundId()); return handlePayRefundResponse(PayRefundStatus.FAIL, orderRefundRequest.getRefundId());
} }
refundStatus=ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus())?PayRefundStatus.SUCCESS:PayRefundStatus.FAIL; refundStatus = ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus()) ? PayRefundStatus.SUCCESS : PayRefundStatus.FAIL;
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId()); return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
} }
/** /**
...@@ -191,38 +193,38 @@ public class PaymentHandle { ...@@ -191,38 +193,38 @@ public class PaymentHandle {
private BigDecimal getRefundAmount(OrderBeanV1 data) { private BigDecimal getRefundAmount(OrderBeanV1 data) {
BigDecimal refundAmount = new BigDecimal(data.getAmount()); BigDecimal refundAmount = new BigDecimal(data.getAmount());
OrderBaseResp<List<AfterSalesOrderResp>> listBaseResponse = orderSdkService.queryAfterSaleByOrderCode(data.getCompanyId(), data.getOid()); OrderBaseResp<List<AfterSalesOrderResp>> listBaseResponse = orderSdkService.queryAfterSaleByOrderCode(data.getCompanyId(), data.getOid());
if (CollectionUtils.isNotEmpty(listBaseResponse.getResult())){ if (CollectionUtils.isNotEmpty(listBaseResponse.getResult())) {
refundAmount=new BigDecimal(listBaseResponse.getResult().get(0).getActualAmount()); refundAmount = new BigDecimal(listBaseResponse.getResult().get(0).getActualAmount());
} }
return refundAmount; return refundAmount;
} }
private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, Long refundId){ private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, Long refundId) {
PayRefundResponse payRefundResponse = new PayRefundResponse(); PayRefundResponse payRefundResponse = new PayRefundResponse();
payRefundResponse.setPayRefundStatus(refundStatus); payRefundResponse.setPayRefundStatus(refundStatus);
payRefundResponse.setRefundId(refundId.toString()); payRefundResponse.setRefundId(refundId.toString());
return payRefundResponse; return payRefundResponse;
} }
private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, String refundId){ private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, String refundId) {
PayRefundResponse payRefundResponse = new PayRefundResponse(); PayRefundResponse payRefundResponse = new PayRefundResponse();
payRefundResponse.setPayRefundStatus(refundStatus); payRefundResponse.setPayRefundStatus(refundStatus);
payRefundResponse.setRefundId(refundId.toString()); payRefundResponse.setRefundId(refundId.toString());
return payRefundResponse; return payRefundResponse;
} }
public PayRefundResponse multiRefund(OrderBeanV1 orderBean){ public PayRefundResponse multiRefund(OrderBeanV1 orderBean) {
PayRefundStatus refundStatus=PayRefundStatus.SUCCESS; PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
MultiOrderRefundRequest multiOrderRefundRequest = paymentSdkAdapter.getMultiOrderPayRefundRequest(orderBean,getRefundAmount(orderBean)); MultiOrderRefundRequest multiOrderRefundRequest = paymentSdkAdapter.getMultiOrderPayRefundRequest(orderBean, getRefundAmount(orderBean));
MultiOrderRefundResponse multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest,orderBean.getCompanyId()); 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())) { if (multiOrderRefundResponse == null || multiOrderRefundResponse.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION); throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
} }
List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = multiOrderRefundResponse.getData().refundPlatformResponseList; List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = multiOrderRefundResponse.getData().refundPlatformResponseList;
if(null != refundPlatformResponseList && refundPlatformResponseList.size()>0){ if (null != refundPlatformResponseList && refundPlatformResponseList.size() > 0) {
redisCache.save(RedisUtil.getPaymentTransIdSequenceKey(refundPlatformResponseList.get(0).getTransId()),orderBean.getOid(),1L,TimeUnit.DAYS); redisCache.save(RedisUtil.getPaymentTransIdSequenceKey(refundPlatformResponseList.get(0).getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS);
} }
return handlePayRefundResponse(refundStatus,multiOrderRefundRequest.getRefundTradeNo()); return handlePayRefundResponse(refundStatus, multiOrderRefundRequest.getRefundTradeNo());
} }
...@@ -277,9 +279,11 @@ public class PaymentHandle { ...@@ -277,9 +279,11 @@ public class PaymentHandle {
com.freemud.application.sdk.api.base.BaseResponse<PayRefundResponseDto> refundNewResponse = paymentNewClient.payRefund(request); com.freemud.application.sdk.api.base.BaseResponse<PayRefundResponseDto> refundNewResponse = paymentNewClient.payRefund(request);
if (Objects.equals(refundNewResponse.getCode(), "100") || Objects.equals(refundNewResponse.getCode(), "101")) { if (Objects.equals(refundNewResponse.getCode(), "100") || Objects.equals(refundNewResponse.getCode(), "101")) {
PayRefundResponseDto res = refundNewResponse.getData(); PayRefundResponseDto res = refundNewResponse.getData();
OrderRefundResponse refundResponse = new OrderRefundResponse();
refundResponse.setStatusCode(100);
refundResponse.setRefundStatus(PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode());
if (null != res && null != res.getData()) { if (null != res && null != res.getData()) {
PayRefundData refunData = res.getData(); PayRefundData refunData = res.getData();
OrderRefundResponse refundResponse = new OrderRefundResponse();
refundResponse.setStatusCode(refunData.getResultCode()); refundResponse.setStatusCode(refunData.getResultCode());
refundResponse.setMsg(refunData.getResultMsg()); refundResponse.setMsg(refunData.getResultMsg());
refundResponse.setRefundAmount(refunData.getRefundAmount()); refundResponse.setRefundAmount(refunData.getRefundAmount());
...@@ -290,9 +294,8 @@ public class PaymentHandle { ...@@ -290,9 +294,8 @@ public class PaymentHandle {
refundResponse.setThirdPartRefundTradeNo(refunData.getThirdPartRefundTradeNo()); refundResponse.setThirdPartRefundTradeNo(refunData.getThirdPartRefundTradeNo());
refundResponse.setThirdPartTradeNo(refunData.getThirdPartTradeNo()); refundResponse.setThirdPartTradeNo(refunData.getThirdPartTradeNo());
refundResponse.setTotalAmount(refunData.getTotalAmount()); refundResponse.setTotalAmount(refunData.getTotalAmount());
return ResponseUtils.success(refundResponse);
} }
return ResponseUtils.success(refundResponse);
} }
if (!Arrays.asList("8200201", "8200202", "8200203", "8200204", "8200205").contains(refundNewResponse.getCode())) { if (!Arrays.asList("8200201", "8200202", "8200203", "8200204", "8200205").contains(refundNewResponse.getCode())) {
......
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