Commit 0a900b57 by vega

Merge branch 'fix/1.9.37-支付补偿通知transId为空报错'

parents ab5ccb9f 37cac631
package cn.freemud.entities.vo;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class RefundNotifyCallbackRequestVo {
/**
* 第三方交易单号
......
......@@ -608,10 +608,14 @@ public class OrderServiceImpl implements Orderservice {
//只有退款成功更新状态.其他情况不处理
return refundFaileMessage("pay refundStatus is not 100,refundStatus=" + refundStatus);
}
// 如果transId为空,返回失败
if (StringUtils.isBlank(requestVo.getTransId())) {
return refundFaileMessage("transId is empty " + requestVo);
}
//查询订单详情
QueryRelationOrderByIdResponseDto queryOrderByIdResponseDto = getQueryRelationOrderByIdResponseDto(requestVo.getTransId());
if (queryOrderByIdResponseDto.getData() == null || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, queryOrderByIdResponseDto.getErrcode())) {
return refundFaileMessage("order query fail" + queryOrderByIdResponseDto);
return refundFaileMessage("order query fail " + queryOrderByIdResponseDto);
}
OrderBean orderBean = new OrderBean();
......
......@@ -173,6 +173,24 @@ public class OrderControllerTest {
}
/**
* 退款回调
*/
@Test
public void refundNotifyCallback() {
RefundNotifyCallbackRequestVo request = new RefundNotifyCallbackRequestVo();
request.setRefundStatus(100);
request.setTransId("null");
String str = JSONObject.toJSONString(request);
try {
mockMvc.perform(post("/order/refundNotifyCallback").content(str).
contentType(MediaType.APPLICATION_JSON_UTF8).accept(MediaType.APPLICATION_JSON_UTF8)).andDo(print()).
andExpect(jsonPath("$.code").value("500"));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 再来一单
*/
@Test
......
......@@ -24,6 +24,7 @@ public enum ResponseResultEnum {
ORDER_DATA_NOT_FOUND("54001", "查询订单数据失败"),
ORDER_DATA_NOT_EXIST("54002", "没有相关数据"),
ORDER_STORE_NOT_FOUND("54003", "门店ID或门店名称不存在"),
ORDER_TRANS_ID_IS_NULL("54004", "transId为null"),
;
private String code;
......
package com.freemud.application.sdk.api.ordercenter.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.freemud.application.sdk.api.base.BaseRequest;
import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties;
import com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant;
import com.freemud.application.sdk.api.ordercenter.constant.ResponseConstant;
import com.freemud.application.sdk.api.ordercenter.enums.ResponseResultEnum;
import com.freemud.application.sdk.api.ordercenter.request.*;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderAffirmReq;
......@@ -20,14 +23,17 @@ import com.freemud.application.sdk.api.ordercenter.util.ResponseUtil;
import com.freemud.application.sdk.api.util.RequestThirdPartyUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.List;
import java.util.Objects;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import static com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant.*;
......@@ -600,12 +606,28 @@ public class OrderSdkService {
* @return
*/
public BaseResponse<List<OrderInfoReqs>> queryRelatedOrderByCode(QueryRelatedOrderByCodeReq request, String trackingNo) {
StringBuilder urlString = new StringBuilder(InterfaceAddressConstant.QUERY_RELATED_ORDER_BY_CODE)
.append("?orderCode=").append(request.getOrderCode());
OrderBaseResp<List<OrderInfoReqs>> responseDTO = RequestThirdPartyUtils.httpGetReqComplex(restTemplate, urlString.toString(),
createBaseRequest(null, trackingNo), new ParameterizedTypeReference<OrderBaseResp<List<OrderInfoReqs>>>() {
});
return responseHandle(responseDTO);
if (StringUtils.isBlank(request.getOrderCode())) {
return ResponseUtil.error(ResponseResultEnum.ORDER_TRANS_ID_IS_NULL);
}
String urlString = InterfaceAddressConstant.QUERY_RELATED_ORDER_BY_CODE + "?orderCode=" + request.getOrderCode();
OrderBaseResp responseDTO = RequestThirdPartyUtils.httpGetReqComplex(restTemplate, urlString,
createBaseRequest(null, trackingNo), new ParameterizedTypeReference<OrderBaseResp>() {});
// 1.9.37 fix 原本使用自带序列化成list时如果基础服务查询失败返回object会抛异常,所以改成手动操作
OrderBaseResp<List<OrderInfoReqs>> resp;
if (Objects.isNull(responseDTO)) {
resp = null;
} else {
List<OrderInfoReqs> result;
if (Objects.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, responseDTO.getCode()) && responseDTO.getResult() instanceof List) {
result = JSONArray.parseArray(JSON.toJSONString(responseDTO.getResult()), OrderInfoReqs.class);
} else {
result = Collections.emptyList();
}
resp = new OrderBaseResp<>();
BeanUtils.copyProperties(responseDTO, resp, "result");
resp.setResult(result);
}
return responseHandle(resp);
}
private <T> BaseRequest<T> createBaseRequest(T req, String trackingNo) {
......
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