Commit 71b1155b by ping.wu

退款返回结果判断修改

parent 7f4d66cf
......@@ -52,7 +52,7 @@ import java.util.concurrent.TimeUnit;
@Component
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 REFUND_RESPONSE_CODE = 8200305;
......@@ -61,8 +61,6 @@ public class PaymentHandle {
@Value("${mccafe.partner.id}")
private String macCafePartnerId;
// @Autowired
// private StandardPaymentService standardPaymentService;
@Autowired
private PaymentSdkAdapter paymentSdkAdapter;
@Autowired
......@@ -82,85 +80,89 @@ public class PaymentHandle {
/**
* 退款
*
* @param request
* @param orderBean
* @return
*/
public PayRefundResponse refund(OrderManagerRequest request, OrderBeanV1 orderBean){
PayRefundStatus refundStatus=PayRefundStatus.SUCCESS;
PayRefundRequestDto orderRefundRequest = paymentSdkAdapter.getOrderRefundRequest(orderBean,getRefundAmount(orderBean));
public PayRefundResponse refund(OrderManagerRequest request, OrderBeanV1 orderBean) {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
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)) {
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId());
return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
}
BaseResponse<OrderRefundResponse> orderRefundResponse;
// orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, LogThreadLocal.getTrackingNo());
orderRefundResponse = this.orderRefundNew(orderRefundRequest);
if (orderRefundResponse==null){
if (orderRefundResponse == null) {
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);
}
ResponseResult refundFail = ResponseResult.REFUND_FAIL;
refundFail.setMessage(orderRefundResponse.getMessage());
throw new OrderServiceException(refundFail);
}
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus())?PayRefundStatus.SUCCESS:PayRefundStatus.RUNNING;
return handlePayRefundResponse(refundStatus,orderRefundRequest.getRefundId());
refundStatus = ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus()) ? PayRefundStatus.SUCCESS : PayRefundStatus.RUNNING;
return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
}
/**
* 退款
*
* @param orderBean
* @return
*/
public PayRefundResponse newOrderRefund(OrderBeanV1 orderBean, OrderExtInfoDto orderExtInfoDto){
PayRefundStatus refundStatus=PayRefundStatus.SUCCESS;
public PayRefundResponse newOrderRefund(OrderBeanV1 orderBean, OrderExtInfoDto orderExtInfoDto) {
PayRefundStatus refundStatus = PayRefundStatus.SUCCESS;
PayRefundRequestDto refundRequest = paymentSdkAdapter.convert2OrderRefundNewRequest(orderBean, orderExtInfoDto);
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<PayRefundResponseDto> orderRefundResponse;
try {
// orderRefundResponse = paymentNewService.newOrderRefund(refundRequest, LogThreadLocal.getTrackingNo());
orderRefundResponse = paymentNewClient.payRefund(refundRequest);
}catch (Exception ex){
} catch (Exception ex) {
ErrorLog.errorConvertJson(this.getClass(), "paymentNewService.newOrderRefundError", ex);
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
if (orderRefundResponse==null){
if (orderRefundResponse == null) {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
if(ObjectUtils.equals(orderRefundResponse.getCode(),"101")){
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getCode())?PayRefundStatus.SUCCESS:PayRefundStatus.FAIL;
return handlePayRefundResponse(refundStatus,refundRequest.getRefundId());
if (ObjectUtils.equals(orderRefundResponse.getCode(), "101")) {
refundStatus = ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getCode()) ? PayRefundStatus.SUCCESS : PayRefundStatus.FAIL;
return handlePayRefundResponse(refundStatus, refundRequest.getRefundId());
}
if ( ObjectUtils.notEqual(orderRefundResponse.getCode(),SUCCESS)){
throw new OrderServiceException(ResponseResult.REFUND_FAIL,orderRefundResponse.getMessage());
if (ObjectUtils.notEqual(orderRefundResponse.getCode(), SUCCESS)) {
throw new OrderServiceException(ResponseResult.REFUND_FAIL, orderRefundResponse.getMessage());
}
refundStatus=ObjectUtils.equals( PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getCode())?PayRefundStatus.SUCCESS:PayRefundStatus.FAIL;
return handlePayRefundResponse(refundStatus,refundRequest.getRefundId());
refundStatus = ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getCode()) ? PayRefundStatus.SUCCESS : PayRefundStatus.FAIL;
return handlePayRefundResponse(refundStatus, refundRequest.getRefundId());
}
/**
* 麦咖啡退款
*
* @param request
* @param orderBean
* @return
*/
public PayRefundResponse mcCafeRefund(OrderManagerRequest request, OrderBeanV1 orderBean){
PayRefundStatus refundStatus=PayRefundStatus.SUCCESS;
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());
return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
}
if(macCafePartnerId.equals(orderBean.getCompanyId())) {
if (macCafePartnerId.equals(orderBean.getCompanyId())) {
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");
} else {
extendParams.put("mealType", "pickup");
......@@ -171,15 +173,15 @@ public class PaymentHandle {
try {
// orderRefundResponse = standardPaymentService.orderRefund(orderRefundRequest, "");
orderRefundResponse = this.orderRefundNew(orderRefundRequest);
}catch (Exception ex){
} catch (Exception 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)){
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());
refundStatus = ObjectUtils.equals(PayRefundStatus.SUCCESS.getCode(), orderRefundResponse.getData().getRefundStatus()) ? PayRefundStatus.SUCCESS : PayRefundStatus.FAIL;
return handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
}
/**
......@@ -191,38 +193,38 @@ public class PaymentHandle {
private BigDecimal getRefundAmount(OrderBeanV1 data) {
BigDecimal refundAmount = new BigDecimal(data.getAmount());
OrderBaseResp<List<AfterSalesOrderResp>> listBaseResponse = orderSdkService.queryAfterSaleByOrderCode(data.getCompanyId(), data.getOid());
if (CollectionUtils.isNotEmpty(listBaseResponse.getResult())){
refundAmount=new BigDecimal(listBaseResponse.getResult().get(0).getActualAmount());
if (CollectionUtils.isNotEmpty(listBaseResponse.getResult())) {
refundAmount = new BigDecimal(listBaseResponse.getResult().get(0).getActualAmount());
}
return refundAmount;
}
private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, Long refundId){
private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, Long refundId) {
PayRefundResponse payRefundResponse = new PayRefundResponse();
payRefundResponse.setPayRefundStatus(refundStatus);
payRefundResponse.setRefundId(refundId.toString());
return payRefundResponse;
}
private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, String refundId){
private PayRefundResponse handlePayRefundResponse(PayRefundStatus refundStatus, String refundId) {
PayRefundResponse payRefundResponse = new PayRefundResponse();
payRefundResponse.setPayRefundStatus(refundStatus);
payRefundResponse.setRefundId(refundId.toString());
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());
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())) {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
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 (null != refundPlatformResponseList && refundPlatformResponseList.size() > 0) {
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 {
com.freemud.application.sdk.api.base.BaseResponse<PayRefundResponseDto> refundNewResponse = paymentNewClient.payRefund(request);
if (Objects.equals(refundNewResponse.getCode(), "100") || Objects.equals(refundNewResponse.getCode(), "101")) {
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()) {
PayRefundData refunData = res.getData();
OrderRefundResponse refundResponse = new OrderRefundResponse();
refundResponse.setStatusCode(refunData.getResultCode());
refundResponse.setMsg(refunData.getResultMsg());
refundResponse.setRefundAmount(refunData.getRefundAmount());
......@@ -290,9 +294,8 @@ public class PaymentHandle {
refundResponse.setThirdPartRefundTradeNo(refunData.getThirdPartRefundTradeNo());
refundResponse.setThirdPartTradeNo(refunData.getThirdPartTradeNo());
refundResponse.setTotalAmount(refunData.getTotalAmount());
return ResponseUtils.success(refundResponse);
}
return ResponseUtils.success(refundResponse);
}
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