Commit 706b679d by xiaoer.li@freemud.com

混合支付Beta

parent 9d7df7c9
package com.freemud.sdk.api.assortment.order.request.order; package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import com.freemud.sdk.api.assortment.order.config.BaseConfig; import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class OrderEditRequest extends BaseConfig { public class OrderEditRequest extends BaseConfig {
...@@ -17,8 +20,10 @@ public class OrderEditRequest extends BaseConfig { ...@@ -17,8 +20,10 @@ public class OrderEditRequest extends BaseConfig {
*/ */
private String extInfo; private String extInfo;
private List<PayItem> orderPayItem;
public OrderEditRequest(String orderId, String extInfo) { public OrderEditRequest(String orderId, String extInfo) {
this.orderId = orderId; this.orderId = orderId;
this.extInfo = extInfo; this.extInfo = extInfo;
} }
} }
...@@ -12,10 +12,14 @@ ...@@ -12,10 +12,14 @@
*/ */
package com.freemud.sdk.api.assortment.order.response.payment; package com.freemud.sdk.api.assortment.order.response.payment;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.ToString; import lombok.ToString;
import java.util.ArrayList;
import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
@ToString @ToString
...@@ -59,6 +63,7 @@ public class OrderPayResponse { ...@@ -59,6 +63,7 @@ public class OrderPayResponse {
private String wxAppid; private String wxAppid;
private String orderId; private String orderId;
private List<PayItem> payItem = new ArrayList<>();
@NoArgsConstructor @NoArgsConstructor
@Data @Data
...@@ -86,4 +91,5 @@ public class OrderPayResponse { ...@@ -86,4 +91,5 @@ public class OrderPayResponse {
private String aliPayOrder; private String aliPayOrder;
} }
} }
...@@ -674,6 +674,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -674,6 +674,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request.setOrderCode(orderEdit.getOrderId()); request.setOrderCode(orderEdit.getOrderId());
request.setExtInfo(orderEdit.getExtInfo()); request.setExtInfo(orderEdit.getExtInfo());
request.setOrderClient(OrderClientType.SAAS.getIndex()); request.setOrderClient(OrderClientType.SAAS.getIndex());
request.setOrderPayItem(orderEdit.getOrderPayItem());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse response = orderSdkService.editOrder(request, orderEdit.getTrackingNo()); com.freemud.application.sdk.api.ordercenter.response.BaseResponse response = orderSdkService.editOrder(request, orderEdit.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response); return orderSdkAdapter.convent2BaseOrderResponse(response);
} }
......
...@@ -50,6 +50,7 @@ import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo ...@@ -50,6 +50,7 @@ import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
import com.freemud.api.assortment.datamanager.enums.IappIdType; import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager; import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType; 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.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType; import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
...@@ -2787,6 +2788,9 @@ public class OrderAdapter { ...@@ -2787,6 +2788,9 @@ public class OrderAdapter {
createOrderResponseVo.setOrderType(getNewOrderType(orderBean.getType(), orderBean.getGmtExpect())); createOrderResponseVo.setOrderType(getNewOrderType(orderBean.getType(), orderBean.getGmtExpect()));
} }
createOrderResponseVo.setOrderStr(payOrderBean == null ? "" : payOrderBean.getAliPayOrder()); createOrderResponseVo.setOrderStr(payOrderBean == null ? "" : payOrderBean.getAliPayOrder());
if(CollectionUtils.isNotEmpty(orderPayResponse.getPayItem())) {
//createOrderResponseVo
}
return createOrderResponseVo; return createOrderResponseVo;
} }
...@@ -3347,32 +3351,44 @@ public class OrderAdapter { ...@@ -3347,32 +3351,44 @@ public class OrderAdapter {
, createOrderOperateDto.getFatherOrderBean().getOid() , createOrderOperateDto.getFatherOrderBean().getOid()
, null , null
, createOrderVo.getUnionPayCard() , createOrderVo.getUnionPayCard()
); , createOrderVo.getOrderPayItemCreateReqList()
} , createOrderVo.getCashAmount()
, createOrderVo.getSvcAmount());
/** }
* 混合支付 public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId
* @param userLoginInfoDto , String wxAppId, String openId
* @param createOrderOperateDto ,String faceCode
* @param createOrderVo , String cardCode
* @return , String payCode
*/ , QueryOrdersResponse.DataBean.OrderBean fatherOrderBean
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(AssortmentCustomerInfoVo userLoginInfoDto , QueryOrdersResponse.DataBean.OrderBean productOrderBean
,CreateOrderOperateDto createOrderOperateDto , long totalAmount
,CreateOrderVo createOrderVo) { , int cardAmount
, OrderExtInfoDto orderExtInfoDTO
,String transId
, OrderClientType orderClient
, CreateOrderVo.UnionPayCard unionPayCard
, List<OrderPayItemCreateReq> payItem
, BigDecimal cashAmount
, BigDecimal svcAmount){
CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto(); CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto();
requestDto.setPartnerId(createOrderVo.getPartnerId()); requestDto.setPartnerId(partnerId);
requestDto.setWxAppId(userLoginInfoDto.getWxAppId()); requestDto.setWxAppId(wxAppId);
requestDto.setOpenId(userLoginInfoDto.getOpenId()); requestDto.setOpenId(openId);
requestDto.setCardCode(createOrderVo.getCardCode()); requestDto.setFaceCode(faceCode);
requestDto.setCashAmount(createOrderVo.getCashAmount()); requestDto.setCardCode(cardCode);
requestDto.setSvcAmount(createOrderVo.getSvcAmount()); requestDto.setPayCode(payCode);
requestDto.setTotalAmount(createOrderOperateDto.getTotalAmount()); requestDto.setFatherOrderBean(fatherOrderBean);
requestDto.setTransId(createOrderOperateDto.getFatherOrderBean().getOid()); requestDto.setProductOrderBean(productOrderBean);
requestDto.setFatherOrderBean(createOrderOperateDto.getFatherOrderBean()); requestDto.setTotalAmount(totalAmount);
requestDto.setProductOrderBean(createOrderOperateDto.getProductOrderBean()); requestDto.setCardAmount(cardAmount);
requestDto.setOrderPayItemCreateReqList(createOrderVo.getOrderPayItemCreateReqList()); requestDto.setOrderExtInfoDTO(orderExtInfoDTO);
requestDto.setStoreId(createOrderVo.getShopId()); requestDto.setTransId(transId);
requestDto.setOrderClient(orderClient);
requestDto.setUnionPayCard(unionPayCard);
requestDto.setOrderPayItemCreateReqList(payItem);
requestDto.setCashAmount(cashAmount);
requestDto.setSvcAmount(svcAmount);
return requestDto; return requestDto;
} }
...@@ -3506,6 +3522,10 @@ public class OrderAdapter { ...@@ -3506,6 +3522,10 @@ public class OrderAdapter {
/** /**
* 混合支付预支付信息转换 * 混合支付预支付信息转换
* @param paymentRequest
* @param createPrepayRequestDto
* @param partnerPayOvertime
* @return
*/ */
public CombPayRequest convent2CombPayOrderRequest(PaymentRequest paymentRequest public CombPayRequest convent2CombPayOrderRequest(PaymentRequest paymentRequest
, CreatePrepayRequestDto createPrepayRequestDto , CreatePrepayRequestDto createPrepayRequestDto
...@@ -3557,15 +3577,19 @@ public class OrderAdapter { ...@@ -3557,15 +3577,19 @@ public class OrderAdapter {
/** /**
* 混合支付返回的支付参数 * 混合支付返回的支付参数
* @param payPlatform * @param payPlatforms
* @return * @return
*/ */
public OrderPayResponse convent2OrderCombPayResponse(CombPayResponse.PayPlatform payPlatform) { public OrderPayResponse convent2OrderCombPayResponse(List<CombPayResponse.PayPlatform> payPlatforms,String partnerId) {
CombPayResponse.PayPlatform payPlatform = payPlatforms
.stream()
.filter(f -> !PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
.orElse(null);
OrderPayResponse responseDto = new OrderPayResponse(); OrderPayResponse responseDto = new OrderPayResponse();
responseDto.setFmId(payPlatform.getFmTradeNo());
responseDto.setMsg("succ"); responseDto.setMsg("succ");
responseDto.setPayEbcode(payPlatform.getEbCode()); responseDto.setPayEbcode(payPlatform.getEbCode());
responseDto.setPayId(""); responseDto.setPayId("");
OrderPayResponse.PayOrderBean payBean = new OrderPayResponse.PayOrderBean(); OrderPayResponse.PayOrderBean payBean = new OrderPayResponse.PayOrderBean();
payBean.setAppid(payPlatform.getAppId()); payBean.setAppid(payPlatform.getAppId());
payBean.setNonceStr(payPlatform.getNonceStr()); payBean.setNonceStr(payPlatform.getNonceStr());
...@@ -3577,6 +3601,14 @@ public class OrderAdapter { ...@@ -3577,6 +3601,14 @@ public class OrderAdapter {
responseDto.setPayOrder(payBean); responseDto.setPayOrder(payBean);
responseDto.setPayTransId(payPlatform.getTransId()); responseDto.setPayTransId(payPlatform.getTransId());
responseDto.setFmId(payPlatform.getFmTradeNo()); responseDto.setFmId(payPlatform.getFmTradeNo());
for (CombPayResponse.PayPlatform pt : payPlatforms) {
PayItem payItem = new PayItem();
payItem.setFmTradeNo(pt.getFmTradeNo());
payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue());
payItem.setTransId(pt.getTransId());
payItem.setPartnerId(partnerId);
responseDto.getPayItem().add(payItem);
}
return responseDto; return responseDto;
} }
} }
...@@ -25,6 +25,7 @@ import javax.validation.Valid; ...@@ -25,6 +25,7 @@ import javax.validation.Valid;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -252,7 +253,7 @@ public class CreateOrderVo { ...@@ -252,7 +253,7 @@ public class CreateOrderVo {
/** /**
* 混合支付 * 混合支付
*/ */
private List<OrderPayItemCreateReq> orderPayItemCreateReqList; private List<OrderPayItemCreateReq> orderPayItemCreateReqList = new ArrayList<>();
/** /**
* svc支付金额 * svc支付金额
*/ */
......
...@@ -29,4 +29,12 @@ public enum PayChannelType { ...@@ -29,4 +29,12 @@ public enum PayChannelType {
} }
return null; return null;
} }
public static PayChannelType getByEbcode(String ebcode) {
for (PayChannelType payType : values()) {
if (payType.getEbcode().equals(ebcode)) {
return payType;
}
}
return null;
}
} }
...@@ -326,15 +326,12 @@ public class OrderServiceImpl implements Orderservice { ...@@ -326,15 +326,12 @@ public class OrderServiceImpl implements Orderservice {
return createOrderOperateDtoResponse; return createOrderOperateDtoResponse;
} }
CreateOrderOperateDto createOrderOperateDto = (CreateOrderOperateDto)createOrderOperateDtoResponse.getResult(); CreateOrderOperateDto createOrderOperateDto = (CreateOrderOperateDto)createOrderOperateDtoResponse.getResult();
if (svcPay) {
//创建支付 //创建支付
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto,createOrderOperateDto, createOrderVo); CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto, createOrderVo, createOrderOperateDto, extInfo);
if (svcPay) {
return this.createCombpayOrder(createPrepayRequestDto); return this.createCombpayOrder(createPrepayRequestDto);
} }
else { else {
//创建支付
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto, createOrderVo, createOrderOperateDto, extInfo);
return this.createPrepayOrder(createPrepayRequestDto); return this.createPrepayOrder(createPrepayRequestDto);
} }
...@@ -381,9 +378,29 @@ public class OrderServiceImpl implements Orderservice { ...@@ -381,9 +378,29 @@ public class OrderServiceImpl implements Orderservice {
} catch (Exception e) { } catch (Exception e) {
log.info("paymentQueueService.paymentCallback" + dto + " error" + e); log.info("paymentQueueService.paymentCallback" + dto + " error" + e);
} }
} }
/**
* 获取预支付成功,将信息放入死心队列,当支付成功没有回掉的时候处理
*
* @param partnerId
* @param storeId
* @param fmId
* @param orderId
*/
//public void putDelMq(String partnerId, String storeId, String fmId, String orderId,Integer payChanelType) {
// PaymentMqMessageDto dto = new PaymentMqMessageDto();
// try {
// dto.setFmId(fmId);
// dto.setOrderId(orderId);
// dto.setPartnerId(partnerId);
// dto.setStoreId(storeId);
// dto.setPayChannelType(payChanelType);
// dto.setTrackingNo(LogThreadLocal.getTrackingNo());
// paymentQueueService.paymentCallback(dto);
// } catch (Exception e) {
// log.info("paymentQueueService.paymentCallback" + dto + " error" + e);
// }
//}
@Override @Override
public String paySuccessCallback(PaysuccessNoticeMessage message, ConfirmOrderDto confirmOrderDto, Map<String, QueryOrdersResponseDto.DataBean.OrderBean> orderBeans) { public String paySuccessCallback(PaysuccessNoticeMessage message, ConfirmOrderDto confirmOrderDto, Map<String, QueryOrdersResponseDto.DataBean.OrderBean> orderBeans) {
OrderBean orderBean = orderBeans.get(OrderBeanType.SAASORDER.getCode()); OrderBean orderBean = orderBeans.get(OrderBeanType.SAASORDER.getCode());
...@@ -2600,6 +2617,12 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2600,6 +2617,12 @@ public class OrderServiceImpl implements Orderservice {
JSONObject.toJSONString(orderExtInfo)); JSONObject.toJSONString(orderExtInfo));
orderEditRequest.setOrderId(orderBean.getOid()); orderEditRequest.setOrderId(orderBean.getOid());
orderEditRequest.setTrackingNo(trackingNo); orderEditRequest.setTrackingNo(trackingNo);
/**
* 混合支付项
*/
if (CollectionUtils.isNotEmpty(orderPayResponse.getPayItem())) {
orderEditRequest.setOrderPayItem(orderPayResponse.getPayItem());
}
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderEdit(orderEditRequest); BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderEdit(orderEditRequest);
if (!ObjectUtils.equals(ResponseCodeConstant.RESPONSE_SUCCESS, baseOrderResponse.getErrcode())) { if (!ObjectUtils.equals(ResponseCodeConstant.RESPONSE_SUCCESS, baseOrderResponse.getErrcode())) {
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
...@@ -3117,14 +3140,16 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3117,14 +3140,16 @@ public class OrderServiceImpl implements Orderservice {
if (totalAmount < 0) { if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR); throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} }
else {
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId()); String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = comPayOrder(paymentRequest,createPrepayRequestDto,partnerPayOvertime); orderPayResponse = comPayOrder(paymentRequest,createPrepayRequestDto,partnerPayOvertime);
}
if (orderPayResponse == null || Objects.isNull(orderPayResponse.getFmId())) { if (orderPayResponse == null || Objects.isNull(orderPayResponse.getFmId())) {
return failPreOrderPay(LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getProductOrderBean(), cardCode, createPrepayRequestDto.getOrderClient(), return failPreOrderPay(LogThreadLocal.getTrackingNo()
Objects.isNull(orderPayResponse) ? null : orderPayResponse.getMsg()); , createPrepayRequestDto.getProductOrderBean()
, cardCode
, createPrepayRequestDto.getOrderClient()
, Objects.isNull(orderPayResponse) ? null : orderPayResponse.getMsg());
} }
createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, createPrepayRequestDto.getProductOrderBean()); createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, createPrepayRequestDto.getProductOrderBean());
...@@ -3132,11 +3157,14 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3132,11 +3157,14 @@ public class OrderServiceImpl implements Orderservice {
if (baseEditResponse != null) { if (baseEditResponse != null) {
return baseEditResponse; return baseEditResponse;
} }
/*
if (totalAmount > 0 && StringUtils.isBlank(cardCode)) { if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
createOrderResponse.setPaySuccess(false); createOrderResponse.setPaySuccess(false);
} else { } else {
createOrderResponse.setPaySuccess(true); createOrderResponse.setPaySuccess(true);
} }
*/
createOrderResponse.setPaySuccess(false);
// 推荐优惠插件用户下单数据上报 // 推荐优惠插件用户下单数据上报
if (!createOrderResponse.getPaySuccess()) { if (!createOrderResponse.getPaySuccess()) {
return ResponseUtil.success(createOrderResponse); return ResponseUtil.success(createOrderResponse);
...@@ -3179,11 +3207,6 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3179,11 +3207,6 @@ public class OrderServiceImpl implements Orderservice {
} }
else { else {
/** /**
* todo:加入轮训队列
*/
//putDelMq(request.getPartner_id(), request.getStore_id(), responseBase.getData(), orderBean.getOid());
//UnifiedOrderApiResponse unifiedOrderResponse = null;
/**
* 生成预支付参数 * 生成预支付参数
*/ */
CombPayResponse.PayPlatform payPlatform = responseBase.getData().getPayPlatformResponseList() CombPayResponse.PayPlatform payPlatform = responseBase.getData().getPayPlatformResponseList()
...@@ -3195,11 +3218,21 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3195,11 +3218,21 @@ public class OrderServiceImpl implements Orderservice {
orderPayResponse.setMsg("提取现金支付失败"); orderPayResponse.setMsg("提取现金支付失败");
} }
else { else {
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(payPlatform); orderPayResponse = orderAdapter.convent2OrderCombPayResponse(responseBase.getData().getPayPlatformResponseList(),createPrepayRequestDto.getPartnerId());
orderPayResponse.setOpenId(paymentRequest.getOpenId()); orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setPartnerId(createPrepayRequestDto.getPartnerId()); orderPayResponse.setPartnerId(createPrepayRequestDto.getPartnerId());
orderPayResponse.setOrderId(createPrepayRequestDto.getTransId()); orderPayResponse.setOrderId(createPrepayRequestDto.getTransId());
/**
* todo:加入轮训队列
*/
//putDelMq(createPrepayRequestDto.getPartnerId()
// , createPrepayRequestDto.getStoreId()
// , orderPayResponse.getFmId()
// ,createPrepayRequestDto.getTransId()
// , PayChannelType.getByEbcode(payPlatform.getEbCode()).getIndex().intValue());
} }
} }
} }
......
package com.freemud.application.sdk.api.ordercenter.entities;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: com.freemud.application.sdk.api.ordercenter.entities PayItem
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/7
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@NoArgsConstructor
@Data
public class PayItem {
private String partnerId;
private String fmTradeNo;
private Integer payChannelType;
private String transId;
}
...@@ -12,8 +12,11 @@ ...@@ -12,8 +12,11 @@
*/ */
package com.freemud.application.sdk.api.ordercenter.request; package com.freemud.application.sdk.api.ordercenter.request;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class UpdateOrderReq { public class UpdateOrderReq {
...@@ -24,5 +27,6 @@ public class UpdateOrderReq { ...@@ -24,5 +27,6 @@ public class UpdateOrderReq {
private String extInfo; private String extInfo;
private Integer orderClient; private Integer orderClient;
private List<PayItem> orderPayItem;
} }
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