Commit 40e93653 by xiaoer.li@freemud.com

混合支付优化调整

parent 7b94a07b
......@@ -3493,8 +3493,7 @@ public class OrderAdapter {
, String partnerPayOvertime
, String orderClient
, String channel
, Integer totalAmount
, Integer svcAmount) {
, Integer totalAmount) {
CombPayRequest orderPayDto = new CombPayRequest();
orderPayDto.setEbCode(paymentRequest.getPayCode());
orderPayDto.setPartner_id(orderBean.getCompanyId());
......@@ -3525,16 +3524,15 @@ public class OrderAdapter {
}
orderPayDto.setProducts(productVOS);
List<PayPlatformVO> platforms = new ArrayList<>();
Long svc = svcAmount.longValue();
PayPlatformVO payPlatformVO = new PayPlatformVO();
payPlatformVO.setClientCode(PayChannelType.SVC.getEbcode());
payPlatformVO.setEbcode(PayChannelType.SVC.getEbcode());
payPlatformVO.setAmount(svc);
payPlatformVO.setAmount(0L);
platforms.add(payPlatformVO);
String ebcode = PayChannelType.getByIndex(Byte.parseByte(channel)).getEbcode();
payPlatformVO = new PayPlatformVO();
payPlatformVO.setAmount(totalAmount.longValue() - svc);
payPlatformVO.setAmount(0L);
payPlatformVO.setClientCode(orderClient);
payPlatformVO.setEbcode(ebcode);
platforms.add(payPlatformVO);
......@@ -3552,9 +3550,7 @@ public class OrderAdapter {
*/
public OrderPayResponse convent2OrderCombPayResponse(List<CombPayResponse.PayPlatform> payPlatforms
,String partnerId
,String storeId
,Integer totalAmount
,Integer svcAmount) {
,String storeId) {
CombPayResponse.PayPlatform payPlatform = payPlatforms
.stream()
.filter(f -> !PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
......@@ -3579,7 +3575,6 @@ public class OrderAdapter {
responseDto.setPayOrder(payBean);
}
//供修改订单
Integer cashAmount = totalAmount - svcAmount;
for (CombPayResponse.PayPlatform pt : payPlatforms) {
PayItem payItem = new PayItem();
payItem.setFmTradeNo(pt.getFmTradeNo());
......@@ -3588,14 +3583,19 @@ public class OrderAdapter {
payItem.setPayChannelName(PayChannelType.getByEbcode(pt.getEbCode()).getName());
payItem.setTransId(pt.getTransId());
payItem.setPartnerId(partnerId);
if (pt.getEbCode().equals(PayChannel.SVC.getCode())) {
payItem.setPayAmount(new BigDecimal(svcAmount));
if (PayChannelType.SVC.getEbcode().equals(pt.getEbCode())) {
payItem.setPayAmount(new BigDecimal(pt.getPayAccount()));
responseDto.setPayMode(PayChannelType.SVC.getEbcode());
}
else {
payItem.setPayAmount(new BigDecimal(cashAmount));
else if (PayChannelType.WECHAT.getEbcode().equals(pt.getEbCode()) || PayChannelType.ALIPAY.getEbcode().equals(pt.getEbCode())){
payItem.setPayAmount(new BigDecimal(pt.getPayAccount()));
responseDto.setPayMode(PayChannelType.getByEbcode(pt.getEbCode()).getEbcode());
}
responseDto.getPayItem().add(payItem);
}
if(responseDto.getPayItem().size()==2) {
responseDto.setPayMode(PayChannelType.COMB.getEbcode());
}
return responseDto;
}
}
......@@ -3,6 +3,7 @@ package cn.freemud.service.impl;
import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.AppCreateOrderVo;
......@@ -189,6 +190,10 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
return gson.toJson(message);
}
QueryOrdersResponseDto.DataBean.OrderBean orderBean = orderBeans.get(OrderBeanType.SAASORDER.getCode());
// 混合支付失败,取消订单
if (message.getResult_code().equals(ResponseCodeConstant.RESPONSE_SUCCESS)) {
return orderService.cannelComPayOrder(confirmOrderDto, orderBean);
}
if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())){
return orderAdapter.sendPaySuccessNoticeMessage();
}
......
......@@ -2311,7 +2311,9 @@ public class OrderServiceImpl implements Orderservice {
, String storeId
, String trackingNo) {
boolean tigger = false;
OrderPayResponse orderPayResponse = new OrderPayResponse();
/*
SVCCardAmountRequest svcRequest = new SVCCardAmountRequest();
svcRequest.setPartnerId(orderBean.getCompanyId());
svcRequest.setCardCodes(Arrays.asList(cardCode));
......@@ -2329,16 +2331,17 @@ public class OrderServiceImpl implements Orderservice {
// 校验金额
Integer svcAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getAmount() ;
Integer svcVAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getVamount() ;
boolean tigger = false;
//todo : svc卡的金额小于订单金额
if(svcAmount + svcVAmount >0 && totalAmount> svcAmount + svcVAmount){
tigger = true;
}
*/
tigger = true;
//混合支付
if (tigger && StringUtils.isNotBlank(channel)) {
log.info("混合支付:");
String partnerPayOvertime = this.getPartnerPayOvertime(orderBean.getCompanyId());
orderPayResponse = comPayOrder(cardCode,orderBean,paymentRequest,partnerPayOvertime,totalAmount.intValue(), svcAmount,svcVAmount,channel,storeId,LogThreadLocal.getTrackingNo());
orderPayResponse = comPayOrder(cardCode,orderBean,paymentRequest,partnerPayOvertime,totalAmount.intValue(),channel,storeId,LogThreadLocal.getTrackingNo());
}
//svc 支付
else {
......@@ -3203,8 +3206,6 @@ public class OrderServiceImpl implements Orderservice {
, PaymentRequest paymentRequest
, String partnerPayOvertime
, Integer totalAmount
, Integer svcAmount
, Integer svcVAmount
, String channel
, String storeId
, String trackingNo) {
......@@ -3216,23 +3217,38 @@ public class OrderServiceImpl implements Orderservice {
return orderPayResponse;
}
CombPayRequest combPayRequest = orderAdapter.convent2CombPayOrderRequest(cardNo, orderBean, paymentRequest, partnerPayOvertime, ebCode, channel, totalAmount, svcAmount+svcVAmount);
CombPayResponse combPayResponse = comPayClient.combPay(combPayRequest, combPayRequest.getPartner_id());
if (!ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())|| combPayResponse.getData().getPayPlatformResponseList().size()==0) {
CombPayRequest combPayRequest = orderAdapter.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 (ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) {
break;
}
} catch (Exception exception) {}
i++;
} while (i<4);
if (combPayResponse==null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) {
log.info("混合支付返回信息错误,trackingNo:{} request:{} response:{}",trackingNo, JSONObject.toJSONString(combPayRequest), JSONObject.toJSONString(combPayResponse));
orderPayResponse.setMsg(combPayResponse.getMsg());
return orderPayResponse;
}
Integer svcAmount = 0;
Integer svcVAmount = 0;
//生成预支付参数
CombPayResponse.PayPlatform payPlatform = combPayResponse.getData().getPayPlatformResponseList()
.stream()
.filter(f -> !PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
.orElse(null);
if(payPlatform==null) {
orderPayResponse.setMsg("支付:现金支付错误");
orderPayResponse.setMsg("混合支付:生成预支付失败");
return orderPayResponse;
}
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(),orderBean.getCompanyId(),storeId,totalAmount, svcAmount+svcVAmount);
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(),orderBean.getCompanyId(),storeId);
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
......@@ -3265,4 +3281,43 @@ public class OrderServiceImpl implements Orderservice {
}
return "";
}
public String cannelComPayOrder(ConfirmOrderDto confirmOrderDto, QueryOrdersResponseDto.DataBean.OrderBean orderBean) {
//失败冲正库存,冲正活动库存,取消订单
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(confirmOrderDto.getOrderId(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL,"混合支付SVC卡支付失败", LogTreadLocal.getTrackingNo(), null);
//BaseOrderResponse request = orderCenterSdkService.orderCancel(cancelOrderRequest);
BaseOrderResponse request = null;
int i = 1;
do {
try {
request = orderCenterSdkService.orderCancel(cancelOrderRequest);
if (ResponseCodeConstant.RESPONSE_SUCCESS.equals(request.getErrcode())) {
break;
}
} catch (Exception e) {}
i++;
}while (i<4);
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
if(ResponseCodeConstant.RESPONSE_SUCCESS.equals(request.getErrcode())) {
return this.newSendPayFaileMessage();
} else {
return this.newSendPaySuccessNoticeMessage();
}
}
/**
* 取消混合支付svc扣款失败的订单
* @param orderId
* @return
*/
//public String cannelComPayOrder(String orderId) {
// //失败冲正库存,冲正活动库存,取消订单
// CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderId, orderBean.getCompanyId(),
// AfterSalesType.SYSTEM_CANCEL, StringUtils.join(new String[]{"获取预支付失败", msg}, '-'), trackingNo, null);
// orderCenterSdkService.orderCancel(cancelOrderRequest);
// // TODO: 2019/9/10 hubowen mq推送变更
// backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
//}
}
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