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;
import cn.freemud.entities.dto.coupon.InvalidCouponsResponseDto;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
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.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.store.StoreMixResponseDto;
......@@ -21,8 +23,8 @@ import cn.freemud.enums.TradeState;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.AppOrderService;
import cn.freemud.service.StoreService;
import cn.freemud.service.thirdparty.CouponOnlineClient;
import cn.freemud.service.thirdparty.PaymentNewClient;
import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil;
......@@ -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.service.OrderSdkService;
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.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.ProductInfosDTO;
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.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.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest;
......@@ -87,8 +83,6 @@ public class AppOrderServiceImpl implements AppOrderService {
@Autowired
private OrderCenterSdkService orderCenterSdkService;
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private RedisCache redisCache;
@Autowired
private RedisService redisService;
......@@ -109,6 +103,9 @@ public class AppOrderServiceImpl implements AppOrderService {
@Autowired
private PayServiceImpl payServiceimpl;
@Autowired
private PaymentNewClient paymentNewClient;
/**
* 不支持会员卡
*/
......@@ -332,12 +329,12 @@ public class AppOrderServiceImpl implements AppOrderService {
if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) {
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest();
PaymentQueryRequestDto paymentQueryRequest = new PaymentQueryRequestDto();
paymentQueryRequest.setPartnerId(orderBean.getCompanyId());
paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId());
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())) {
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
......@@ -353,7 +350,7 @@ public class AppOrderServiceImpl implements AppOrderService {
closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
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())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
}
......
......@@ -33,10 +33,6 @@ import cn.freemud.entities.dto.user.CustomerPropertyBaseResponse;
import cn.freemud.entities.dto.user.GetSvcInfoByMemberIdResponseVo;
import cn.freemud.entities.dto.user.StatisticalScoreRequestVo;
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.enums.*;
import cn.freemud.interceptor.ServiceException;
......@@ -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.service.MemberCenterService;
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.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.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse;
......
......@@ -7,12 +7,10 @@ import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.UpdateReserveOrderResponseVo;
import cn.freemud.entities.bo.CreateOrderBONew;
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.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.OrderBeanRequest;
import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse;
......@@ -28,6 +26,7 @@ import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.thirdparty.PaymentNewClient;
import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StoreItemClient;
import cn.freemud.service.thirdparty.SvcAppClient;
......@@ -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.request.OrderExtInfoDto;
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.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.response.GetStoreTableResponse;
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.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
......@@ -107,8 +100,6 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
@Autowired
private OrderAdapter orderAdapter;
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private SvcAppClient svcAppClient;
@Autowired
private OrderCommonService orderCommonService;
......@@ -124,6 +115,8 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
private CouponAdapter couponAdapter;
@Autowired
private PayServiceImpl payService;
@Autowired
private PaymentNewClient paymentNewClient;
private final Integer RESPONSE_SUCCESS_CODE = 100;
......@@ -575,12 +568,12 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
if(extInfo != null && StringUtils.isNotEmpty(extInfo.getPrePayTransId()) && StringUtils.isNotEmpty(extInfo.getFmId())){
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest();
PaymentQueryRequestDto paymentQueryRequest = new PaymentQueryRequestDto();
paymentQueryRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId());
paymentQueryRequest.setStoreId(assortmentCustomerInfoVo.getStoreId());
paymentQueryRequest.setFmId(extInfo.getFmId());
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())){
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 {
closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId());
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())){
return ResponseUtil.error(ResponseResult.ENCIRCLEORDER_PRE_PAYMENT_CLOSE_FAILED);
}
......
......@@ -26,13 +26,13 @@ import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.db.PushMccafeOrder;
import cn.freemud.entities.dto.order.McCafePushOrderDto;
import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse;
import cn.freemud.entities.dto.PayAccessResponse;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
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.PaymentMqMessageDto;
import cn.freemud.entities.dto.product.AttributeValue;
......@@ -48,8 +48,8 @@ import cn.freemud.entities.dto.user.SendCouponForqujiaRequestDto;
import cn.freemud.entities.vo.CreateDeliveryVo;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.mccafe.RecentGoodsInfoVo;
import cn.freemud.enums.*;
import cn.freemud.enums.OrderType;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponVo;
......@@ -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.deliverycenter.response.CreateDeliveryOrderResponseDto;
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.response.QueryReceiveAddressResponse;
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.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.OrderBaseResp;
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.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.storecenter.request.GetListByCodesRequest;
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.StoreResponse;
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.entity.MpTemplateMsg;
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsgDataValue;
......@@ -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.request.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.util.LockUtils;
import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo;
......@@ -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.OrderRefundResponse;
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.google.common.collect.Lists;
import com.google.common.collect.Maps;
......@@ -144,7 +129,6 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.http.client.HttpClient;
import org.joda.time.DateTime;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -156,15 +140,12 @@ import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
public class MCCafeOrderServiceImpl implements MCCafeOrderService {
......@@ -255,8 +236,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired
private PaymentQueueService paymentQueueService;
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private AssortmentOpenPlatformWxappAuthorizerManager wxappAuthorizerManager;
@Autowired
private OrderAdapterServiceImpl orderAdapterService;
......@@ -296,6 +275,10 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired
private AssortmentCustomerInfoManager assortmentCustomerInfoManager;
@Autowired
private PayServiceImpl payServiceImpl;
private static MapperFacade mapper = new DefaultMapperFactory.Builder().build().getMapperFacade();
/**
* 下单检查key,防止重复下单
......@@ -676,7 +659,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} 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 {
// 0元订单如果不需要支付,自定义支付单号
orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean());
......
......@@ -306,7 +306,7 @@ public class MallOrderServiceImpl implements MallOrderService {
if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} else if(totalAmount > 0) {
orderPayResponse = getPreOrderPay(orderBean, paymentRequest, LogThreadLocal.getTrackingNo(), 0);
orderPayResponse = payServiceImpl.getPreOrderPay(orderBean, paymentRequest, 0,orderBean.getOid(),orderExtInfoDTO);
} else {
// 0元订单如果不需要支付,自定义支付单号
orderPayResponse = getOrderPayResponse(paymentRequest, orderBean);
......
......@@ -7,19 +7,16 @@ import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.SvcComPayRequestDto;
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.FacePayRequestDto;
import cn.freemud.entities.dto.order.UnifiedPayResponseDto;
import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto;
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.CreateOrderVo;
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.PlugInParameter;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request;
......@@ -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.response.orderInfo.OrderPayItemResp;
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.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.PaymentQueryResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.util.ResponseUtils;
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.MultiOrderRefundRequest;
......@@ -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.payment.CombPayRequest;
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.response.OrderRefundResponse;
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 org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
......@@ -92,10 +93,6 @@ import java.util.stream.Collectors;
public class PayServiceImpl {
@Autowired
private StandardPaymentService standardPaymentService;
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private SvcAppClient svcAppClient;
@Autowired
private ComPayClient comPayClient;
......@@ -117,6 +114,10 @@ public class PayServiceImpl {
@Autowired
private AssortmentOpenPlatformPartnerPaymentConfigManager openPlatformPartnerPaymentConfigManager;
@Autowired
private AssortmentOpenPlatformPartnerMerchantManager openPlatformPartnerMerchantManager;
@Autowired
private OrderQueueService orderQueueService;
@Autowired
private OrderSdkService orderSdkService;
......@@ -172,8 +173,8 @@ public class PayServiceImpl {
// orderPayResponse = facePay(createPrepayRequestDto.getFaceCode(), createPrepayRequestDto.getProductOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo());
} else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
//现金线上支付
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime, createPrepayRequestDto.getOrderExtInfoDTO());
// String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, createPrepayRequestDto.getCardAmount(), transId, createPrepayRequestDto.getOrderExtInfoDTO());
} else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) {
//混合支付+svc卡(礼品卡)
orderPayResponse = switchSvcOrComb(totalAmount, cardCode, createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, createPrepayRequestDto.getChannel(), createPrepayRequestDto.getStoreId(), LogThreadLocal.getTrackingNo());
......@@ -235,7 +236,6 @@ public class PayServiceImpl {
}
/**
* 创建预支付信息 (围餐用)
* cardCode svc卡号
......@@ -250,19 +250,16 @@ public class PayServiceImpl {
paymentRequest.setWxAppId(wxAppId);
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(partnerId, wxAppId);
paymentRequest.setPrincipalName(wxApp.getPrincipalName());
// fisherman 2227 测试商户号, 下个版本需要删除
// if ("2080".equals(partnerId)) {
// //【ID1035981】【蜜雪冰城】订单C端,拼接order_body字段:蜜雪冰城+门店编号
// paymentRequest.setPrincipalName("蜜雪冰城" + orderBean.getShopId() + "店");
// }
paymentRequest.setReverseNotifyiDcUrl(reverseNotifyiDcUrl);
//修改订单信息
OrderExtInfoDto orderExtInfoDto = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class) == null ? new OrderExtInfoDto() : JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
if (orderBean.getAmount() > 0 && StringUtils.isEmpty(cardCode)) {
try {
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())
|| SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.DEV.getProfile())
|| SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.TEST.getProfile())) {
......@@ -270,15 +267,78 @@ public class PayServiceImpl {
}
AppLogUtil.infoLog("支付transId :{},payRequest:{}", request.getTransId(), JSON.toJSONString(request));
redisService.savePaymentTransIdOrder(RedisUtil.getPaymentTransIdOrderKey(transId), orderBean.getOid(), 1L, TimeUnit.DAYS);
com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, LogThreadLocal.getTrackingNo());
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
return null;
// com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, LogThreadLocal.getTrackingNo());
//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.setPartnerId(orderBean.getCompanyId());
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());
} catch (Exception e) {
......@@ -410,13 +470,13 @@ public class PayServiceImpl {
* 电子风味卡支付
* 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();
if (Objects.isNull(unionPayCard) || StringUtils.isBlank(unionPayCard.getCode()) || StringUtils.isBlank(unionPayCard.getPassword())) {
orderPayResponse.setMsg("电子风味卡信息缺失");
return orderPayResponse;
}
CodePayRequest request = new CodePayRequest();
FacePayRequestDto request = new FacePayRequestDto();
String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName());
request.setBusinessDate(DateTimeFormatter.ofPattern(DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).format(LocalDateTime.now()));
......@@ -433,15 +493,15 @@ public class PayServiceImpl {
request.setOperatorId("2");
request.setVer("2");
request.setMerchantDiscount(orderBean.getOriginalAmount().longValue() - orderBean.getAmount());
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) {
com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> responseBase = paymentNewClient.codePay(request);
if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData() == null) {
// 需要把2种特殊情况抛给用户
if (Objects.nonNull(responseBase) && (ResponseCodeConstant.PASSWORD_WRONG.equals(responseBase.getCode()) || ResponseCodeConstant.NOT_SUFFICIENT_FUND.equals(responseBase.getCode()))) {
orderPayResponse.setPayTransId(responseBase.getCode());
}
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "电子风味卡支付异常" : responseBase.getMessage());
} else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
UnifiedPayResponseDto codePayResponse = responseBase.getData();
orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
......@@ -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))
.orElseGet(() -> {
AssortmentOpenPlatformPartnerConfig config = new AssortmentOpenPlatformPartnerConfig();
......@@ -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;
UnifiedOrderCom com = new UnifiedOrderCom(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId, partnerPayOvertime);
......@@ -496,7 +558,7 @@ public class PayServiceImpl {
requestDto.setStationId(orderExtInfoDto.getStationId());
}
//使用支付FeignClient
if(usePayFeignClient){
// if (usePayFeignClient) {
orderPayResponse = new OrderPayResponse();
String clientCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), orderBean.getShopId());
if (StringUtils.isBlank(clientCode)) {
......@@ -510,17 +572,17 @@ public class PayServiceImpl {
try {
response = paymentNewClient.unifiedOrder(requestDto);
} 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())
|| !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, response.getData().getResultCode()) ) {
|| !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, response.getData().getResultCode())) {
String errorMessage = "unified fail";
if(null != response){
if (null != response) {
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);
}
//预支付失败需要把原因进行记录
......@@ -528,7 +590,7 @@ public class PayServiceImpl {
return orderPayResponse;
}
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.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
......@@ -541,37 +603,37 @@ public class PayServiceImpl {
orderPayResponse.setPayChannelType(PayChannelType.TIKTOKPAY);
}
return orderPayResponse;
}
com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo);
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
// 1.9.34 预支付失败需要把原因进行记录
orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg(responseBase.getMessage());
} else {
putDelMq(request.getPartnerId(), request.getStoreId(), responseBase.getData().getFmId(), orderBean.getOid(), null);
orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
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);
}
}
return orderPayResponse;
// }
// com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo);
// if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
// // 1.9.34 预支付失败需要把原因进行记录
// orderPayResponse = new OrderPayResponse();
// orderPayResponse.setMsg(responseBase.getMessage());
// } else {
// putDelMq(request.getPartnerId(), request.getStoreId(), responseBase.getData().getFmId(), orderBean.getOid(), null);
// orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData());
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// 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);
// }
//
// }
// return orderPayResponse;
}
/**
* 混合支付
*/
private OrderPayResponse switchSvcOrComb(Long totalAmount
public OrderPayResponse switchSvcOrComb(Long totalAmount
, String cardCode
, OrderBeanV1 orderBean
, PaymentRequest paymentRequest
......@@ -745,14 +807,15 @@ public class PayServiceImpl {
* 唤起预支付
*/
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) {
return standardPaymentService.orderRefund(orderPayRefundRequest, LogThreadLocal.getTrackingNo());
return orderRefundNew(orderPayRefundRequest);
}
/**
......@@ -776,7 +839,7 @@ public class PayServiceImpl {
public boolean closePrePay(OrderBeanV1 orderBean) {
//是否支付成功
boolean paySuccess = false;
if(!queryPayOrder){
if (!queryPayOrder) {
return paySuccess;
}
OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
......@@ -809,12 +872,12 @@ public class PayServiceImpl {
if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) {
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest();
PaymentQueryRequestDto paymentQueryRequest = new PaymentQueryRequestDto();
paymentQueryRequest.setPartnerId(orderBean.getCompanyId());
paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId());
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())) {
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
......@@ -832,7 +895,7 @@ public class PayServiceImpl {
closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
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())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
}
......@@ -850,12 +913,12 @@ public class PayServiceImpl {
if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) {
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest();
PaymentQueryRequestDto paymentQueryRequest = new PaymentQueryRequestDto();
paymentQueryRequest.setPartnerId(orderBean.getCompanyId());
paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId());
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())) {
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
......@@ -871,7 +934,7 @@ public class PayServiceImpl {
closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
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())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
}
......@@ -1107,7 +1170,7 @@ public class PayServiceImpl {
/**
* 获取门店支付信息
*
* <p>
* aggregationType 6-会员、7-微商城、8-一键购买 9:积分商城
*/
public AssortmentOpenPlatformIappWxappStore getIappWxappStoreInfo(String wxAppId, String aggregationType) {
......@@ -1116,14 +1179,13 @@ public class PayServiceImpl {
}
public UnifiedOrderRequestDto convert2UnifiedOrderRequestDto(UnifiedOrderCom com) {
OrderBeanV1 orderBean = com.getOrderBean();
PaymentRequest paymentRequest =com.getPaymentRequest();
PaymentRequest paymentRequest = com.getPaymentRequest();
Long amount = com.getAmount();
Integer cardAmount = com.getCardAmount();
String transId =com.getTransId();
String transId = com.getTransId();
String partnerPayOvertime = com.getPartnerPayOvertime();
UnifiedOrderRequestDto orderPayDto = new UnifiedOrderRequestDto();
......@@ -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.setFmId(response.getFmId());
createOrderResponseVo.setEndTransId(response.getEndTransId());
......@@ -1189,14 +1251,216 @@ public class PayServiceImpl {
}
//1元捐插件需要参数
public PlugInParameter getPaymentAuth(String partnerId,String appId) {
public PlugInParameter getPaymentAuth(String partnerId, String appId) {
PlugInParameter plugInParameter = new PlugInParameter();
List<AssortmentOpenPlatformPartnerPaymentConfig> openPlatformPartnerPaymentAuths = openPlatformPartnerPaymentConfigManager.queryPartnerPaymentConfigs(partnerId,appId);
if(CollectionUtils.isNotEmpty(openPlatformPartnerPaymentAuths)){
List<AssortmentOpenPlatformPartnerPaymentConfig> openPlatformPartnerPaymentAuths = openPlatformPartnerPaymentConfigManager.queryPartnerPaymentConfigs(partnerId, appId);
if (CollectionUtils.isNotEmpty(openPlatformPartnerPaymentAuths)) {
plugInParameter.setMchCode(openPlatformPartnerPaymentAuths.get(0).getUnitMchId());
plugInParameter.setSubMchCode(openPlatformPartnerPaymentAuths.get(0).getSubMchid());
}
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;
import cn.freemud.entities.dto.order.FacePayRequestDto;
import cn.freemud.entities.dto.order.UnifiedPayResponseDto;
import cn.freemud.entities.dto.order.InvoiceCreateResponse;
import cn.freemud.entities.dto.pay.InvoiceCreateRequest;
import cn.freemud.entities.dto.pay.UnifiedOrderRequestDto;
import cn.freemud.entities.dto.pay.*;
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.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -64,4 +65,20 @@ public interface PaymentNewClient {
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;
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.pay.CombPayResponse;
import cn.freemud.entities.dto.pay.OrderPayResponse;
import cn.freemud.entities.dto.pay.PaymentMqMessageDto;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.CreateOrderUnionPayCardVo;
import cn.freemud.enums.*;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderResponseVo;
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.redis.RedisCache;
import cn.freemud.service.CheckOrderUniversal;
......@@ -33,7 +37,6 @@ import cn.freemud.service.thirdparty.ComPayClient;
import cn.freemud.service.thirdparty.SvcComPayClient;
import cn.freemud.service.universal.factory.CreateOrderServiceFactory;
import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil;
import cn.freemud.utils.ValidationCode;
import com.alibaba.fastjson.JSON;
......@@ -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.OrderTaskReq;
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.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.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService;
......@@ -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.StockChangeType;
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.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.payment.request.UnifiedOrderRequest;
import com.freemud.sdk.api.assortment.payment.response.UnifiedOrderResponse;
......@@ -100,16 +95,14 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
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_STR;
//import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
/**
* 订单服务
*
......@@ -134,8 +127,6 @@ public abstract class UniversalOrderService {
@Autowired
private AssortmentOpenPlatformPartnerConfigManager openPlatformPartnerConfigManager;
@Autowired
private PaymentNewService paymentNewService;
@Autowired
protected PayServiceImpl payService;
@Autowired
private PaymentQueueService paymentQueueService;
......@@ -707,14 +698,15 @@ public abstract class UniversalOrderService {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} 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)) {
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime, createPrepayRequestDto.getOrderExtInfoDTO());
// String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
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卡
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 {
// 0元订单如果不需要支付,自定义支付单号
orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean());
......@@ -864,74 +856,74 @@ public abstract class UniversalOrderService {
return orderPayResponse;
}
private OrderPayResponse switchSvcOrComb(Long totalAmount
, String cardCode
, OrderBeanV1 orderBean
, PaymentRequest paymentRequest
, String transId
, String channel
, String storeId
, String trackingNo) {
OrderPayResponse orderPayResponse = new OrderPayResponse();
boolean check = this.checkSvcComPay(orderBean.getCompanyId(), orderBean.getShopId());
//混合支付
if (check && StringUtils.isNotBlank(channel)) {
String partnerPayOvertime = this.getPartnerPayOvertime(orderBean.getCompanyId());
orderPayResponse = comPayOrder(cardCode, orderBean, paymentRequest, partnerPayOvertime, totalAmount.intValue(), channel, storeId, LogThreadLocal.getTrackingNo());
} else {//svc 支付
orderPayResponse = svcPay(cardCode, orderBean, paymentRequest, transId, trackingNo);
}
return orderPayResponse;
}
// private OrderPayResponse switchSvcOrComb(Long totalAmount
// , String cardCode
// , OrderBeanV1 orderBean
// , PaymentRequest paymentRequest
// , String transId
// , String channel
// , String storeId
// , String trackingNo) {
//
// OrderPayResponse orderPayResponse = new OrderPayResponse();
// boolean check = this.checkSvcComPay(orderBean.getCompanyId(), orderBean.getShopId());
// //混合支付
// if (check && StringUtils.isNotBlank(channel)) {
// String partnerPayOvertime = this.getPartnerPayOvertime(orderBean.getCompanyId());
// orderPayResponse = comPayOrder(cardCode, orderBean, paymentRequest, partnerPayOvertime, totalAmount.intValue(), channel, storeId, LogThreadLocal.getTrackingNo());
// } else {//svc 支付
// orderPayResponse = svcPay(cardCode, orderBean, paymentRequest, transId, trackingNo);
// }
// return orderPayResponse;
// }
public OrderPayResponse svcPay(String cardCode, OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) {
CodePayRequest request = new CodePayRequest();
OrderPayResponse orderPayResponse = new OrderPayResponse();
String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName());
request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
request.setCode(cardCode);
request.setPartnerId(partnerId);
request.setStoreId(orderBean.getShopId());
request.setAmount(orderBean.getAmount());
request.setTransId(transId);
request.setStationId("1");
request.setOperatorId("1");
request.setVer("2");
SVCCardAmountRequest svcRequest = new SVCCardAmountRequest();
svcRequest.setPartnerId(partnerId);
svcRequest.setCardCodes(Arrays.asList(cardCode));
//查询svc卡余额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo);
if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode())
|| svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) {
orderPayResponse.setMsg(Objects.isNull(svcCardAmountResponseBaseResponse) ? "获取svc卡余额异常" : svcCardAmountResponseBaseResponse.getMessage());
return orderPayResponse;
}
Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount();
if (amount + vamount < orderBean.getAmount()) {
orderPayResponse.setMsg("svc卡余额不足");
return orderPayResponse;
}
//svc卡支付
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo);
if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
// 1.9.34 预支付失败需要把原因进行记录
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "svc卡支付异常" : responseBase.getMessage());
} else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(PayChannelType.SVC);
}
return orderPayResponse;
}
// public OrderPayResponse svcPay(String cardCode, OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) {
// CodePayRequest request = new CodePayRequest();
// OrderPayResponse orderPayResponse = new OrderPayResponse();
// String partnerId = orderBean.getCompanyId();
// request.setBody(orderBean.getShopName());
// request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
// request.setCode(cardCode);
// request.setPartnerId(partnerId);
// request.setStoreId(orderBean.getShopId());
// request.setAmount(orderBean.getAmount());
// request.setTransId(transId);
// request.setStationId("1");
// request.setOperatorId("1");
// request.setVer("2");
// SVCCardAmountRequest svcRequest = new SVCCardAmountRequest();
// svcRequest.setPartnerId(partnerId);
// svcRequest.setCardCodes(Arrays.asList(cardCode));
// //查询svc卡余额
// com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo);
// if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode())
// || svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) {
// orderPayResponse.setMsg(Objects.isNull(svcCardAmountResponseBaseResponse) ? "获取svc卡余额异常" : svcCardAmountResponseBaseResponse.getMessage());
// return orderPayResponse;
// }
// Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount();
// Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount();
// if (amount + vamount < orderBean.getAmount()) {
// orderPayResponse.setMsg("svc卡余额不足");
// return orderPayResponse;
// }
// //svc卡支付
// com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo);
// if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
// // 1.9.34 预支付失败需要把原因进行记录
// orderPayResponse.setMsg(Objects.isNull(responseBase) ? "svc卡支付异常" : responseBase.getMessage());
// } else {
// CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
// orderPayResponse.setFmId(codePayResponse.getFmId());
// orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// orderPayResponse.setOrderId(orderBean.getOid());
// orderPayResponse.setPayChannelType(PayChannelType.SVC);
// }
// return orderPayResponse;
// }
/**
* 创建混合支付
......@@ -945,99 +937,99 @@ public abstract class UniversalOrderService {
* @param trackingNo
* @return
*/
public OrderPayResponse comPayOrder(String cardNo
, OrderBeanV1 orderBean
, PaymentRequest paymentRequest
, String partnerPayOvertime
, Integer totalAmount
, String channel
, String storeId
, String trackingNo) {
String ebCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), channel, storeId);
OrderPayResponse orderPayResponse = new OrderPayResponse();
;
if (StringUtils.isBlank(ebCode)) {
orderPayResponse.setMsg("请先联系相关人员配置商户对应的支付渠道");
return orderPayResponse;
}
CombPayRequest combPayRequest = createOrderAdapter.convent2CombPayOrderRequest(cardNo, orderBean, paymentRequest, partnerPayOvertime, ebCode, channel, totalAmount);
//todo :xxxooooo xxxoooxox
CombPayResponse combPayResponse = null;
int i = 1;
do {
try {
combPayResponse = comPayClient.combPay(combPayRequest, combPayRequest.getPartner_id());
if (combPayResponse != null) {
break;
}
} catch (Exception exception) {
}
i++;
} while (i < 4);
if (combPayResponse == null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) {
orderPayResponse.setMsg(combPayResponse != null ? "支付:" + combPayResponse.getMsg() : "混合支付忙不过来啦,请稍后再试");
return orderPayResponse;
}
Integer svcAmount = 0;
Integer svcVAmount = 0;
List<CombPayResponse.PayPlatform> payPlatforms = combPayResponse.getData().getPayPlatformResponseList();
if (payPlatforms.size() == 0) {
orderPayResponse.setMsg("混合支付:生成预支付失败");
return orderPayResponse;
}
//生成预支付参数
CombPayResponse.PayPlatform cashPay = payPlatforms
.stream()
.filter(f -> !PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
.orElse(null);
//现金+svc 现金
if (payPlatforms.size() == 2 || (payPlatforms.size() == 1 && cashPay != null)) {
orderPayResponse = createOrderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(), orderBean.getCompanyId(), storeId);
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(orderPayResponse.getPayChannelType());
//隐射关系
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());
return orderPayResponse;
}
//单svc
else {
CombPayResponse.PayPlatform svcPay = payPlatforms
.stream()
.filter(f -> PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
.orElse(null);
orderPayResponse.setFmId(svcPay.getTransId());
orderPayResponse.setPayTransId(svcPay.getTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(PayChannelType.SVC);
for (CombPayResponse.PayPlatform pt : payPlatforms) {
OrderPayItemResp payItem = new OrderPayItemResp();
payItem.setFmTradeNo(pt.getFmTradeNo());
payItem.setStoreId(storeId);
payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue());
payItem.setPayChannelName(PayChannelType.getByEbcode(pt.getEbCode()).getName());
payItem.setTransId(pt.getTransId());
payItem.setPartnerId(combPayRequest.getPartner_id());
payItem.setPayAmount(new BigDecimal(pt.getPayAmount()));
orderPayResponse.getPayItem().add(payItem);
}
}
return orderPayResponse;
}
// public OrderPayResponse comPayOrder(String cardNo
// , OrderBeanV1 orderBean
// , PaymentRequest paymentRequest
// , String partnerPayOvertime
// , Integer totalAmount
// , String channel
// , String storeId
// , String trackingNo) {
//
// String ebCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), channel, storeId);
// OrderPayResponse orderPayResponse = new OrderPayResponse();
// ;
// if (StringUtils.isBlank(ebCode)) {
// orderPayResponse.setMsg("请先联系相关人员配置商户对应的支付渠道");
// return orderPayResponse;
// }
//
// CombPayRequest combPayRequest = createOrderAdapter.convent2CombPayOrderRequest(cardNo, orderBean, paymentRequest, partnerPayOvertime, ebCode, channel, totalAmount);
// //todo :xxxooooo xxxoooxox
// CombPayResponse combPayResponse = null;
// int i = 1;
// do {
// try {
// combPayResponse = comPayClient.combPay(combPayRequest, combPayRequest.getPartner_id());
// if (combPayResponse != null) {
// break;
// }
// } catch (Exception exception) {
// }
// i++;
// } while (i < 4);
//
// if (combPayResponse == null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) {
// orderPayResponse.setMsg(combPayResponse != null ? "支付:" + combPayResponse.getMsg() : "混合支付忙不过来啦,请稍后再试");
// return orderPayResponse;
// }
// Integer svcAmount = 0;
// Integer svcVAmount = 0;
// List<CombPayResponse.PayPlatform> payPlatforms = combPayResponse.getData().getPayPlatformResponseList();
// if (payPlatforms.size() == 0) {
// orderPayResponse.setMsg("混合支付:生成预支付失败");
// return orderPayResponse;
// }
// //生成预支付参数
// CombPayResponse.PayPlatform cashPay = payPlatforms
// .stream()
// .filter(f -> !PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
// .orElse(null);
//
// //现金+svc 现金
// if (payPlatforms.size() == 2 || (payPlatforms.size() == 1 && cashPay != null)) {
// orderPayResponse = createOrderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(), orderBean.getCompanyId(), storeId);
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// orderPayResponse.setOrderId(orderBean.getOid());
// orderPayResponse.setPayChannelType(orderPayResponse.getPayChannelType());
// //隐射关系
// 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());
// return orderPayResponse;
// }
// //单svc
// else {
// CombPayResponse.PayPlatform svcPay = payPlatforms
// .stream()
// .filter(f -> PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
// .orElse(null);
// orderPayResponse.setFmId(svcPay.getTransId());
// orderPayResponse.setPayTransId(svcPay.getTransId());
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// orderPayResponse.setOrderId(orderBean.getOid());
// orderPayResponse.setPayChannelType(PayChannelType.SVC);
// for (CombPayResponse.PayPlatform pt : payPlatforms) {
// OrderPayItemResp payItem = new OrderPayItemResp();
// payItem.setFmTradeNo(pt.getFmTradeNo());
// payItem.setStoreId(storeId);
// payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue());
// payItem.setPayChannelName(PayChannelType.getByEbcode(pt.getEbCode()).getName());
// payItem.setTransId(pt.getTransId());
// payItem.setPartnerId(combPayRequest.getPartner_id());
// payItem.setPayAmount(new BigDecimal(pt.getPayAmount()));
// orderPayResponse.getPayItem().add(payItem);
// }
// }
//
// return orderPayResponse;
//
//
// }
/**
* 通过payCode ->clientCode
......@@ -1201,47 +1193,47 @@ public abstract class UniversalOrderService {
* @param unionPayCard
* @return
*/
private OrderPayResponse uSvcPay(OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo, CreateOrderUnionPayCardVo unionPayCard) {
OrderPayResponse orderPayResponse = new OrderPayResponse();
if (Objects.isNull(unionPayCard) || StringUtils.isBlank(unionPayCard.getCode()) || StringUtils.isBlank(unionPayCard.getPassword())) {
orderPayResponse.setMsg("电子风味卡信息缺失");
return orderPayResponse;
}
CodePayRequest request = new CodePayRequest();
String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName());
request.setBusinessDate(DateTimeFormatter.ofPattern(DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).format(LocalDateTime.now()));
// paymentRequest 的 payCode可能为null,不保险
request.setPayCode(PayChannel.USVCP.getCode());
// 电子风味卡信息
request.setCode(unionPayCard.getCode());
request.setCardPassword(unionPayCard.getPassword());
request.setPartnerId(partnerId);
request.setStoreId(orderBean.getShopId());
request.setAmount(orderBean.getAmount());
request.setTransId(transId);
request.setStationId("2");
request.setOperatorId("2");
request.setVer("2");
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) {
// 需要把2种特殊情况抛给用户
if (Objects.nonNull(responseBase) && (ResponseCodeConstant.PASSWORD_WRONG.equals(responseBase.getCode()) || ResponseCodeConstant.NOT_SUFFICIENT_FUND.equals(responseBase.getCode()))) {
orderPayResponse.setPayTransId(responseBase.getCode());
}
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "电子风味卡支付异常" : responseBase.getMessage());
} else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(PayChannelType.USVCP);
}
return orderPayResponse;
}
// private OrderPayResponse uSvcPay(OrderBeanV1 orderBean, PaymentRequest paymentRequest, String transId, String trackingNo, CreateOrderUnionPayCardVo unionPayCard) {
// OrderPayResponse orderPayResponse = new OrderPayResponse();
// if (Objects.isNull(unionPayCard) || StringUtils.isBlank(unionPayCard.getCode()) || StringUtils.isBlank(unionPayCard.getPassword())) {
// orderPayResponse.setMsg("电子风味卡信息缺失");
// return orderPayResponse;
// }
// CodePayRequest request = new CodePayRequest();
// String partnerId = orderBean.getCompanyId();
// request.setBody(orderBean.getShopName());
// request.setBusinessDate(DateTimeFormatter.ofPattern(DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).format(LocalDateTime.now()));
// // paymentRequest 的 payCode可能为null,不保险
// request.setPayCode(PayChannel.USVCP.getCode());
// // 电子风味卡信息
// request.setCode(unionPayCard.getCode());
// request.setCardPassword(unionPayCard.getPassword());
// request.setPartnerId(partnerId);
// request.setStoreId(orderBean.getShopId());
// request.setAmount(orderBean.getAmount());
// request.setTransId(transId);
// request.setStationId("2");
// request.setOperatorId("2");
// request.setVer("2");
// 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) {
// // 需要把2种特殊情况抛给用户
// if (Objects.nonNull(responseBase) && (ResponseCodeConstant.PASSWORD_WRONG.equals(responseBase.getCode()) || ResponseCodeConstant.NOT_SUFFICIENT_FUND.equals(responseBase.getCode()))) {
// orderPayResponse.setPayTransId(responseBase.getCode());
// }
// orderPayResponse.setMsg(Objects.isNull(responseBase) ? "电子风味卡支付异常" : responseBase.getMessage());
// } else {
// CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
// orderPayResponse.setFmId(codePayResponse.getFmId());
// orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// orderPayResponse.setOrderId(orderBean.getOid());
// orderPayResponse.setPayChannelType(PayChannelType.USVCP);
// }
// return orderPayResponse;
// }
/**
* 获取商户支付超时时间
......
......@@ -252,7 +252,8 @@ public class SaasMallOrderService extends UniversalOrderService {
if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} 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 {
// 0元订单如果不需要支付,自定义支付单号
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