Commit 8875579c by xiaoer.li@freemud.com

调整混合支付流程

parent 56bd8f8e
...@@ -262,7 +262,6 @@ public class OrderSdkAdapter { ...@@ -262,7 +262,6 @@ public class OrderSdkAdapter {
//订单重量 //订单重量
Double orderWeight = sumOrderWeight(requestVO.getProducts()); Double orderWeight = sumOrderWeight(requestVO.getProducts());
request.setWeight(orderWeight); request.setWeight(orderWeight);
request.setOrderPayItemCreateReqList(requestVO.getOrderPayItemCreateReqList());
return request; return request;
} }
......
...@@ -166,7 +166,6 @@ public class BaseCreateOrderRequest extends BaseConfig { ...@@ -166,7 +166,6 @@ public class BaseCreateOrderRequest extends BaseConfig {
* 收货地址Id * 收货地址Id
*/ */
private String receiveId; private String receiveId;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
@Data @Data
public static class DeliveryTypeInfo { public static class DeliveryTypeInfo {
/** /**
......
...@@ -303,8 +303,6 @@ public class OrderAdapter { ...@@ -303,8 +303,6 @@ public class OrderAdapter {
createOrderDto.setActivityUpdateStockRequest(activityUpdateStockRequest); createOrderDto.setActivityUpdateStockRequest(activityUpdateStockRequest);
} }
createOrderDto.setPayChannelType(createOrderVo.getPayChannelType()); createOrderDto.setPayChannelType(createOrderVo.getPayChannelType());
createOrderDto.setOrderPayItemCreateReqList(createOrderVo.getOrderPayItemCreateReqList());
// createOrderDto.setOtherInfo(getOrderOtherInfo(shoppingCartGoodsDto));
return createOrderDto; return createOrderDto;
} }
...@@ -3361,9 +3359,8 @@ public class OrderAdapter { ...@@ -3361,9 +3359,8 @@ public class OrderAdapter {
, null , null
, createOrderVo.getUnionPayCard() , createOrderVo.getUnionPayCard()
, createOrderVo.getShopId() , createOrderVo.getShopId()
, createOrderVo.getOrderPayItemCreateReqList() , createOrderVo.getChannel()
, createOrderVo.getCashAmount() );
, createOrderVo.getSvcAmount());
} }
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId
, String wxAppId, String openId , String wxAppId, String openId
...@@ -3375,13 +3372,11 @@ public class OrderAdapter { ...@@ -3375,13 +3372,11 @@ public class OrderAdapter {
, long totalAmount , long totalAmount
, int cardAmount , int cardAmount
, OrderExtInfoDto orderExtInfoDTO , OrderExtInfoDto orderExtInfoDTO
,String transId , String transId
, OrderClientType orderClient , OrderClientType orderClient
, CreateOrderVo.UnionPayCard unionPayCard , CreateOrderVo.UnionPayCard unionPayCard
, String storeId , String storeId
, List<OrderPayItemCreateReq> payItem , String channel){
, BigDecimal cashAmount
, BigDecimal svcAmount){
CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto(); CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto();
requestDto.setPartnerId(partnerId); requestDto.setPartnerId(partnerId);
requestDto.setWxAppId(wxAppId); requestDto.setWxAppId(wxAppId);
...@@ -3398,9 +3393,7 @@ public class OrderAdapter { ...@@ -3398,9 +3393,7 @@ public class OrderAdapter {
requestDto.setOrderClient(orderClient); requestDto.setOrderClient(orderClient);
requestDto.setUnionPayCard(unionPayCard); requestDto.setUnionPayCard(unionPayCard);
requestDto.setStoreId(storeId); requestDto.setStoreId(storeId);
requestDto.setOrderPayItemCreateReqList(payItem); requestDto.setChannel(channel);
requestDto.setCashAmount(cashAmount);
requestDto.setSvcAmount(svcAmount);
return requestDto; return requestDto;
} }
...@@ -3505,62 +3498,33 @@ public class OrderAdapter { ...@@ -3505,62 +3498,33 @@ public class OrderAdapter {
return deleteOrderDto; return deleteOrderDto;
} }
/** public CombPayRequest convent2CombPayOrderRequest(String cardNo
* svc卡支付+现金支付 , QueryOrdersResponse.DataBean.OrderBean orderBean
* @param cashAmount , PaymentRequest paymentRequest
* @param svcAmount , String partnerPayOvertime
* @param payChannelType , String orderClient
* @return , String channel
*/ , Integer totalAmount
public List<OrderPayItemCreateReq> setOrderPayItem(BigDecimal cashAmount,BigDecimal svcAmount, Byte payChannelType){ , Integer svcAmount
List<OrderPayItemCreateReq> orderPayItemCreateReqs = new ArrayList<>(0); , Integer svcVAmount) {
OrderPayItemCreateReq orderPayItemCreateReqSvc = new OrderPayItemCreateReq();
//svc卡
orderPayItemCreateReqSvc.setPayAmount(svcAmount);
orderPayItemCreateReqSvc.setPayChannelType(PayChannelType.SVC.getIndex().intValue());
orderPayItemCreateReqSvc.setPayChannelName(PayChannelType.SVC.getName());
orderPayItemCreateReqSvc.setPayEbCode(PayChannelType.SVC.getEbcode());
orderPayItemCreateReqs.add(orderPayItemCreateReqSvc);
//现金支付
OrderPayItemCreateReq orderPayItemCreateReqOther = new OrderPayItemCreateReq();
orderPayItemCreateReqOther.setPayAmount(cashAmount);
orderPayItemCreateReqOther.setPayChannelType(PayChannelType.getByIndex(payChannelType).getIndex().intValue());
orderPayItemCreateReqOther.setPayChannelName(PayChannelType.getByIndex(payChannelType).getName());
orderPayItemCreateReqOther.setPayEbCode(PayChannelType.getByIndex(payChannelType).getEbcode());
orderPayItemCreateReqs.add(orderPayItemCreateReqOther);
return orderPayItemCreateReqs;
}
/**
* 混合支付预支付信息转换
* @param paymentRequest
* @param createPrepayRequestDto
* @param partnerPayOvertime
* @return
*/
public CombPayRequest convent2CombPayOrderRequest(PaymentRequest paymentRequest
, CreatePrepayRequestDto createPrepayRequestDto
, String partnerPayOvertime,String orderClient) {
CombPayRequest orderPayDto = new CombPayRequest(); CombPayRequest orderPayDto = new CombPayRequest();
orderPayDto.setEbCode(paymentRequest.getPayCode()); orderPayDto.setEbCode(paymentRequest.getPayCode());
orderPayDto.setPartner_id(createPrepayRequestDto.getPartnerId()); orderPayDto.setPartner_id(orderBean.getCompanyId());
orderPayDto.setBody(paymentRequest.getPrincipalName()); orderPayDto.setBody(paymentRequest.getPrincipalName());
orderPayDto.setNotify_url(paymentRequest.getReverseNotifyiDcUrl()); orderPayDto.setNotify_url(paymentRequest.getReverseNotifyiDcUrl());
orderPayDto.setStore_id(createPrepayRequestDto.getStoreId()); orderPayDto.setStore_id(orderBean.getShopId());
orderPayDto.setOpen_id(paymentRequest.getOpenId()); orderPayDto.setOpen_id(paymentRequest.getOpenId());
String businessDate = com.freemud.application.sdk.api.util.DateUtil.convert2String(new Date(), "yyyyMMdd"); String businessDate = com.freemud.application.sdk.api.util.DateUtil.convert2String(new Date(), "yyyyMMdd");
orderPayDto.setBusiness_date(businessDate); orderPayDto.setBusiness_date(businessDate);
orderPayDto.setAmount(createPrepayRequestDto.getTotalAmount()); orderPayDto.setAmount(totalAmount.longValue());
orderPayDto.setVip_amount(0L); orderPayDto.setVip_amount(0L);
orderPayDto.setAppId(paymentRequest.getWxAppId()); orderPayDto.setAppId(paymentRequest.getWxAppId());
orderPayDto.setPayCode(paymentRequest.getPayCode()); orderPayDto.setPayCode(paymentRequest.getPayCode());
orderPayDto.setVer("V1"); orderPayDto.setVer("V1");
orderPayDto.setPayTimeOutTime(StringUtils.defaultIfBlank(partnerPayOvertime, "30")); orderPayDto.setPayTimeOutTime(StringUtils.defaultIfBlank(partnerPayOvertime, "30"));
List<ProductVO> productVOS = new ArrayList<ProductVO>(); List<ProductVO> productVOS = new ArrayList<ProductVO>();
if (CollectionUtils.isNotEmpty(createPrepayRequestDto.getFatherOrderBean().getProductList())) { if (CollectionUtils.isNotEmpty(orderBean.getProductList())) {
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean product : createPrepayRequestDto.getFatherOrderBean().getProductList()) { for (QueryOrdersResponse.DataBean.OrderBean.ProductBean product : orderBean.getProductList()) {
ProductVO productBean = new ProductVO(); ProductVO productBean = new ProductVO();
productBean.setId(product.getProductId()); productBean.setId(product.getProductId());
productBean.setQuantity(product.getNumber()); productBean.setQuantity(product.getNumber());
...@@ -3573,29 +3537,26 @@ public class OrderAdapter { ...@@ -3573,29 +3537,26 @@ public class OrderAdapter {
} }
orderPayDto.setProducts(productVOS); orderPayDto.setProducts(productVOS);
List<PayPlatformVO> platforms = new ArrayList<>(); List<PayPlatformVO> platforms = new ArrayList<>();
if(null != createPrepayRequestDto.getOrderPayItemCreateReqList() && createPrepayRequestDto.getOrderPayItemCreateReqList().size()>0){ Long svc = svcAmount.longValue()+svcVAmount.longValue();
for (OrderPayItemCreateReq orderPayItemCreateReq : createPrepayRequestDto.getOrderPayItemCreateReqList()) {
PayPlatformVO payPlatformVO = new PayPlatformVO(); PayPlatformVO payPlatformVO = new PayPlatformVO();
payPlatformVO.setAmount(orderPayItemCreateReq.getPayAmount().longValue()); payPlatformVO.setClientCode(PayChannelType.SVC.getEbcode());
payPlatformVO.setEbcode(orderPayItemCreateReq.getPayEbCode()); payPlatformVO.setEbcode(PayChannelType.SVC.getEbcode());
if (orderPayItemCreateReq.getPayEbCode().equals(PayChannelType.SVC.getEbcode())) { payPlatformVO.setAmount(svc);
payPlatformVO.setClientCode(orderPayItemCreateReq.getPayEbCode()); platforms.add(payPlatformVO);
}
else if (orderPayItemCreateReq.getPayEbCode().equals(PayChannelType.WECHAT.getEbcode())) { String ebcode = PayChannelType.getByIndex(Byte.parseByte(channel)).getEbcode();
payPlatformVO.setClientCode(orderClient); payPlatformVO = new PayPlatformVO();
} payPlatformVO.setAmount(totalAmount.longValue() - svc);
else if (orderPayItemCreateReq.getPayEbCode().equals(PayChannelType.ALIPAY.getEbcode())) {
payPlatformVO.setClientCode(orderClient); payPlatformVO.setClientCode(orderClient);
} payPlatformVO.setEbcode(ebcode);
platforms.add(payPlatformVO); platforms.add(payPlatformVO);
}
}
orderPayDto.setPlatforms(platforms); orderPayDto.setPlatforms(platforms);
orderPayDto.setOut_order_no(createPrepayRequestDto.getFatherOrderBean().getOid()); orderPayDto.setOut_order_no(orderBean.getOid());
orderPayDto.setCardCode(createPrepayRequestDto.getCardCode()); orderPayDto.setCardCode(cardNo);
return orderPayDto; return orderPayDto;
}
}
/** /**
* 混合支付返回的支付参数 * 混合支付返回的支付参数
* @param payPlatforms * @param payPlatforms
...@@ -3630,6 +3591,7 @@ public class OrderAdapter { ...@@ -3630,6 +3591,7 @@ public class OrderAdapter {
PayItem payItem = new PayItem(); PayItem payItem = new PayItem();
payItem.setFmTradeNo(pt.getFmTradeNo()); payItem.setFmTradeNo(pt.getFmTradeNo());
payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue()); payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue());
//payItem.setPayChannelName(PayChannelType.getByEbcode(pt.getEbCode()).getName());
payItem.setTransId(pt.getTransId()); payItem.setTransId(pt.getTransId());
payItem.setPartnerId(partnerId); payItem.setPartnerId(partnerId);
responseDto.getPayItem().add(payItem); responseDto.getPayItem().add(payItem);
......
...@@ -71,15 +71,6 @@ public class CreatePrepayRequestDto { ...@@ -71,15 +71,6 @@ public class CreatePrepayRequestDto {
* 使用电子风味卡 * 使用电子风味卡
*/ */
private CreateOrderVo.UnionPayCard unionPayCard; private CreateOrderVo.UnionPayCard unionPayCard;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
/**
* svc支付金额
*/
private BigDecimal svcAmount;
/**
* 现金支付金额
*/
private BigDecimal cashAmount;
private String storeId; private String storeId;
private String channel;
} }
...@@ -249,19 +249,6 @@ public class CreateOrderVo { ...@@ -249,19 +249,6 @@ public class CreateOrderVo {
@Valid @Valid
@ApiModelProperty(value = "电子风味卡") @ApiModelProperty(value = "电子风味卡")
private UnionPayCard unionPayCard; private UnionPayCard unionPayCard;
/**
* 混合支付
*/
private List<OrderPayItemCreateReq> orderPayItemCreateReqList = new ArrayList<>();
/**
* svc支付金额
*/
private BigDecimal svcAmount;
/**
* 现金支付金额
*/
private BigDecimal cashAmount;
/** /**
* 电子风味卡 * 电子风味卡
*/ */
......
...@@ -750,47 +750,4 @@ public class CheckOrder { ...@@ -750,47 +750,4 @@ public class CheckOrder {
// throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS); // throw new ServiceException(ResponseResult.STORE_ITEM_STOP_BUSINESS);
// } // }
} }
/**
* 混合支付
* @param createOrderVo
* @param shoppingCartGoodsDto
* @param trackingNo
* @return
*/
public boolean checkSvcPay(CreateOrderVo createOrderVo,ShoppingCartGoodsDto shoppingCartGoodsDto,String trackingNo) {
if (StringUtils.isBlank(createOrderVo.getCardCode())) {
return false;
}
//这么不合规的粗暴搞法 设置支付方式
PayChannelType payType = PayChannelType.getByIndex(Byte.parseByte(createOrderVo.getChannel()));
createOrderVo.setPayChannelType(payType.getIndex());
SVCCardAmountRequest request = new SVCCardAmountRequest();
request.setPartnerId(createOrderVo.getPartnerId());
request.setCardCodes(Arrays.asList(createOrderVo.getCardCode()));
BaseResponse<SVCCardAmountResponse> svcCardAmount = paymentNewService.querySVCCardAmount(request, trackingNo);
if (svcCardAmount==null || svcCardAmount.getData()==null ||!ResponseResult.SUCCESS.getCode().equals(svcCardAmount.getCode())) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
Integer svcAmount = 0 ;
Integer svcVAmount = 0 ;
Long totalVAmount = shoppingCartGoodsDto.getTotalAmount() +shoppingCartGoodsDto.getPackageAmount();
if (svcCardAmount.getData().getData().getCardSimpleInfos().size()>0) {
svcAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getAmount();
svcVAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getVamount();
//todo : svc卡的金额小于订单金额
if(svcAmount + svcVAmount >0 && totalVAmount> svcAmount + svcVAmount){
BigDecimal total = new BigDecimal(totalVAmount);
BigDecimal svcAmounts = new BigDecimal(svcAmount + svcVAmount);
BigDecimal cashAmout = total.subtract(svcAmounts);
createOrderVo.setOrderPayItemCreateReqList(orderAdapter.setOrderPayItem(cashAmout,svcAmounts,Byte.parseByte(createOrderVo.getChannel())));
createOrderVo.setPayChannelType(PayChannelType.COMB.getIndex());
createOrderVo.setCashAmount(cashAmout);
createOrderVo.setSvcAmount(svcAmounts);
return true;
}
}
return false;
}
} }
...@@ -20,5 +20,10 @@ public class PayItem { ...@@ -20,5 +20,10 @@ public class PayItem {
private String partnerId; private String partnerId;
private String fmTradeNo; private String fmTradeNo;
private Integer payChannelType; private Integer payChannelType;
private Integer payChannelName;
private String transId; private String transId;
private String orderPayItemCode;
private String outOrderNo;
private String platformTradeNo;
private String endTransTradeNo;
} }
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