Commit e3efb70a by ping.wu

去除支付sdk,换成Feign调用

parent 85f95889
package cn.freemud.entities.dto.pay;
import lombok.Data;
@Data
public class PayRefundData {
private Integer resultCode;
private String resultMsg;
private String thirdPartTradeNo;
private String tradeNo;
private String refundTradeNo;
private String thirdPartRefundTradeNo;
private Long refundAmount;
private Long totalAmount;
private Integer refundStatus;
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
import java.util.Map;
@Data
public class PayRefundRequestDto {
/**
* 接口版本,必须为2
*/
private Integer ver;
/**
* 商户编号(由非码提供)
*/
private String partnerId;
/**
* 退款交易序号
*/
private String refundId;
/**
* 营业员编号(可以使用固定值)
*/
private String operatorId;
/**
* 商家POS机编号(可以使用固定值)
*/
private String stationId;
/**
* 商家门店号(在线支付需要提前定义)
*/
private String storeId;
/**
* 终端交易序号
*/
private String transId;
/**
* 业务日期
*/
private String businessDate;
/**
* 客户端code
*/
private Long clientCode;
/**
* 非码交易流水号
*/
private String fmId;
/**
* 总金额
*/
private Long totalAmount;
/**
* 退款金额
*/
private Long refundAmount;
/**
* 退款原因描述
*/
private String refundDesc;
/**
* 退款回调地址
*/
private String notifyUrl;
/**
* 退款时分账规则
*/
private String accountDivided;
/**
* 扩展字段,存放扩展信息
*/
private Map<String, String> extendParams;
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
@Data
public class PayRefundResponseDto {
private Integer code;
private String message;
private PayRefundData data;
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
@Data
public class PaymentQueryOrderRequestDto {
private String transactionCode;
private String ver;
private String partnerId;
private String storeId;
private String frontTransId;
private String stationId;
private String operatorId;
private String transId;
private String businessDate;
private String clientCode;
private String fmId;
private String thirdPartTradeNo;
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
@Data
public class PaymentQueryOrderResponseDto {
private String userId;
private Integer merchantCoupon;
private Integer platformCoupon;
private Integer vipAmount;
private Long amount;
private String transactionCode;
private String status;
private String payCode;
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
@Data
public class PaymentQueryRequestDto {
private String transactionCode;
private String ver;
private String partnerId;
private String storeId;
private String frontTransId;
private String stationId;
private String operatorId;
private String transId;
private String businessDate;
private String clientCode;
private String fmId;
private String thirdPartTradeNo;
private String endTransId;
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
@Data
public class PaymentQueryResponseDto {
private Integer resultCode;
private String resultMsg;
private String userId;
private String transCurrency;
private Integer totalAmount;
private Integer merchantCoupon;
private Integer platformCoupon;
private String tradeNo;
private String thirdPartTradeNo;
private String tradeTime;
private String tradeState;
private String platformMchId;
private String appId;
private String endTransId;
}
...@@ -10,6 +10,8 @@ import cn.freemud.entities.dto.coupon.InvalidCouponsRequestDto; ...@@ -10,6 +10,8 @@ import cn.freemud.entities.dto.coupon.InvalidCouponsRequestDto;
import cn.freemud.entities.dto.coupon.InvalidCouponsResponseDto; import cn.freemud.entities.dto.coupon.InvalidCouponsResponseDto;
import cn.freemud.entities.dto.order.CreateOrderOperateDto; import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.pay.PaymentQueryRequestDto;
import cn.freemud.entities.dto.pay.PaymentQueryResponseDto;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto; import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.store.StoreMixResponseDto; import cn.freemud.entities.dto.store.StoreMixResponseDto;
...@@ -21,8 +23,8 @@ import cn.freemud.enums.TradeState; ...@@ -21,8 +23,8 @@ import cn.freemud.enums.TradeState;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.AppOrderService; import cn.freemud.service.AppOrderService;
import cn.freemud.service.StoreService;
import cn.freemud.service.thirdparty.CouponOnlineClient; import cn.freemud.service.thirdparty.CouponOnlineClient;
import cn.freemud.service.thirdparty.PaymentNewClient;
import cn.freemud.utils.BeanUtil; import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.RedisUtil; import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
...@@ -42,17 +44,11 @@ import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp; ...@@ -42,17 +44,11 @@ import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest; import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQueryRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse; import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQueryResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.productcenter.domain.ProductInfosDTO; import com.freemud.application.sdk.api.productcenter.domain.ProductInfosDTO;
import com.freemud.application.sdk.api.productcenter.request.product.GetProductRequest; import com.freemud.application.sdk.api.productcenter.request.product.GetProductRequest;
import com.freemud.application.sdk.api.productcenter.service.ProductService; import com.freemud.application.sdk.api.productcenter.service.ProductService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest; import com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest;
...@@ -87,8 +83,6 @@ public class AppOrderServiceImpl implements AppOrderService { ...@@ -87,8 +83,6 @@ public class AppOrderServiceImpl implements AppOrderService {
@Autowired @Autowired
private OrderCenterSdkService orderCenterSdkService; private OrderCenterSdkService orderCenterSdkService;
@Autowired @Autowired
private PaymentNewService paymentNewService;
@Autowired
private RedisCache redisCache; private RedisCache redisCache;
@Autowired @Autowired
private RedisService redisService; private RedisService redisService;
...@@ -109,6 +103,9 @@ public class AppOrderServiceImpl implements AppOrderService { ...@@ -109,6 +103,9 @@ public class AppOrderServiceImpl implements AppOrderService {
@Autowired @Autowired
private PayServiceImpl payServiceimpl; private PayServiceImpl payServiceimpl;
@Autowired
private PaymentNewClient paymentNewClient;
/** /**
* 不支持会员卡 * 不支持会员卡
*/ */
...@@ -332,12 +329,12 @@ public class AppOrderServiceImpl implements AppOrderService { ...@@ -332,12 +329,12 @@ public class AppOrderServiceImpl implements AppOrderService {
if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) { if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) {
//订单状态未支付且存在预支付订单: //订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态 // 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest(); PaymentQueryRequestDto paymentQueryRequest = new PaymentQueryRequestDto();
paymentQueryRequest.setPartnerId(orderBean.getCompanyId()); paymentQueryRequest.setPartnerId(orderBean.getCompanyId());
paymentQueryRequest.setStoreId(orderBean.getShopId()); paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId()); paymentQueryRequest.setFmId(extInfo.getFmId());
paymentQueryRequest.setVer("2"); paymentQueryRequest.setVer("2");
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponse> queryResponseBaseResponse = paymentNewService.query(paymentQueryRequest, LogThreadLocal.getTrackingNo()); com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponseDto> queryResponseBaseResponse = paymentNewClient.payQuery(paymentQueryRequest);
//判断预支付订单状态 //判断预支付订单状态
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())) { if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR); throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
...@@ -353,7 +350,7 @@ public class AppOrderServiceImpl implements AppOrderService { ...@@ -353,7 +350,7 @@ public class AppOrderServiceImpl implements AppOrderService {
closeUnifiedOrderRequest.setVer("2"); closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId()); closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId()); closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewService.cancelNewUnifiedOrder(closeUnifiedOrderRequest, LogThreadLocal.getTrackingNo()); com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewClient.cancelNewUnifiedOrder(closeUnifiedOrderRequest);
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) { if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED); throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
} }
......
...@@ -33,10 +33,6 @@ import cn.freemud.entities.dto.user.CustomerPropertyBaseResponse; ...@@ -33,10 +33,6 @@ import cn.freemud.entities.dto.user.CustomerPropertyBaseResponse;
import cn.freemud.entities.dto.user.GetSvcInfoByMemberIdResponseVo; import cn.freemud.entities.dto.user.GetSvcInfoByMemberIdResponseVo;
import cn.freemud.entities.dto.user.StatisticalScoreRequestVo; import cn.freemud.entities.dto.user.StatisticalScoreRequestVo;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import cn.freemud.entities.vo.SellCouponCreateOrderVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.entities.vo.order.CreateOrderCouponCodeVo; import cn.freemud.entities.vo.order.CreateOrderCouponCodeVo;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
...@@ -61,10 +57,9 @@ import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressR ...@@ -61,10 +57,9 @@ import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressR
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse; import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService; import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
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.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest; import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse; import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse;
......
...@@ -7,12 +7,10 @@ import cn.freemud.constant.ResponseCodeConstant; ...@@ -7,12 +7,10 @@ import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.UpdateReserveOrderResponseVo; import cn.freemud.entities.UpdateReserveOrderResponseVo;
import cn.freemud.entities.bo.CreateOrderBONew; import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.pay.PaymentQueryRequestDto;
import cn.freemud.entities.dto.pay.PaymentQueryResponseDto;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto; import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto; import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto;
import cn.freemud.entities.dto.GetShopDishWareProductDto;
import cn.freemud.entities.dto.ProductListDto;
import cn.freemud.entities.dto.ShopBaseResponseDto;
import cn.freemud.entities.dto.ShoppingCartBaseResponse;
import cn.freemud.entities.dto.promotion.CouponPromotionDto; import cn.freemud.entities.dto.promotion.CouponPromotionDto;
import cn.freemud.entities.dto.promotion.OrderBeanRequest; import cn.freemud.entities.dto.promotion.OrderBeanRequest;
import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse; import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse;
...@@ -28,6 +26,7 @@ import cn.freemud.enums.*; ...@@ -28,6 +26,7 @@ import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.EncircleOrderService; import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.thirdparty.PaymentNewClient;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StoreItemClient; import cn.freemud.service.thirdparty.StoreItemClient;
import cn.freemud.service.thirdparty.SvcAppClient; import cn.freemud.service.thirdparty.SvcAppClient;
...@@ -48,15 +47,9 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; ...@@ -48,15 +47,9 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest; import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQueryRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse; import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQueryResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.storecenter.request.GetStoreTableRequest; import com.freemud.application.sdk.api.storecenter.request.GetStoreTableRequest;
import com.freemud.application.sdk.api.storecenter.response.GetStoreTableResponse; import com.freemud.application.sdk.api.storecenter.response.GetStoreTableResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse; import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
...@@ -107,8 +100,6 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -107,8 +100,6 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
@Autowired @Autowired
private OrderAdapter orderAdapter; private OrderAdapter orderAdapter;
@Autowired @Autowired
private PaymentNewService paymentNewService;
@Autowired
private SvcAppClient svcAppClient; private SvcAppClient svcAppClient;
@Autowired @Autowired
private OrderCommonService orderCommonService; private OrderCommonService orderCommonService;
...@@ -124,6 +115,8 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -124,6 +115,8 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
private CouponAdapter couponAdapter; private CouponAdapter couponAdapter;
@Autowired @Autowired
private PayServiceImpl payService; private PayServiceImpl payService;
@Autowired
private PaymentNewClient paymentNewClient;
private final Integer RESPONSE_SUCCESS_CODE = 100; private final Integer RESPONSE_SUCCESS_CODE = 100;
...@@ -575,12 +568,12 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -575,12 +568,12 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
if(extInfo != null && StringUtils.isNotEmpty(extInfo.getPrePayTransId()) && StringUtils.isNotEmpty(extInfo.getFmId())){ if(extInfo != null && StringUtils.isNotEmpty(extInfo.getPrePayTransId()) && StringUtils.isNotEmpty(extInfo.getFmId())){
//订单状态未支付且存在预支付订单: //订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态 // 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest(); PaymentQueryRequestDto paymentQueryRequest = new PaymentQueryRequestDto();
paymentQueryRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId()); paymentQueryRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId());
paymentQueryRequest.setStoreId(assortmentCustomerInfoVo.getStoreId()); paymentQueryRequest.setStoreId(assortmentCustomerInfoVo.getStoreId());
paymentQueryRequest.setFmId(extInfo.getFmId()); paymentQueryRequest.setFmId(extInfo.getFmId());
paymentQueryRequest.setVer("2"); paymentQueryRequest.setVer("2");
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponse> queryResponseBaseResponse = paymentNewService.query(paymentQueryRequest,LogThreadLocal.getTrackingNo()); com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponseDto> queryResponseBaseResponse = paymentNewClient.payQuery(paymentQueryRequest);
//判断预支付订单状态 //判断预支付订单状态
if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),queryResponseBaseResponse.getCode())){ if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),queryResponseBaseResponse.getCode())){
return ResponseUtil.error(ResponseResultEnum.PAY_BACKEND_QUERY_DETAIL_ERROR.getCode(),ResponseResultEnum.PAY_BACKEND_QUERY_DETAIL_ERROR.getMessage(),null); return ResponseUtil.error(ResponseResultEnum.PAY_BACKEND_QUERY_DETAIL_ERROR.getCode(),ResponseResultEnum.PAY_BACKEND_QUERY_DETAIL_ERROR.getMessage(),null);
...@@ -596,7 +589,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -596,7 +589,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
closeUnifiedOrderRequest.setVer("2"); closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId()); closeUnifiedOrderRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId());
closeUnifiedOrderRequest.setStoreId(assortmentCustomerInfoVo.getStoreId()); closeUnifiedOrderRequest.setStoreId(assortmentCustomerInfoVo.getStoreId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewService.cancelNewUnifiedOrder(closeUnifiedOrderRequest,LogThreadLocal.getTrackingNo()); com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewClient.cancelNewUnifiedOrder(closeUnifiedOrderRequest);
if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),cancelNewUnifiedOrder.getCode())){ if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),cancelNewUnifiedOrder.getCode())){
return ResponseUtil.error(ResponseResult.ENCIRCLEORDER_PRE_PAYMENT_CLOSE_FAILED); return ResponseUtil.error(ResponseResult.ENCIRCLEORDER_PRE_PAYMENT_CLOSE_FAILED);
} }
......
...@@ -26,13 +26,13 @@ import cn.freemud.base.util.DateUtil; ...@@ -26,13 +26,13 @@ import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.RedisKeyConstant; import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.db.PushMccafeOrder; import cn.freemud.entities.db.PushMccafeOrder;
import cn.freemud.entities.dto.order.McCafePushOrderDto;
import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse; import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse;
import cn.freemud.entities.dto.PayAccessResponse; import cn.freemud.entities.dto.PayAccessResponse;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.delivery.*; import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.order.CreateOrderOperateDto; import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.McCafePushOrderDto;
import cn.freemud.entities.dto.pay.OrderPayResponse; import cn.freemud.entities.dto.pay.OrderPayResponse;
import cn.freemud.entities.dto.pay.PaymentMqMessageDto; import cn.freemud.entities.dto.pay.PaymentMqMessageDto;
import cn.freemud.entities.dto.product.AttributeValue; import cn.freemud.entities.dto.product.AttributeValue;
...@@ -48,8 +48,8 @@ import cn.freemud.entities.dto.user.SendCouponForqujiaRequestDto; ...@@ -48,8 +48,8 @@ import cn.freemud.entities.dto.user.SendCouponForqujiaRequestDto;
import cn.freemud.entities.vo.CreateDeliveryVo; import cn.freemud.entities.vo.CreateDeliveryVo;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.mccafe.RecentGoodsInfoVo; import cn.freemud.entities.vo.mccafe.RecentGoodsInfoVo;
import cn.freemud.enums.*;
import cn.freemud.enums.OrderType; import cn.freemud.enums.OrderType;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest; import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponVo; import cn.freemud.management.entities.dto.request.order.MCCafeCouponVo;
...@@ -79,35 +79,25 @@ import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseR ...@@ -79,35 +79,25 @@ import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseR
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse; import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto; import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto;
import com.freemud.application.sdk.api.log.LogThreadLocal; 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.ProductBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.RefundBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest; import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse; import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService; import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.v1.RefundBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.*; import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.request.*; import com.freemud.application.sdk.api.ordercenter.request.*;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse; import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.*; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.*;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.CodePayResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.service.EmailAlertService; import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest; import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse; import com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.application.sdk.api.util.Md5Util;
import com.freemud.sdk.api.assortment.message.config.MessageOfficialRefundPushMqConfig; import com.freemud.sdk.api.assortment.message.config.MessageOfficialRefundPushMqConfig;
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsg; import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsg;
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsgDataValue; import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsgDataValue;
...@@ -121,9 +111,6 @@ import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus; ...@@ -121,9 +111,6 @@ import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.enums.OldOrderType; import com.freemud.sdk.api.assortment.order.enums.OldOrderType;
import com.freemud.sdk.api.assortment.order.request.order.*; 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.order.*;
//import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import cn.freemud.service.mccafe.CouponClientService;
import cn.freemud.service.mccafe.MCCafeOrderCenterSdkService;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService; 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.util.LockUtils;
import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo; import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo;
...@@ -132,8 +119,6 @@ import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest; ...@@ -132,8 +119,6 @@ import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest;
import com.freemud.sdk.api.assortment.payment.response.OrderRefundQueryResponse; import com.freemud.sdk.api.assortment.payment.response.OrderRefundQueryResponse;
import com.freemud.sdk.api.assortment.payment.response.OrderRefundResponse; import com.freemud.sdk.api.assortment.payment.response.OrderRefundResponse;
import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse; import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse;
import com.freemud.sdk.api.assortment.payment.service.PaymentCenterService;
import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService;
import com.freemud.sdk.api.assortment.payment.service.process.NewPaymentCenterServiceImpl; import com.freemud.sdk.api.assortment.payment.service.process.NewPaymentCenterServiceImpl;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
...@@ -144,7 +129,6 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -144,7 +129,6 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
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.apache.http.client.HttpClient;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -156,15 +140,12 @@ import org.springframework.stereotype.Service; ...@@ -156,15 +140,12 @@ import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
public class MCCafeOrderServiceImpl implements MCCafeOrderService { public class MCCafeOrderServiceImpl implements MCCafeOrderService {
...@@ -255,8 +236,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -255,8 +236,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired @Autowired
private PaymentQueueService paymentQueueService; private PaymentQueueService paymentQueueService;
@Autowired @Autowired
private PaymentNewService paymentNewService;
@Autowired
private AssortmentOpenPlatformWxappAuthorizerManager wxappAuthorizerManager; private AssortmentOpenPlatformWxappAuthorizerManager wxappAuthorizerManager;
@Autowired @Autowired
private OrderAdapterServiceImpl orderAdapterService; private OrderAdapterServiceImpl orderAdapterService;
...@@ -296,6 +275,10 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -296,6 +275,10 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired @Autowired
private AssortmentCustomerInfoManager assortmentCustomerInfoManager; private AssortmentCustomerInfoManager assortmentCustomerInfoManager;
@Autowired
private PayServiceImpl payServiceImpl;
private static MapperFacade mapper = new DefaultMapperFactory.Builder().build().getMapperFacade(); private static MapperFacade mapper = new DefaultMapperFactory.Builder().build().getMapperFacade();
/** /**
* 下单检查key,防止重复下单 * 下单检查key,防止重复下单
...@@ -676,7 +659,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -676,7 +659,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
if (totalAmount < 0) { if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR); throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} else if (totalAmount > 0) { } else if (totalAmount > 0) {
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, createPrepayRequestDto.getNeedInvoice()); orderPayResponse = payServiceImpl.getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, createPrepayRequestDto.getCardAmount(), transId, null);
// orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, createPrepayRequestDto.getNeedInvoice());
} else { } else {
// 0元订单如果不需要支付,自定义支付单号 // 0元订单如果不需要支付,自定义支付单号
orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean()); orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean());
......
...@@ -306,7 +306,7 @@ public class MallOrderServiceImpl implements MallOrderService { ...@@ -306,7 +306,7 @@ public class MallOrderServiceImpl implements MallOrderService {
if (totalAmount < 0) { if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR); throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} else if(totalAmount > 0) { } else if(totalAmount > 0) {
orderPayResponse = getPreOrderPay(orderBean, paymentRequest, LogThreadLocal.getTrackingNo(), 0); orderPayResponse = payServiceImpl.getPreOrderPay(orderBean, paymentRequest, 0,orderBean.getOid(),orderExtInfoDTO);
} else { } else {
// 0元订单如果不需要支付,自定义支付单号 // 0元订单如果不需要支付,自定义支付单号
orderPayResponse = getOrderPayResponse(paymentRequest, orderBean); orderPayResponse = getOrderPayResponse(paymentRequest, orderBean);
......
...@@ -7,19 +7,16 @@ import cn.freemud.constant.RedisKeyConstant; ...@@ -7,19 +7,16 @@ import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.SvcComPayRequestDto; import cn.freemud.entities.dto.SvcComPayRequestDto;
import cn.freemud.entities.dto.SvcComPayResponseDto; import cn.freemud.entities.dto.SvcComPayResponseDto;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.FacePayRequestDto; import cn.freemud.entities.dto.order.FacePayRequestDto;
import cn.freemud.entities.dto.order.UnifiedPayResponseDto; import cn.freemud.entities.dto.order.UnifiedPayResponseDto;
import cn.freemud.entities.dto.pay.*; import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto; import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto; import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderResponseVo; import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage; import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.entities.vo.order.PlugInParameter;
import cn.freemud.entities.vo.order.CreateOrderUnionPayCardVo; import cn.freemud.entities.vo.order.CreateOrderUnionPayCardVo;
import cn.freemud.entities.vo.order.PlugInParameter;
import cn.freemud.enums.*; import cn.freemud.enums.*;
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;
...@@ -53,14 +50,9 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; ...@@ -53,14 +50,9 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.UpdateOrderReq; import com.freemud.application.sdk.api.ordercenter.request.UpdateOrderReq;
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.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest; import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQueryRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.CodePayResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse; import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQueryResponse; import com.freemud.application.sdk.api.util.ResponseUtils;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant; import com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest; import com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest;
...@@ -68,10 +60,19 @@ import com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest; ...@@ -68,10 +60,19 @@ import com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest;
import com.freemud.sdk.api.assortment.order.request.order.PaymentRequest; import com.freemud.sdk.api.assortment.order.request.order.PaymentRequest;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest; import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse; import com.freemud.sdk.api.assortment.order.response.order.MultiOrderRefundResponse;
import com.freemud.sdk.api.assortment.payment.biz.ReceiverBiz;
import com.freemud.sdk.api.assortment.payment.constant.ConstantPaymentReqType;
import com.freemud.sdk.api.assortment.payment.constant.ResponseConstant;
import com.freemud.sdk.api.assortment.payment.domain.AccountDivideVo;
import com.freemud.sdk.api.assortment.payment.enums.PayRuleIdEnum;
import com.freemud.sdk.api.assortment.payment.enums.PayRuleTypeEnum;
import com.freemud.sdk.api.assortment.payment.enums.PaymentRefundStatus;
import com.freemud.sdk.api.assortment.payment.enums.PlatformType;
import com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest;
import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest; import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest;
import com.freemud.sdk.api.assortment.payment.response.OrderRefundResponse; import com.freemud.sdk.api.assortment.payment.response.OrderRefundResponse;
import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse; import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse;
import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService; import com.freemud.sdk.api.assortment.payment.service.ReceiverService;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
...@@ -92,10 +93,6 @@ import java.util.stream.Collectors; ...@@ -92,10 +93,6 @@ import java.util.stream.Collectors;
public class PayServiceImpl { public class PayServiceImpl {
@Autowired @Autowired
private StandardPaymentService standardPaymentService;
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private SvcAppClient svcAppClient; private SvcAppClient svcAppClient;
@Autowired @Autowired
private ComPayClient comPayClient; private ComPayClient comPayClient;
...@@ -117,6 +114,10 @@ public class PayServiceImpl { ...@@ -117,6 +114,10 @@ public class PayServiceImpl {
@Autowired @Autowired
private AssortmentOpenPlatformPartnerPaymentConfigManager openPlatformPartnerPaymentConfigManager; private AssortmentOpenPlatformPartnerPaymentConfigManager openPlatformPartnerPaymentConfigManager;
@Autowired @Autowired
private AssortmentOpenPlatformPartnerMerchantManager openPlatformPartnerMerchantManager;
@Autowired
private OrderQueueService orderQueueService; private OrderQueueService orderQueueService;
@Autowired @Autowired
private OrderSdkService orderSdkService; private OrderSdkService orderSdkService;
...@@ -172,8 +173,8 @@ public class PayServiceImpl { ...@@ -172,8 +173,8 @@ public class PayServiceImpl {
// orderPayResponse = facePay(createPrepayRequestDto.getFaceCode(), createPrepayRequestDto.getProductOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo()); // orderPayResponse = facePay(createPrepayRequestDto.getFaceCode(), createPrepayRequestDto.getProductOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo());
} else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) { } else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
//现金线上支付 //现金线上支付
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId()); // String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime, createPrepayRequestDto.getOrderExtInfoDTO()); orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, createPrepayRequestDto.getCardAmount(), transId, createPrepayRequestDto.getOrderExtInfoDTO());
} else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) { } else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) {
//混合支付+svc卡(礼品卡) //混合支付+svc卡(礼品卡)
orderPayResponse = switchSvcOrComb(totalAmount, cardCode, createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, createPrepayRequestDto.getChannel(), createPrepayRequestDto.getStoreId(), LogThreadLocal.getTrackingNo()); orderPayResponse = switchSvcOrComb(totalAmount, cardCode, createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, createPrepayRequestDto.getChannel(), createPrepayRequestDto.getStoreId(), LogThreadLocal.getTrackingNo());
...@@ -235,7 +236,6 @@ public class PayServiceImpl { ...@@ -235,7 +236,6 @@ public class PayServiceImpl {
} }
/** /**
* 创建预支付信息 (围餐用) * 创建预支付信息 (围餐用)
* cardCode svc卡号 * cardCode svc卡号
...@@ -250,19 +250,16 @@ public class PayServiceImpl { ...@@ -250,19 +250,16 @@ public class PayServiceImpl {
paymentRequest.setWxAppId(wxAppId); paymentRequest.setWxAppId(wxAppId);
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(partnerId, wxAppId); AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(partnerId, wxAppId);
paymentRequest.setPrincipalName(wxApp.getPrincipalName()); paymentRequest.setPrincipalName(wxApp.getPrincipalName());
// fisherman 2227 测试商户号, 下个版本需要删除
// if ("2080".equals(partnerId)) {
// //【ID1035981】【蜜雪冰城】订单C端,拼接order_body字段:蜜雪冰城+门店编号
// paymentRequest.setPrincipalName("蜜雪冰城" + orderBean.getShopId() + "店");
// }
paymentRequest.setReverseNotifyiDcUrl(reverseNotifyiDcUrl); paymentRequest.setReverseNotifyiDcUrl(reverseNotifyiDcUrl);
//修改订单信息 //修改订单信息
OrderExtInfoDto orderExtInfoDto = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class) == null ? new OrderExtInfoDto() : JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class); OrderExtInfoDto orderExtInfoDto = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class) == null ? new OrderExtInfoDto() : JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
if (orderBean.getAmount() > 0 && StringUtils.isEmpty(cardCode)) { if (orderBean.getAmount() > 0 && StringUtils.isEmpty(cardCode)) {
try { try {
String transId = orderBean.getOid() + redisService.increment(RedisUtil.getPaymentTransIdSequenceKey(orderBean.getOid()), 1L, TimeUnit.DAYS); String transId = orderBean.getOid() + redisService.increment(RedisUtil.getPaymentTransIdSequenceKey(orderBean.getOid()), 1L, TimeUnit.DAYS);
UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId); // UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId);
UnifiedOrderCom com = new UnifiedOrderCom(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId, "30");
//支付聚合sdk 请求参数
UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(com);
if (SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.DEFAULT.getProfile()) if (SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.DEFAULT.getProfile())
|| SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.DEV.getProfile()) || SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.DEV.getProfile())
|| SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.TEST.getProfile())) { || SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.TEST.getProfile())) {
...@@ -270,15 +267,78 @@ public class PayServiceImpl { ...@@ -270,15 +267,78 @@ public class PayServiceImpl {
} }
AppLogUtil.infoLog("支付transId :{},payRequest:{}", request.getTransId(), JSON.toJSONString(request)); AppLogUtil.infoLog("支付transId :{},payRequest:{}", request.getTransId(), JSON.toJSONString(request));
redisService.savePaymentTransIdOrder(RedisUtil.getPaymentTransIdOrderKey(transId), orderBean.getOid(), 1L, TimeUnit.DAYS); redisService.savePaymentTransIdOrder(RedisUtil.getPaymentTransIdOrderKey(transId), orderBean.getOid(), 1L, TimeUnit.DAYS);
com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, LogThreadLocal.getTrackingNo()); // com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, LogThreadLocal.getTrackingNo());
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
return null; //Feign 预支付接口请求参数
UnifiedOrderRequestDto requestDto = this.convert2UnifiedOrderRequestDto(com);
// add by miaohui for 拼单群收款判断拼单人数大于1时参与微信平台补贴活动,创建预支付时上送goodsTag,后续抽成促销服务活动时删除此逻辑 start
if (null != orderBean.getMarketingType() && OrderMarketType.COLLAGE.getIndex() == orderBean.getMarketingType()) {
// 拼单人数大于1人时参加拼单补贴
if (null != orderBean.getProductList() && orderBean.getProductList().stream().map(ProductBeanV1::getUserId).distinct().collect(Collectors.toList()).size() > 1) {
Map<String, String> goodsTagMap = this.goodsTagMap();
String goodsTag = goodsTagMap.get(orderBean.getCompanyId());
goodsTag = StringUtils.isBlank(goodsTag) ? collageGoodsTag : goodsTag;
request.setGoodsTag(goodsTag);
requestDto.setGoodsTag(goodsTag);
} }
orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData()); }
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); // add by miaohui for 拼单群收款判断拼单人数大于1时参与微信平台补贴活动,创建预支付时上送goodsTag,后续抽成促销服务活动时删除此逻辑 end
if (orderExtInfoDto != null && StringUtils.isNotBlank(orderExtInfoDto.getStationId())) {
request.setStationId(orderExtInfoDto.getStationId());
requestDto.setStationId(orderExtInfoDto.getStationId());
}
orderPayResponse = new OrderPayResponse();
String clientCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), orderBean.getShopId());
if (StringUtils.isBlank(clientCode)) {
orderPayResponse.setMsg("请先联系相关人员配置商户对应的支付渠道");
// return orderPayResponse;
}
requestDto.setClientCode(Long.parseLong(clientCode));
// com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> response = paymentNewClient.unifiedOrder(requestDto);
com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> response = null;
//处理超时情况,后续冲正mq正常冲正,同支付sdk逻辑
try {
response = paymentNewClient.unifiedOrder(requestDto);
} catch (Exception e) {
AppLogUtil.errorLog("获取预支付信息异常", JSONObject.toJSONString(requestDto), null, e);
}
//预支付接口失败
if (null == response || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, response.getCode())
|| !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, response.getData().getResultCode())) {
String errorMessage = "unified fail";
if (null != response) {
errorMessage = StringUtils.isNotEmpty(response.getMessage()) ? response.getMessage() : response.getData().getResultMsg();
}
//打印业务异常
if (response != null && printUnifiedPayResponseError) {
AppLogUtil.errorLog("获取预支付信息失败", JSONObject.toJSONString(requestDto), JSONObject.toJSONString(response), null);
}
//预支付失败需要把原因进行记录
orderPayResponse.setMsg(errorMessage);
// return orderPayResponse;
}
putDelMq(request.getPartnerId(), request.getStoreId(), response.getData().getFmId(), orderBean.getOid(), null);
this.convent2CreateOrderResponseVo(orderPayResponse, paymentRequest.getWxAppId(), response.getData());
orderPayResponse.setOpenId(paymentRequest.getOpenId()); orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(PayChannelType.WECHAT);
if (orderPayResponse.getPayOrder() != null && StringUtils.isNotBlank(orderPayResponse.getPayOrder().getAliPayOrder())) {
orderPayResponse.setPayChannelType(PayChannelType.ALIPAY);
}
//抖音支付
if (PayChannelType.TIKTOKPAY.getIndex().toString().equalsIgnoreCase(orderBean.getPayChannelType())) {
orderPayResponse.setPayChannelType(PayChannelType.TIKTOKPAY);
}
// if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
// return null;
// }
// orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData());
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// orderPayResponse.setOrderId(orderBean.getOid());
orderExtInfoDto.setPrePayTransId(request.getTransId()); orderExtInfoDto.setPrePayTransId(request.getTransId());
} catch (Exception e) { } catch (Exception e) {
...@@ -410,13 +470,13 @@ public class PayServiceImpl { ...@@ -410,13 +470,13 @@ public class PayServiceImpl {
* 电子风味卡支付 * 电子风味卡支付
* unionPay card pay * unionPay card pay
*/ */
private OrderPayResponse uSvcPay(OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo, CreateOrderUnionPayCardVo unionPayCard) { public OrderPayResponse uSvcPay(OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo, CreateOrderUnionPayCardVo unionPayCard) {
OrderPayResponse orderPayResponse = new OrderPayResponse(); OrderPayResponse orderPayResponse = new OrderPayResponse();
if (Objects.isNull(unionPayCard) || StringUtils.isBlank(unionPayCard.getCode()) || StringUtils.isBlank(unionPayCard.getPassword())) { if (Objects.isNull(unionPayCard) || StringUtils.isBlank(unionPayCard.getCode()) || StringUtils.isBlank(unionPayCard.getPassword())) {
orderPayResponse.setMsg("电子风味卡信息缺失"); orderPayResponse.setMsg("电子风味卡信息缺失");
return orderPayResponse; return orderPayResponse;
} }
CodePayRequest request = new CodePayRequest(); FacePayRequestDto request = new FacePayRequestDto();
String partnerId = orderBean.getCompanyId(); String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName()); request.setBody(orderBean.getShopName());
request.setBusinessDate(DateTimeFormatter.ofPattern(DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).format(LocalDateTime.now())); request.setBusinessDate(DateTimeFormatter.ofPattern(DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).format(LocalDateTime.now()));
...@@ -433,15 +493,15 @@ public class PayServiceImpl { ...@@ -433,15 +493,15 @@ public class PayServiceImpl {
request.setOperatorId("2"); request.setOperatorId("2");
request.setVer("2"); request.setVer("2");
request.setMerchantDiscount(orderBean.getOriginalAmount().longValue() - orderBean.getAmount()); request.setMerchantDiscount(orderBean.getOriginalAmount().longValue() - orderBean.getAmount());
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo); com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> responseBase = paymentNewClient.codePay(request);
if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) { if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData() == null) {
// 需要把2种特殊情况抛给用户 // 需要把2种特殊情况抛给用户
if (Objects.nonNull(responseBase) && (ResponseCodeConstant.PASSWORD_WRONG.equals(responseBase.getCode()) || ResponseCodeConstant.NOT_SUFFICIENT_FUND.equals(responseBase.getCode()))) { if (Objects.nonNull(responseBase) && (ResponseCodeConstant.PASSWORD_WRONG.equals(responseBase.getCode()) || ResponseCodeConstant.NOT_SUFFICIENT_FUND.equals(responseBase.getCode()))) {
orderPayResponse.setPayTransId(responseBase.getCode()); orderPayResponse.setPayTransId(responseBase.getCode());
} }
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "电子风味卡支付异常" : responseBase.getMessage()); orderPayResponse.setMsg(Objects.isNull(responseBase) ? "电子风味卡支付异常" : responseBase.getMessage());
} else { } else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData(); UnifiedPayResponseDto codePayResponse = responseBase.getData();
orderPayResponse.setFmId(codePayResponse.getFmId()); orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId()); orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
...@@ -457,7 +517,7 @@ public class PayServiceImpl { ...@@ -457,7 +517,7 @@ public class PayServiceImpl {
/** /**
* 获取商户支付超时时间 * 获取商户支付超时时间
*/ */
private String getPartnerPayOvertime(String partnerId) { public String getPartnerPayOvertime(String partnerId) {
return Optional.ofNullable(openPlatformPartnerConfigManager.selectPartnerConfigByPartnerKey(partnerId, RedisKeyConstant.PARTNER_PAY_OVERTIME)) return Optional.ofNullable(openPlatformPartnerConfigManager.selectPartnerConfigByPartnerKey(partnerId, RedisKeyConstant.PARTNER_PAY_OVERTIME))
.orElseGet(() -> { .orElseGet(() -> {
AssortmentOpenPlatformPartnerConfig config = new AssortmentOpenPlatformPartnerConfig(); AssortmentOpenPlatformPartnerConfig config = new AssortmentOpenPlatformPartnerConfig();
...@@ -471,7 +531,9 @@ public class PayServiceImpl { ...@@ -471,7 +531,9 @@ public class PayServiceImpl {
/** /**
* 现金支付 * 现金支付
*/ */
public OrderPayResponse getPreOrderPay(OrderBeanV1 orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId, String partnerPayOvertime, OrderExtInfoDto orderExtInfoDto) { public OrderPayResponse getPreOrderPay(OrderBeanV1 orderBean, PaymentRequest paymentRequest, Integer cardAmount, String transId, OrderExtInfoDto orderExtInfoDto) {
String partnerPayOvertime = this.getPartnerPayOvertime(orderBean.getCompanyId());
OrderPayResponse orderPayResponse; OrderPayResponse orderPayResponse;
UnifiedOrderCom com = new UnifiedOrderCom(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId, partnerPayOvertime); UnifiedOrderCom com = new UnifiedOrderCom(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId, partnerPayOvertime);
...@@ -496,7 +558,7 @@ public class PayServiceImpl { ...@@ -496,7 +558,7 @@ public class PayServiceImpl {
requestDto.setStationId(orderExtInfoDto.getStationId()); requestDto.setStationId(orderExtInfoDto.getStationId());
} }
//使用支付FeignClient //使用支付FeignClient
if(usePayFeignClient){ // if (usePayFeignClient) {
orderPayResponse = new OrderPayResponse(); orderPayResponse = new OrderPayResponse();
String clientCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), orderBean.getShopId()); String clientCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), orderBean.getShopId());
if (StringUtils.isBlank(clientCode)) { if (StringUtils.isBlank(clientCode)) {
...@@ -510,17 +572,17 @@ public class PayServiceImpl { ...@@ -510,17 +572,17 @@ public class PayServiceImpl {
try { try {
response = paymentNewClient.unifiedOrder(requestDto); response = paymentNewClient.unifiedOrder(requestDto);
} catch (Exception e) { } catch (Exception e) {
AppLogUtil.errorLog("获取预支付信息异常", JSONObject.toJSONString(requestDto), null,e); AppLogUtil.errorLog("获取预支付信息异常", JSONObject.toJSONString(requestDto), null, e);
} }
//预支付接口失败 //预支付接口失败
if (null == response || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, response.getCode()) if (null == response || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, response.getCode())
|| !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, response.getData().getResultCode()) ) { || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, response.getData().getResultCode())) {
String errorMessage = "unified fail"; String errorMessage = "unified fail";
if(null != response){ if (null != response) {
errorMessage = StringUtils.isNotEmpty(response.getMessage()) ? response.getMessage() : response.getData().getResultMsg(); errorMessage = StringUtils.isNotEmpty(response.getMessage()) ? response.getMessage() : response.getData().getResultMsg();
} }
//打印业务异常 //打印业务异常
if(response != null && printUnifiedPayResponseError){ if (response != null && printUnifiedPayResponseError) {
AppLogUtil.errorLog("获取预支付信息失败", JSONObject.toJSONString(requestDto), JSONObject.toJSONString(response), null); AppLogUtil.errorLog("获取预支付信息失败", JSONObject.toJSONString(requestDto), JSONObject.toJSONString(response), null);
} }
//预支付失败需要把原因进行记录 //预支付失败需要把原因进行记录
...@@ -528,7 +590,7 @@ public class PayServiceImpl { ...@@ -528,7 +590,7 @@ public class PayServiceImpl {
return orderPayResponse; return orderPayResponse;
} }
putDelMq(request.getPartnerId(), request.getStoreId(), response.getData().getFmId(), orderBean.getOid(), null); putDelMq(request.getPartnerId(), request.getStoreId(), response.getData().getFmId(), orderBean.getOid(), null);
this.convent2CreateOrderResponseVo(orderPayResponse,paymentRequest.getWxAppId(),response.getData()); this.convent2CreateOrderResponseVo(orderPayResponse, paymentRequest.getWxAppId(), response.getData());
orderPayResponse.setOpenId(paymentRequest.getOpenId()); orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); orderPayResponse.setOrderId(orderBean.getOid());
...@@ -541,37 +603,37 @@ public class PayServiceImpl { ...@@ -541,37 +603,37 @@ public class PayServiceImpl {
orderPayResponse.setPayChannelType(PayChannelType.TIKTOKPAY); orderPayResponse.setPayChannelType(PayChannelType.TIKTOKPAY);
} }
return orderPayResponse; return orderPayResponse;
} // }
com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo); // com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo);
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) { // if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
// 1.9.34 预支付失败需要把原因进行记录 // // 1.9.34 预支付失败需要把原因进行记录
orderPayResponse = new OrderPayResponse(); // orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg(responseBase.getMessage()); // orderPayResponse.setMsg(responseBase.getMessage());
} else { // } else {
putDelMq(request.getPartnerId(), request.getStoreId(), responseBase.getData().getFmId(), orderBean.getOid(), null); // putDelMq(request.getPartnerId(), request.getStoreId(), responseBase.getData().getFmId(), orderBean.getOid(), null);
orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData()); // orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); // orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId()); // orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); // orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); // orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(PayChannelType.WECHAT); // orderPayResponse.setPayChannelType(PayChannelType.WECHAT);
if (orderPayResponse.getPayOrder() != null && StringUtils.isNotBlank(orderPayResponse.getPayOrder().getAliPayOrder())) { // if (orderPayResponse.getPayOrder() != null && StringUtils.isNotBlank(orderPayResponse.getPayOrder().getAliPayOrder())) {
orderPayResponse.setPayChannelType(PayChannelType.ALIPAY); // orderPayResponse.setPayChannelType(PayChannelType.ALIPAY);
} // }
//抖音支付 // //抖音支付
if (PayChannelType.TIKTOKPAY.getIndex().toString().equalsIgnoreCase(orderBean.getPayChannelType())) { // if (PayChannelType.TIKTOKPAY.getIndex().toString().equalsIgnoreCase(orderBean.getPayChannelType())) {
orderPayResponse.setPayChannelType(PayChannelType.TIKTOKPAY); // orderPayResponse.setPayChannelType(PayChannelType.TIKTOKPAY);
} // }
//
} // }
return orderPayResponse; // return orderPayResponse;
} }
/** /**
* 混合支付 * 混合支付
*/ */
private OrderPayResponse switchSvcOrComb(Long totalAmount public OrderPayResponse switchSvcOrComb(Long totalAmount
, String cardCode , String cardCode
, OrderBeanV1 orderBean , OrderBeanV1 orderBean
, PaymentRequest paymentRequest , PaymentRequest paymentRequest
...@@ -745,14 +807,15 @@ public class PayServiceImpl { ...@@ -745,14 +807,15 @@ public class PayServiceImpl {
* 唤起预支付 * 唤起预支付
*/ */
public com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> unifiedOrder(UnifiedOrderRequest request) { public com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> unifiedOrder(UnifiedOrderRequest request) {
return standardPaymentService.unifiedOrder(request, LogThreadLocal.getTrackingNo()); return new com.freemud.application.sdk.api.base.BaseResponse();
// return standardPaymentService.unifiedOrder(request, LogThreadLocal.getTrackingNo());
} }
/** /**
* 支付退款 * 支付退款
*/ */
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> orderRefund(com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest) { public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> orderRefund(com.freemud.sdk.api.assortment.payment.request.OrderRefundRequest orderPayRefundRequest) {
return standardPaymentService.orderRefund(orderPayRefundRequest, LogThreadLocal.getTrackingNo()); return orderRefundNew(orderPayRefundRequest);
} }
/** /**
...@@ -776,7 +839,7 @@ public class PayServiceImpl { ...@@ -776,7 +839,7 @@ public class PayServiceImpl {
public boolean closePrePay(OrderBeanV1 orderBean) { public boolean closePrePay(OrderBeanV1 orderBean) {
//是否支付成功 //是否支付成功
boolean paySuccess = false; boolean paySuccess = false;
if(!queryPayOrder){ if (!queryPayOrder) {
return paySuccess; return paySuccess;
} }
OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class); OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
...@@ -809,12 +872,12 @@ public class PayServiceImpl { ...@@ -809,12 +872,12 @@ public class PayServiceImpl {
if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) { if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) {
//订单状态未支付且存在预支付订单: //订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态 // 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest(); PaymentQueryRequestDto paymentQueryRequest = new PaymentQueryRequestDto();
paymentQueryRequest.setPartnerId(orderBean.getCompanyId()); paymentQueryRequest.setPartnerId(orderBean.getCompanyId());
paymentQueryRequest.setStoreId(orderBean.getShopId()); paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId()); paymentQueryRequest.setFmId(extInfo.getFmId());
paymentQueryRequest.setVer("2"); paymentQueryRequest.setVer("2");
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponse> queryResponseBaseResponse = paymentNewService.query(paymentQueryRequest, LogThreadLocal.getTrackingNo()); com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponseDto> queryResponseBaseResponse = paymentNewClient.payQuery(paymentQueryRequest);
//判断预支付订单状态 //判断预支付订单状态
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())) { if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR); throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
...@@ -832,7 +895,7 @@ public class PayServiceImpl { ...@@ -832,7 +895,7 @@ public class PayServiceImpl {
closeUnifiedOrderRequest.setVer("2"); closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId()); closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId()); closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewService.cancelNewUnifiedOrder(closeUnifiedOrderRequest, LogThreadLocal.getTrackingNo()); com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewClient.cancelNewUnifiedOrder(closeUnifiedOrderRequest);
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) { if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED); throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
} }
...@@ -850,12 +913,12 @@ public class PayServiceImpl { ...@@ -850,12 +913,12 @@ public class PayServiceImpl {
if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) { if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) {
//订单状态未支付且存在预支付订单: //订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态 // 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest(); PaymentQueryRequestDto paymentQueryRequest = new PaymentQueryRequestDto();
paymentQueryRequest.setPartnerId(orderBean.getCompanyId()); paymentQueryRequest.setPartnerId(orderBean.getCompanyId());
paymentQueryRequest.setStoreId(orderBean.getShopId()); paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId()); paymentQueryRequest.setFmId(extInfo.getFmId());
paymentQueryRequest.setVer("2"); paymentQueryRequest.setVer("2");
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponse> queryResponseBaseResponse = paymentNewService.query(paymentQueryRequest, LogThreadLocal.getTrackingNo()); com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponseDto> queryResponseBaseResponse = paymentNewClient.payQuery(paymentQueryRequest);
//判断预支付订单状态 //判断预支付订单状态
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())) { if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR); throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
...@@ -871,7 +934,7 @@ public class PayServiceImpl { ...@@ -871,7 +934,7 @@ public class PayServiceImpl {
closeUnifiedOrderRequest.setVer("2"); closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId()); closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId()); closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewService.cancelNewUnifiedOrder(closeUnifiedOrderRequest, LogThreadLocal.getTrackingNo()); com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewClient.cancelNewUnifiedOrder(closeUnifiedOrderRequest);
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) { if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED); throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
} }
...@@ -1107,7 +1170,7 @@ public class PayServiceImpl { ...@@ -1107,7 +1170,7 @@ public class PayServiceImpl {
/** /**
* 获取门店支付信息 * 获取门店支付信息
* * <p>
* aggregationType 6-会员、7-微商城、8-一键购买 9:积分商城 * aggregationType 6-会员、7-微商城、8-一键购买 9:积分商城
*/ */
public AssortmentOpenPlatformIappWxappStore getIappWxappStoreInfo(String wxAppId, String aggregationType) { public AssortmentOpenPlatformIappWxappStore getIappWxappStoreInfo(String wxAppId, String aggregationType) {
...@@ -1116,14 +1179,13 @@ public class PayServiceImpl { ...@@ -1116,14 +1179,13 @@ public class PayServiceImpl {
} }
public UnifiedOrderRequestDto convert2UnifiedOrderRequestDto(UnifiedOrderCom com) { public UnifiedOrderRequestDto convert2UnifiedOrderRequestDto(UnifiedOrderCom com) {
OrderBeanV1 orderBean = com.getOrderBean(); OrderBeanV1 orderBean = com.getOrderBean();
PaymentRequest paymentRequest =com.getPaymentRequest(); PaymentRequest paymentRequest = com.getPaymentRequest();
Long amount = com.getAmount(); Long amount = com.getAmount();
Integer cardAmount = com.getCardAmount(); Integer cardAmount = com.getCardAmount();
String transId =com.getTransId(); String transId = com.getTransId();
String partnerPayOvertime = com.getPartnerPayOvertime(); String partnerPayOvertime = com.getPartnerPayOvertime();
UnifiedOrderRequestDto orderPayDto = new UnifiedOrderRequestDto(); UnifiedOrderRequestDto orderPayDto = new UnifiedOrderRequestDto();
...@@ -1166,7 +1228,7 @@ public class PayServiceImpl { ...@@ -1166,7 +1228,7 @@ public class PayServiceImpl {
} }
public void convent2CreateOrderResponseVo(OrderPayResponse createOrderResponseVo, String appId, UnifiedPayResponseDto response){ public void convent2CreateOrderResponseVo(OrderPayResponse createOrderResponseVo, String appId, UnifiedPayResponseDto response) {
createOrderResponseVo.setWxAppid(appId); createOrderResponseVo.setWxAppid(appId);
createOrderResponseVo.setFmId(response.getFmId()); createOrderResponseVo.setFmId(response.getFmId());
createOrderResponseVo.setEndTransId(response.getEndTransId()); createOrderResponseVo.setEndTransId(response.getEndTransId());
...@@ -1189,14 +1251,216 @@ public class PayServiceImpl { ...@@ -1189,14 +1251,216 @@ public class PayServiceImpl {
} }
//1元捐插件需要参数 //1元捐插件需要参数
public PlugInParameter getPaymentAuth(String partnerId,String appId) { public PlugInParameter getPaymentAuth(String partnerId, String appId) {
PlugInParameter plugInParameter = new PlugInParameter(); PlugInParameter plugInParameter = new PlugInParameter();
List<AssortmentOpenPlatformPartnerPaymentConfig> openPlatformPartnerPaymentAuths = openPlatformPartnerPaymentConfigManager.queryPartnerPaymentConfigs(partnerId,appId); List<AssortmentOpenPlatformPartnerPaymentConfig> openPlatformPartnerPaymentAuths = openPlatformPartnerPaymentConfigManager.queryPartnerPaymentConfigs(partnerId, appId);
if(CollectionUtils.isNotEmpty(openPlatformPartnerPaymentAuths)){ if (CollectionUtils.isNotEmpty(openPlatformPartnerPaymentAuths)) {
plugInParameter.setMchCode(openPlatformPartnerPaymentAuths.get(0).getUnitMchId()); plugInParameter.setMchCode(openPlatformPartnerPaymentAuths.get(0).getUnitMchId());
plugInParameter.setSubMchCode(openPlatformPartnerPaymentAuths.get(0).getSubMchid()); plugInParameter.setSubMchCode(openPlatformPartnerPaymentAuths.get(0).getSubMchid());
} }
return plugInParameter; return plugInParameter;
} }
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> orderRefundNew(OrderRefundRequest refundRequest) {
PaymentQueryOrderRequestDto paymentQueryOrderRequest = new PaymentQueryOrderRequestDto();
paymentQueryOrderRequest.setPartnerId(refundRequest.getPartnerId());
paymentQueryOrderRequest.setStoreId(refundRequest.getStoreId());
paymentQueryOrderRequest.setFrontTransId(refundRequest.getOrgTransId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryOrderResponseDto> payQueryOrderResponse = paymentNewClient.payQueryOrder(paymentQueryOrderRequest);
Long vipAmount = 0L;
String payCode = null;
if (Objects.equals(payQueryOrderResponse.getCode(), "100") && payQueryOrderResponse.getData() != null) {
if ((payQueryOrderResponse.getData()).getVipAmount() != null && (payQueryOrderResponse.getData()).getVipAmount() != 0) {
vipAmount = (long) (payQueryOrderResponse.getData()).getVipAmount();
}
refundRequest.setTotalAmount((payQueryOrderResponse.getData()).getAmount());
payCode = payQueryOrderResponse.getCode();
}
if (refundRequest.getTotalAmount() == null || refundRequest.getTotalAmount() == 0L) {
refundRequest.setTotalAmount(refundRequest.getRefundAmount());
}
AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
PayRefundRequestDto request = new PayRefundRequestDto();
request.setStoreId(refundRequest.getStoreId());
request.setStationId(refundRequest.getStationId());
request.setOperatorId(refundRequest.getOperatorId());
request.setTransId(refundRequest.getOrgTransId());
request.setBusinessDate(refundRequest.getBusinessDate());
request.setFmId(refundRequest.getOrgPayFmId());
request.setTotalAmount(refundRequest.getTotalAmount());
request.setRefundAmount(refundRequest.getRefundAmount());
request.setRefundId(refundRequest.getRefundId().toString());
request.setRefundDesc(refundRequest.getRefundDesc());
request.setNotifyUrl(refundRequest.getNotifyUrl());
request.setPartnerId(refundRequest.getPartnerId());
request.setVer(Integer.valueOf(ConstantPaymentReqType.version));
request.setExtendParams(refundRequest.getExtendParams());
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount(), wxAppStore);
if (!Objects.equals(checkParam.getCode(), "100")) {
return checkParam;
} else {
String receiveJsonStr = this.setPayValueFromSDKByManager(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount() + vipAmount, vipAmount, wxAppStore.getIndirectId(), false);
if (!StringUtils.isEmpty(receiveJsonStr)) {
request.setAccountDivided(receiveJsonStr);
}
com.freemud.application.sdk.api.base.BaseResponse<PayRefundResponseDto> refundNewResponse = paymentNewClient.payRefund(request);
if (Objects.equals(refundNewResponse.getCode(), "100")) {
PayRefundResponseDto res = refundNewResponse.getData();
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());
refundResponse.setTotalAmount(refunData.getTotalAmount());
refundResponse.setRefundStatus(this.getRefundStatus(refunData.getResultCode()));
refundResponse.setRefundTradeNo(refunData.getRefundTradeNo());
refundResponse.setTradeNo(refunData.getRefundTradeNo());
refundResponse.setThirdPartRefundTradeNo(refunData.getThirdPartRefundTradeNo());
refundResponse.setThirdPartTradeNo(refunData.getThirdPartTradeNo());
refundResponse.setTotalAmount(refunData.getTotalAmount());
return ResponseUtils.success(refundResponse);
}
}
if (!Arrays.asList("8200201", "8200202", "8200203", "8200204", "8200205").contains(refundNewResponse.getCode())) {
// this.emailAlertService.sendEmailAlert("支付退款失败", "请求json:" + JSONObject.toJSONString(request) + "返回msg:" + refundNewResponse.getMessage());
}
return ResponseUtils.error(refundNewResponse.getCode(), refundNewResponse.getMessage());
}
}
public Integer getRefundStatus(Integer resultCode) {
if (Objects.equals(resultCode, ResponseConstant.SUCCESS_RESPONSE_CODE_INT)) {
return PaymentRefundStatus.PAYMENT_REFUND_STATUS_1.getCode();
} else {
return Objects.equals(resultCode, ResponseConstant.REFUND_RESPONSE_CODE) ? PaymentRefundStatus.PAYMENT_REFUND_STATUS_4.getCode() : PaymentRefundStatus.PAYMENT_REFUND_STATUS_2.getCode();
}
}
private String setPayValueFromSDKByManager(String partnerId, String storeId, Long totalAmount, Long vipAmount, Long indirectId, boolean isPay) {
if (indirectId == null) {
return null;
} else {
AssortmentOpenPlatformPartnerMerchant openPlatformPartnerMerchant = openPlatformPartnerMerchantManager.selectMerchantDetail(indirectId);
List<ReceiverBiz> dtoReceivers = this.calcReceiverNew(openPlatformPartnerMerchant, partnerId, storeId, totalAmount, vipAmount, isPay);
return this.convertOrderPayRequestToReceivers(dtoReceivers);
}
}
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount, AssortmentOpenPlatformIappWxappStore wxAppStore) {
if (StringUtils.isBlank(partnerId)) {
return ResponseUtils.error("500", "商户号不能为空");
} else if (StringUtils.isBlank(storeId)) {
return ResponseUtils.error("500", "门店号不能为空");
} else if (amount == null) {
return ResponseUtils.error("500", "金额不能为空");
} else {
return wxAppStore == null ? ResponseUtils.error("500", "支付信息没有配置") : ResponseUtils.success();
}
}
/**
* 新获取分账信息逻辑
*
* @param openPlatformPartnerMerchant 收单方
* @param partnerId
* @param storeId
* @param totalAmount
* @return
*/
public List<ReceiverBiz> calcReceiverNew(AssortmentOpenPlatformPartnerMerchant openPlatformPartnerMerchant, String partnerId, String storeId, Long totalAmount, Long vipAmount, boolean isPay) {
String platform = openPlatformPartnerMerchant != null ? openPlatformPartnerMerchant.getPlatform() : "";
if (!PlatformType.YI_BAO_PAYMENT.getCode().equals(platform) && !PlatformType.YF_PAYMENT.getCode().equals(platform)) {
return null;
}
AssortmentOpenPlatformPartnerMerchantAccountManager openPlatformPartnerMerchantAccountManager = ApplicationBeanManager.getBean(AssortmentOpenPlatformPartnerMerchantAccountManager.class);
Long orderAmount;
List<ReceiverBiz> result = Lists.newArrayList();
List<AssortmentOpenPlatformPartnerMerchantAccount> openPlatformPartnerMerchantAccounts;
if (vipAmount == null || vipAmount == 0L) {
// 不走会员分账
openPlatformPartnerMerchantAccounts = openPlatformPartnerMerchantAccountManager.selectByRuleId(partnerId, storeId, PayRuleIdEnum.DEFAULT.getCode());
orderAmount = totalAmount;
} else {
// 走会员分账
openPlatformPartnerMerchantAccounts = vipSubAccount(partnerId, storeId, vipAmount, platform, openPlatformPartnerMerchantAccountManager, result, isPay);
orderAmount = totalAmount - vipAmount;
}
ReceiverService receiverService = ApplicationBeanManager.getBean(platform, ReceiverService.class);
if (receiverService == null) {
return null;
}
List<ReceiverBiz> list = receiverService.getReceivers(openPlatformPartnerMerchant, openPlatformPartnerMerchantAccounts, orderAmount, isPay);
result.addAll(list);
return result;
}
/**
* 易宝会员分账计算
*
* @param partnerId
* @param storeId
* @param vipAmount
* @param platform
* @param openPlatformPartnerMerchantAccountManager
* @param result
* @return
*/
private List<AssortmentOpenPlatformPartnerMerchantAccount> vipSubAccount(String partnerId, String storeId, Long vipAmount, String platform, AssortmentOpenPlatformPartnerMerchantAccountManager openPlatformPartnerMerchantAccountManager
, List<ReceiverBiz> result, boolean isPay) {
// 退款不需要计算会员分账
if (!PlatformType.YI_BAO_PAYMENT.getCode().equals(platform)) {
return Collections.emptyList();
}
// 查询固定金额得分账记录
List<AssortmentOpenPlatformPartnerMerchantAccount> openPlatformPartnerMerchantAccounts = null;
List<AssortmentOpenPlatformPartnerMerchantAccount> payRates = openPlatformPartnerMerchantAccountManager.selectPayRate(partnerId, storeId, vipAmount + "", PayRuleTypeEnum.FIXED_AMOUNT.getCode());
if (CollectionUtils.isNotEmpty(payRates)) {
AssortmentOpenPlatformPartnerMerchantAccount account = payRates.get(0);
if (isPay) {
ReceiverBiz receiver = new ReceiverBiz();
receiver.setAccount(account.getAccountCard());
//传整数,直接去除小数点后面的数字
receiver.setPrice(vipAmount);
receiver.setName(account.getAccountName());
result.add(receiver);
}
List<AssortmentOpenPlatformPartnerMerchantAccount> subAccounts = openPlatformPartnerMerchantAccountManager.selectByRuleId(partnerId, storeId, account.getRuleId());
// 剔除固定金额
openPlatformPartnerMerchantAccounts = subAccounts.stream().filter(a -> Objects.equals(a.getRuleType(), PayRuleTypeEnum.FIXED_PROPORTION.getCode())).collect(Collectors.toList());
}
return openPlatformPartnerMerchantAccounts;
}
public String convertOrderPayRequestToReceivers(List<ReceiverBiz> receiverBizs) {
if (CollectionUtils.isEmpty(receiverBizs)) {
return null;
}
//分账
List<ReceiverBiz> receivers = receiverBizs;
List<AccountDivideVo> divideVos = new ArrayList<>();
for (ReceiverBiz receiver : receivers) {
AccountDivideVo divideVo = new AccountDivideVo();
divideVo.setLedgerNo(receiver.getAccount());
divideVo.setLedgerName(receiver.getName());
Double amount = receiver.getPrice() / 100d;
divideVo.setAmount(amount + "");
divideVos.add(divideVo);
}
return JSONObject.toJSONString(divideVos);
}
} }
...@@ -5,9 +5,10 @@ import cn.freemud.constant.ResponseCodeKeyConstant; ...@@ -5,9 +5,10 @@ import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.order.FacePayRequestDto; import cn.freemud.entities.dto.order.FacePayRequestDto;
import cn.freemud.entities.dto.order.UnifiedPayResponseDto; import cn.freemud.entities.dto.order.UnifiedPayResponseDto;
import cn.freemud.entities.dto.order.InvoiceCreateResponse; import cn.freemud.entities.dto.order.InvoiceCreateResponse;
import cn.freemud.entities.dto.pay.InvoiceCreateRequest; import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.UnifiedOrderRequestDto;
import cn.freemud.entities.dto.order.RefundQueryResponseDto; import cn.freemud.entities.dto.order.RefundQueryResponseDto;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -64,4 +65,20 @@ public interface PaymentNewClient { ...@@ -64,4 +65,20 @@ public interface PaymentNewClient {
com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> codePay(@RequestBody FacePayRequestDto orderPayDto); com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> codePay(@RequestBody FacePayRequestDto orderPayDto);
@LogIgnoreFeign(logMessage="payQuery")
@PostMapping("paymentcenter/close")
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder(@RequestBody PaymentCloseUnifiedOrderRequest request);
@LogIgnoreFeign(logMessage="payQuery")
@PostMapping("paymentcenter/query")
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponseDto> payQuery(@RequestBody PaymentQueryRequestDto request);
@LogIgnoreFeign(logMessage="payQueryOrder")
@PostMapping("paymentcenter/queryOrder")
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryOrderResponseDto> payQueryOrder(@RequestBody PaymentQueryOrderRequestDto request);
//现金支付退款接口
@LogIgnoreFeign(logMessage="payRefund")
@PostMapping("paymentcenter/refund")
com.freemud.application.sdk.api.base.BaseResponse<PayRefundResponseDto> payRefund(@RequestBody PayRefundRequestDto request);
} }
...@@ -15,14 +15,18 @@ import cn.freemud.entities.dto.SvcComPayRequestDto; ...@@ -15,14 +15,18 @@ import cn.freemud.entities.dto.SvcComPayRequestDto;
import cn.freemud.entities.dto.SvcComPayResponseDto; import cn.freemud.entities.dto.SvcComPayResponseDto;
import cn.freemud.entities.dto.order.CreateOrderOperateDto; import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.pay.OrderPayResponse; import cn.freemud.entities.dto.pay.OrderPayResponse;
import cn.freemud.entities.dto.pay.PaymentMqMessageDto; import cn.freemud.entities.dto.pay.PaymentMqMessageDto;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto; import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.order.CreateOrderUnionPayCardVo; import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.enums.*; import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.entities.vo.SubtractStockVO;
import cn.freemud.enums.CreateOrderSceneEnum;
import cn.freemud.enums.OrderMarketType;
import cn.freemud.enums.PaySuccessSource;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.CheckOrderUniversal; import cn.freemud.service.CheckOrderUniversal;
...@@ -33,7 +37,6 @@ import cn.freemud.service.thirdparty.ComPayClient; ...@@ -33,7 +37,6 @@ import cn.freemud.service.thirdparty.ComPayClient;
import cn.freemud.service.thirdparty.SvcComPayClient; import cn.freemud.service.thirdparty.SvcComPayClient;
import cn.freemud.service.universal.factory.CreateOrderServiceFactory; import cn.freemud.service.universal.factory.CreateOrderServiceFactory;
import cn.freemud.utils.AppLogUtil; import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import cn.freemud.utils.ValidationCode; import cn.freemud.utils.ValidationCode;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -65,14 +68,8 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; ...@@ -65,14 +68,8 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest; import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp; import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.CodePayResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO; import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest; import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService; import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService;
...@@ -85,10 +82,8 @@ import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; ...@@ -85,10 +82,8 @@ import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime; import com.freemud.sdk.api.assortment.order.enums.AutoOrderConfigTime;
import com.freemud.sdk.api.assortment.order.enums.StockChangeType; import com.freemud.sdk.api.assortment.order.enums.StockChangeType;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse; import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse; import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
//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.service.OrderCenterSdkService;
import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest; import com.freemud.sdk.api.assortment.payment.request.UnifiedOrderRequest;
import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse; import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse;
...@@ -100,16 +95,14 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -100,16 +95,14 @@ import org.springframework.beans.factory.annotation.Autowired;
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 java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS; import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS;
import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR; import static com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.RESPONSE_SUCCESS_STR;
//import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
/** /**
* 订单服务 * 订单服务
* *
...@@ -134,8 +127,6 @@ public abstract class UniversalOrderService { ...@@ -134,8 +127,6 @@ public abstract class UniversalOrderService {
@Autowired @Autowired
private AssortmentOpenPlatformPartnerConfigManager openPlatformPartnerConfigManager; private AssortmentOpenPlatformPartnerConfigManager openPlatformPartnerConfigManager;
@Autowired @Autowired
private PaymentNewService paymentNewService;
@Autowired
protected PayServiceImpl payService; protected PayServiceImpl payService;
@Autowired @Autowired
private PaymentQueueService paymentQueueService; private PaymentQueueService paymentQueueService;
...@@ -707,14 +698,15 @@ public abstract class UniversalOrderService { ...@@ -707,14 +698,15 @@ public abstract class UniversalOrderService {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR); throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} else if (totalAmount > 0 && Objects.nonNull(createPrepayRequestDto.getUnionPayCard())) { } else if (totalAmount > 0 && Objects.nonNull(createPrepayRequestDto.getUnionPayCard())) {
// 电子风味卡支付 // 电子风味卡支付
orderPayResponse = uSvcPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getUnionPayCard()); orderPayResponse = payService.uSvcPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getUnionPayCard());
} else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) { } else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId()); // String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime, createPrepayRequestDto.getOrderExtInfoDTO()); orderPayResponse = payService.getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, createPrepayRequestDto.getCardAmount(), transId, createPrepayRequestDto.getOrderExtInfoDTO());
// orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime, createPrepayRequestDto.getOrderExtInfoDTO());
} }
//混合支付+svc卡 //混合支付+svc卡
else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) { else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) {
orderPayResponse = switchSvcOrComb(totalAmount, cardCode, createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, createPrepayRequestDto.getChannel(), createPrepayRequestDto.getStoreId(), LogThreadLocal.getTrackingNo()); orderPayResponse = payService.switchSvcOrComb(totalAmount, cardCode, createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, createPrepayRequestDto.getChannel(), createPrepayRequestDto.getStoreId(), LogThreadLocal.getTrackingNo());
} else { } else {
// 0元订单如果不需要支付,自定义支付单号 // 0元订单如果不需要支付,自定义支付单号
orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean()); orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean());
...@@ -864,74 +856,74 @@ public abstract class UniversalOrderService { ...@@ -864,74 +856,74 @@ public abstract class UniversalOrderService {
return orderPayResponse; return orderPayResponse;
} }
private OrderPayResponse switchSvcOrComb(Long totalAmount // private OrderPayResponse switchSvcOrComb(Long totalAmount
, String cardCode // , String cardCode
, OrderBeanV1 orderBean // , OrderBeanV1 orderBean
, PaymentRequest paymentRequest // , PaymentRequest paymentRequest
, String transId // , String transId
, String channel // , String channel
, String storeId // , String storeId
, String trackingNo) { // , String trackingNo) {
//
OrderPayResponse orderPayResponse = new OrderPayResponse(); // OrderPayResponse orderPayResponse = new OrderPayResponse();
boolean check = this.checkSvcComPay(orderBean.getCompanyId(), orderBean.getShopId()); // boolean check = this.checkSvcComPay(orderBean.getCompanyId(), orderBean.getShopId());
//混合支付 // //混合支付
if (check && StringUtils.isNotBlank(channel)) { // if (check && StringUtils.isNotBlank(channel)) {
String partnerPayOvertime = this.getPartnerPayOvertime(orderBean.getCompanyId()); // String partnerPayOvertime = this.getPartnerPayOvertime(orderBean.getCompanyId());
orderPayResponse = comPayOrder(cardCode, orderBean, paymentRequest, partnerPayOvertime, totalAmount.intValue(), channel, storeId, LogThreadLocal.getTrackingNo()); // orderPayResponse = comPayOrder(cardCode, orderBean, paymentRequest, partnerPayOvertime, totalAmount.intValue(), channel, storeId, LogThreadLocal.getTrackingNo());
} else {//svc 支付 // } else {//svc 支付
orderPayResponse = svcPay(cardCode, orderBean, paymentRequest, transId, trackingNo); // orderPayResponse = svcPay(cardCode, orderBean, paymentRequest, transId, trackingNo);
} // }
return orderPayResponse; // return orderPayResponse;
} // }
public OrderPayResponse svcPay(String cardCode, OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) { // public OrderPayResponse svcPay(String cardCode, OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) {
CodePayRequest request = new CodePayRequest(); // CodePayRequest request = new CodePayRequest();
OrderPayResponse orderPayResponse = new OrderPayResponse(); // OrderPayResponse orderPayResponse = new OrderPayResponse();
String partnerId = orderBean.getCompanyId(); // String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName()); // request.setBody(orderBean.getShopName());
request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS)); // request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
request.setCode(cardCode); // request.setCode(cardCode);
request.setPartnerId(partnerId); // request.setPartnerId(partnerId);
request.setStoreId(orderBean.getShopId()); // request.setStoreId(orderBean.getShopId());
request.setAmount(orderBean.getAmount()); // request.setAmount(orderBean.getAmount());
request.setTransId(transId); // request.setTransId(transId);
request.setStationId("1"); // request.setStationId("1");
request.setOperatorId("1"); // request.setOperatorId("1");
request.setVer("2"); // request.setVer("2");
SVCCardAmountRequest svcRequest = new SVCCardAmountRequest(); // SVCCardAmountRequest svcRequest = new SVCCardAmountRequest();
svcRequest.setPartnerId(partnerId); // svcRequest.setPartnerId(partnerId);
svcRequest.setCardCodes(Arrays.asList(cardCode)); // svcRequest.setCardCodes(Arrays.asList(cardCode));
//查询svc卡余额 // //查询svc卡余额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo); // com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo);
if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode()) // if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode())
|| svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) { // || svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) {
orderPayResponse.setMsg(Objects.isNull(svcCardAmountResponseBaseResponse) ? "获取svc卡余额异常" : svcCardAmountResponseBaseResponse.getMessage()); // orderPayResponse.setMsg(Objects.isNull(svcCardAmountResponseBaseResponse) ? "获取svc卡余额异常" : svcCardAmountResponseBaseResponse.getMessage());
return orderPayResponse; // return orderPayResponse;
} // }
Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount(); // Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount(); // Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount();
if (amount + vamount < orderBean.getAmount()) { // if (amount + vamount < orderBean.getAmount()) {
orderPayResponse.setMsg("svc卡余额不足"); // orderPayResponse.setMsg("svc卡余额不足");
return orderPayResponse; // return orderPayResponse;
} // }
//svc卡支付 // //svc卡支付
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo); // 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) { // if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
// 1.9.34 预支付失败需要把原因进行记录 // // 1.9.34 预支付失败需要把原因进行记录
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "svc卡支付异常" : responseBase.getMessage()); // orderPayResponse.setMsg(Objects.isNull(responseBase) ? "svc卡支付异常" : responseBase.getMessage());
} else { // } else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData(); // CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
orderPayResponse.setFmId(codePayResponse.getFmId()); // orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId()); // orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); // orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId()); // orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); // orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); // orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(PayChannelType.SVC); // orderPayResponse.setPayChannelType(PayChannelType.SVC);
} // }
return orderPayResponse; // return orderPayResponse;
} // }
/** /**
* 创建混合支付 * 创建混合支付
...@@ -945,99 +937,99 @@ public abstract class UniversalOrderService { ...@@ -945,99 +937,99 @@ public abstract class UniversalOrderService {
* @param trackingNo * @param trackingNo
* @return * @return
*/ */
public OrderPayResponse comPayOrder(String cardNo // public OrderPayResponse comPayOrder(String cardNo
, OrderBeanV1 orderBean // , OrderBeanV1 orderBean
, PaymentRequest paymentRequest // , PaymentRequest paymentRequest
, String partnerPayOvertime // , String partnerPayOvertime
, Integer totalAmount // , Integer totalAmount
, String channel // , String channel
, String storeId // , String storeId
, String trackingNo) { // , String trackingNo) {
//
String ebCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), channel, storeId); // String ebCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), channel, storeId);
OrderPayResponse orderPayResponse = new OrderPayResponse(); // OrderPayResponse orderPayResponse = new OrderPayResponse();
; // ;
if (StringUtils.isBlank(ebCode)) { // if (StringUtils.isBlank(ebCode)) {
orderPayResponse.setMsg("请先联系相关人员配置商户对应的支付渠道"); // orderPayResponse.setMsg("请先联系相关人员配置商户对应的支付渠道");
return orderPayResponse; // return orderPayResponse;
} // }
//
CombPayRequest combPayRequest = createOrderAdapter.convent2CombPayOrderRequest(cardNo, orderBean, paymentRequest, partnerPayOvertime, ebCode, channel, totalAmount); // CombPayRequest combPayRequest = createOrderAdapter.convent2CombPayOrderRequest(cardNo, orderBean, paymentRequest, partnerPayOvertime, ebCode, channel, totalAmount);
//todo :xxxooooo xxxoooxox // //todo :xxxooooo xxxoooxox
CombPayResponse combPayResponse = null; // CombPayResponse combPayResponse = null;
int i = 1; // int i = 1;
do { // do {
try { // try {
combPayResponse = comPayClient.combPay(combPayRequest, combPayRequest.getPartner_id()); // combPayResponse = comPayClient.combPay(combPayRequest, combPayRequest.getPartner_id());
if (combPayResponse != null) { // if (combPayResponse != null) {
break; // break;
} // }
} catch (Exception exception) { // } catch (Exception exception) {
} // }
i++; // i++;
} while (i < 4); // } while (i < 4);
//
if (combPayResponse == null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) { // if (combPayResponse == null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) {
orderPayResponse.setMsg(combPayResponse != null ? "支付:" + combPayResponse.getMsg() : "混合支付忙不过来啦,请稍后再试"); // orderPayResponse.setMsg(combPayResponse != null ? "支付:" + combPayResponse.getMsg() : "混合支付忙不过来啦,请稍后再试");
return orderPayResponse; // return orderPayResponse;
} // }
Integer svcAmount = 0; // Integer svcAmount = 0;
Integer svcVAmount = 0; // Integer svcVAmount = 0;
List<CombPayResponse.PayPlatform> payPlatforms = combPayResponse.getData().getPayPlatformResponseList(); // List<CombPayResponse.PayPlatform> payPlatforms = combPayResponse.getData().getPayPlatformResponseList();
if (payPlatforms.size() == 0) { // if (payPlatforms.size() == 0) {
orderPayResponse.setMsg("混合支付:生成预支付失败"); // orderPayResponse.setMsg("混合支付:生成预支付失败");
return orderPayResponse; // return orderPayResponse;
} // }
//生成预支付参数 // //生成预支付参数
CombPayResponse.PayPlatform cashPay = payPlatforms // CombPayResponse.PayPlatform cashPay = payPlatforms
.stream() // .stream()
.filter(f -> !PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst() // .filter(f -> !PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
.orElse(null); // .orElse(null);
//
//现金+svc 现金 // //现金+svc 现金
if (payPlatforms.size() == 2 || (payPlatforms.size() == 1 && cashPay != null)) { // if (payPlatforms.size() == 2 || (payPlatforms.size() == 1 && cashPay != null)) {
orderPayResponse = createOrderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(), orderBean.getCompanyId(), storeId); // orderPayResponse = createOrderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(), orderBean.getCompanyId(), storeId);
orderPayResponse.setOpenId(paymentRequest.getOpenId()); // orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); // orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); // orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); // orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(orderPayResponse.getPayChannelType()); // orderPayResponse.setPayChannelType(orderPayResponse.getPayChannelType());
//隐射关系 // //隐射关系
redisCache.save(RedisUtil.getPaymentTransIdOrderKey(cashPay.getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS); // redisCache.save(RedisUtil.getPaymentTransIdOrderKey(cashPay.getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS);
//加入轮训队列 // //加入轮训队列
putDelMq(orderBean.getCompanyId(), storeId, orderPayResponse.getFmId(), orderBean.getOid(), PayChannelType.getByEbcode(cashPay.getEbCode()).getIndex().intValue()); // putDelMq(orderBean.getCompanyId(), storeId, orderPayResponse.getFmId(), orderBean.getOid(), PayChannelType.getByEbcode(cashPay.getEbCode()).getIndex().intValue());
return orderPayResponse; // return orderPayResponse;
} // }
//单svc // //单svc
else { // else {
CombPayResponse.PayPlatform svcPay = payPlatforms // CombPayResponse.PayPlatform svcPay = payPlatforms
.stream() // .stream()
.filter(f -> PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst() // .filter(f -> PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
.orElse(null); // .orElse(null);
orderPayResponse.setFmId(svcPay.getTransId()); // orderPayResponse.setFmId(svcPay.getTransId());
orderPayResponse.setPayTransId(svcPay.getTransId()); // orderPayResponse.setPayTransId(svcPay.getTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); // orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId()); // orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); // orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); // orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(PayChannelType.SVC); // orderPayResponse.setPayChannelType(PayChannelType.SVC);
for (CombPayResponse.PayPlatform pt : payPlatforms) { // for (CombPayResponse.PayPlatform pt : payPlatforms) {
OrderPayItemResp payItem = new OrderPayItemResp(); // OrderPayItemResp payItem = new OrderPayItemResp();
payItem.setFmTradeNo(pt.getFmTradeNo()); // payItem.setFmTradeNo(pt.getFmTradeNo());
payItem.setStoreId(storeId); // payItem.setStoreId(storeId);
payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue()); // payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue());
payItem.setPayChannelName(PayChannelType.getByEbcode(pt.getEbCode()).getName()); // payItem.setPayChannelName(PayChannelType.getByEbcode(pt.getEbCode()).getName());
payItem.setTransId(pt.getTransId()); // payItem.setTransId(pt.getTransId());
payItem.setPartnerId(combPayRequest.getPartner_id()); // payItem.setPartnerId(combPayRequest.getPartner_id());
payItem.setPayAmount(new BigDecimal(pt.getPayAmount())); // payItem.setPayAmount(new BigDecimal(pt.getPayAmount()));
orderPayResponse.getPayItem().add(payItem); // orderPayResponse.getPayItem().add(payItem);
} // }
} // }
//
return orderPayResponse; // return orderPayResponse;
//
//
} // }
/** /**
* 通过payCode ->clientCode * 通过payCode ->clientCode
...@@ -1201,47 +1193,47 @@ public abstract class UniversalOrderService { ...@@ -1201,47 +1193,47 @@ public abstract class UniversalOrderService {
* @param unionPayCard * @param unionPayCard
* @return * @return
*/ */
private OrderPayResponse uSvcPay(OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo, CreateOrderUnionPayCardVo unionPayCard) { // private OrderPayResponse uSvcPay(OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo, CreateOrderUnionPayCardVo unionPayCard) {
OrderPayResponse orderPayResponse = new OrderPayResponse(); // OrderPayResponse orderPayResponse = new OrderPayResponse();
if (Objects.isNull(unionPayCard) || StringUtils.isBlank(unionPayCard.getCode()) || StringUtils.isBlank(unionPayCard.getPassword())) { // if (Objects.isNull(unionPayCard) || StringUtils.isBlank(unionPayCard.getCode()) || StringUtils.isBlank(unionPayCard.getPassword())) {
orderPayResponse.setMsg("电子风味卡信息缺失"); // orderPayResponse.setMsg("电子风味卡信息缺失");
return orderPayResponse; // return orderPayResponse;
} // }
CodePayRequest request = new CodePayRequest(); // CodePayRequest request = new CodePayRequest();
String partnerId = orderBean.getCompanyId(); // String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName()); // request.setBody(orderBean.getShopName());
request.setBusinessDate(DateTimeFormatter.ofPattern(DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).format(LocalDateTime.now())); // request.setBusinessDate(DateTimeFormatter.ofPattern(DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).format(LocalDateTime.now()));
// paymentRequest 的 payCode可能为null,不保险 // // paymentRequest 的 payCode可能为null,不保险
request.setPayCode(PayChannel.USVCP.getCode()); // request.setPayCode(PayChannel.USVCP.getCode());
// 电子风味卡信息 // // 电子风味卡信息
request.setCode(unionPayCard.getCode()); // request.setCode(unionPayCard.getCode());
request.setCardPassword(unionPayCard.getPassword()); // request.setCardPassword(unionPayCard.getPassword());
request.setPartnerId(partnerId); // request.setPartnerId(partnerId);
request.setStoreId(orderBean.getShopId()); // request.setStoreId(orderBean.getShopId());
request.setAmount(orderBean.getAmount()); // request.setAmount(orderBean.getAmount());
request.setTransId(transId); // request.setTransId(transId);
request.setStationId("2"); // request.setStationId("2");
request.setOperatorId("2"); // request.setOperatorId("2");
request.setVer("2"); // request.setVer("2");
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo); // 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) { // if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
// 需要把2种特殊情况抛给用户 // // 需要把2种特殊情况抛给用户
if (Objects.nonNull(responseBase) && (ResponseCodeConstant.PASSWORD_WRONG.equals(responseBase.getCode()) || ResponseCodeConstant.NOT_SUFFICIENT_FUND.equals(responseBase.getCode()))) { // if (Objects.nonNull(responseBase) && (ResponseCodeConstant.PASSWORD_WRONG.equals(responseBase.getCode()) || ResponseCodeConstant.NOT_SUFFICIENT_FUND.equals(responseBase.getCode()))) {
orderPayResponse.setPayTransId(responseBase.getCode()); // orderPayResponse.setPayTransId(responseBase.getCode());
} // }
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "电子风味卡支付异常" : responseBase.getMessage()); // orderPayResponse.setMsg(Objects.isNull(responseBase) ? "电子风味卡支付异常" : responseBase.getMessage());
} else { // } else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData(); // CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
orderPayResponse.setFmId(codePayResponse.getFmId()); // orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId()); // orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); // orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId()); // orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); // orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); // orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(PayChannelType.USVCP); // orderPayResponse.setPayChannelType(PayChannelType.USVCP);
} // }
return orderPayResponse; // return orderPayResponse;
} // }
/** /**
* 获取商户支付超时时间 * 获取商户支付超时时间
......
...@@ -252,7 +252,8 @@ public class SaasMallOrderService extends UniversalOrderService { ...@@ -252,7 +252,8 @@ public class SaasMallOrderService extends UniversalOrderService {
if (totalAmount < 0) { if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR); throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} else if (totalAmount > 0) { } else if (totalAmount > 0) {
orderPayResponse = this.getPreOrderPay(orderBean, paymentRequest, LogThreadLocal.getTrackingNo(), 0); orderPayResponse = payService.getPreOrderPay(orderBean, paymentRequest, 0,orderBean.getOid(),null);
// orderPayResponse = this.getPreOrderPay(orderBean, paymentRequest, LogThreadLocal.getTrackingNo(), 0);
} else { } else {
// 0元订单如果不需要支付,自定义支付单号 // 0元订单如果不需要支付,自定义支付单号
orderPayResponse = super.getOrderPayResponse(paymentRequest, orderBean); orderPayResponse = super.getOrderPayResponse(paymentRequest, orderBean);
......
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