Commit 0a705fb9 by vega

1.9.34 ID1013493

【付费会员推广门店】【C端服务端】订单调开卡接口传门店id给会员
parent 465cc897
......@@ -55,7 +55,6 @@ import cn.freemud.utils.ValidationCode;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.*;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.*;
......@@ -112,7 +111,6 @@ import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*;
import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.freemud.sdk.api.assortment.order.util.LockUtils;
import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo;
import com.freemud.sdk.api.assortment.orderdistributor.entity.dto.PaymentMqMessageDto;
import com.freemud.sdk.api.assortment.orderdistributor.service.PaymentQueueService;
......@@ -124,22 +122,16 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.util.StringUtil;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
......@@ -1789,8 +1781,9 @@ public class OrderServiceImpl implements Orderservice {
// 0元订单如果不需要支付,自定义支付单号
orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean());
}
if (orderPayResponse == null) {
return failPreOrderPay(LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getProductOrderBean(), cardCode, createPrepayRequestDto.getOrderClient());
if (orderPayResponse == null || Objects.isNull(orderPayResponse.getFmId())) {
return failPreOrderPay(LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getProductOrderBean(), cardCode, createPrepayRequestDto.getOrderClient(),
Objects.isNull(orderPayResponse) ? null : orderPayResponse.getMsg());
}
createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, createPrepayRequestDto.getProductOrderBean());
BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, createPrepayRequestDto.getOrderExtInfoDTO(), createPrepayRequestDto.getProductOrderBean(), LogThreadLocal.getTrackingNo());
......@@ -1867,12 +1860,12 @@ public class OrderServiceImpl implements Orderservice {
return orderPayResponse;
}
private BaseResponse failPreOrderPay(String trackingNo, QueryOrdersResponse.DataBean.OrderBean orderBean, String cardCode, OrderClientType orderClient) {
private BaseResponse failPreOrderPay(String trackingNo, QueryOrdersResponse.DataBean.OrderBean orderBean, String cardCode, OrderClientType orderClient, String msg) {
List<OrderClientType> notCancelOrderClientList = Lists.newArrayList(OrderClientType.APP);
if(!notCancelOrderClientList.contains(orderClient)) {
//失败冲正库存,冲正活动库存,取消订单
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "获取预支付失败", trackingNo, null);
AfterSalesType.SYSTEM_CANCEL, StringUtils.defaultIfBlank(msg,"获取预支付失败"), trackingNo, null);
orderCenterSdkService.orderCancel(cancelOrderRequest);
// TODO: 2019/9/10 hubowen mq推送变更
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
......@@ -1885,29 +1878,35 @@ public class OrderServiceImpl implements Orderservice {
}
public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId) {
OrderPayResponse orderPayResponse;
try {
UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId);
com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo);
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
log.error("支付SDK返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase));
return null;
}
// 1.9.34 预支付失败需要把原因进行记录
orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg(responseBase.getMessage());
} else {
putDelMq(request.getPartnerId(), request.getStoreId(), responseBase.getData().getFmId(), orderBean.getOid());
OrderPayResponse orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData());
orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
return orderPayResponse;
}
} catch (Exception e) {
LogUtil.error("getPreOrderPay_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(paymentRequest));
//TODO 邮件告警
return null;
orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg("getPreOrderPay_error");
}
return orderPayResponse;
}
public OrderPayResponse svcPay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) {
CodePayRequest request = new CodePayRequest();
OrderPayResponse orderPayResponse = new OrderPayResponse();
String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName());
request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
......@@ -1926,19 +1925,21 @@ public class OrderServiceImpl implements Orderservice {
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo);
if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode())
|| svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) {
return null;
orderPayResponse.setMsg(Objects.isNull(svcCardAmountResponseBaseResponse) ? "获取svc卡余额异常" : svcCardAmountResponseBaseResponse.getMessage());
return orderPayResponse;
}
Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount();
if (amount + vamount < orderBean.getAmount()) {
return null;
orderPayResponse.setMsg("svc卡余额不足");
return orderPayResponse;
}
//svc卡支付
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo);
if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
return null;
}
OrderPayResponse orderPayResponse = new OrderPayResponse();
// 1.9.34 预支付失败需要把原因进行记录
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "svc卡支付异常" : responseBase.getMessage());
} else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
......@@ -1946,6 +1947,7 @@ public class OrderServiceImpl implements Orderservice {
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
}
return orderPayResponse;
}
......@@ -2199,11 +2201,13 @@ public class OrderServiceImpl implements Orderservice {
QueryOrdersResponse.DataBean.OrderBean productOrderBean = operateDto.getProductOrderBean();
//支付-- 包含商品券无需支付、唤起微信支付、储值卡支付直接支付、扫脸支付
OrderPayResponse orderPayResponse = pay(userLoginInfoDto,createOrderVo,totalAmount,cardAmount,fatherOrderBean);
if (orderPayResponse == null) {
// 默认支付成功必有非码订单号,不管成功与否,orderPayResponse都是不空的.此处是防御式处理
if (orderPayResponse == null || Objects.isNull(orderPayResponse.getFmId())) {
if(createOrderVo.getFaceCode() != null){
createOrderVo.setCardCode(createOrderVo.getFaceCode());
}
return failPreOrderPay(LogThreadLocal.getTrackingNo(), productOrderBean, createOrderVo.getCardCode(), null);
return failPreOrderPay(LogThreadLocal.getTrackingNo(), productOrderBean, createOrderVo.getCardCode(), null,
Objects.isNull(orderPayResponse) ? null : orderPayResponse.getMsg());
}
//更新订单extinfo信息
BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, orderExtInfoDTO, productOrderBean, LogThreadLocal.getTrackingNo());
......@@ -2358,6 +2362,7 @@ public class OrderServiceImpl implements Orderservice {
*/
public OrderPayResponse facePay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo) {
FacePayRequestDto request = new FacePayRequestDto();
OrderPayResponse orderPayResponse = new OrderPayResponse();
String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName());
request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
......@@ -2379,16 +2384,17 @@ public class OrderServiceImpl implements Orderservice {
LogUtil.error("facePay_error", null, null, e);
}
if (responseDto == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseDto.getCode()) || responseDto.getData() == null) {
return null;
}
// 1.9.34 预支付失败需要把原因进行记录
orderPayResponse.setMsg(Objects.isNull(responseDto) ? "扫脸支付异常" : responseDto.getMessage());
} else {
FacePayResponseDto response = responseDto.getData();
OrderPayResponse orderPayResponse = new OrderPayResponse();
orderPayResponse.setFmId(response.getFmId());
orderPayResponse.setPayTransId(response.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
}
return orderPayResponse;
}
......
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