Commit 706b679d by xiaoer.li@freemud.com

混合支付Beta

parent 9d7df7c9
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 lombok.Data;
import java.util.List;
@Data
public class OrderEditRequest extends BaseConfig {
......@@ -17,8 +20,10 @@ public class OrderEditRequest extends BaseConfig {
*/
private String extInfo;
private List<PayItem> orderPayItem;
public OrderEditRequest(String orderId, String extInfo) {
this.orderId = orderId;
this.extInfo = extInfo;
}
}
......@@ -12,10 +12,14 @@
*/
package com.freemud.sdk.api.assortment.order.response.payment;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.ArrayList;
import java.util.List;
@NoArgsConstructor
@Data
@ToString
......@@ -59,6 +63,7 @@ public class OrderPayResponse {
private String wxAppid;
private String orderId;
private List<PayItem> payItem = new ArrayList<>();
@NoArgsConstructor
@Data
......@@ -86,4 +91,5 @@ public class OrderPayResponse {
private String aliPayOrder;
}
}
......@@ -674,6 +674,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request.setOrderCode(orderEdit.getOrderId());
request.setExtInfo(orderEdit.getExtInfo());
request.setOrderClient(OrderClientType.SAAS.getIndex());
request.setOrderPayItem(orderEdit.getOrderPayItem());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse response = orderSdkService.editOrder(request, orderEdit.getTrackingNo());
return orderSdkAdapter.convent2BaseOrderResponse(response);
}
......
......@@ -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.manager.cache.CacheOpenPlatformPartnerWxappConfigManager;
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.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
......@@ -2787,6 +2788,9 @@ public class OrderAdapter {
createOrderResponseVo.setOrderType(getNewOrderType(orderBean.getType(), orderBean.getGmtExpect()));
}
createOrderResponseVo.setOrderStr(payOrderBean == null ? "" : payOrderBean.getAliPayOrder());
if(CollectionUtils.isNotEmpty(orderPayResponse.getPayItem())) {
//createOrderResponseVo
}
return createOrderResponseVo;
}
......@@ -3347,32 +3351,44 @@ public class OrderAdapter {
, createOrderOperateDto.getFatherOrderBean().getOid()
, null
, createOrderVo.getUnionPayCard()
);
}
/**
* 混合支付
* @param userLoginInfoDto
* @param createOrderOperateDto
* @param createOrderVo
* @return
*/
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(AssortmentCustomerInfoVo userLoginInfoDto
,CreateOrderOperateDto createOrderOperateDto
,CreateOrderVo createOrderVo) {
, createOrderVo.getOrderPayItemCreateReqList()
, createOrderVo.getCashAmount()
, createOrderVo.getSvcAmount());
}
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId
, String wxAppId, String openId
,String faceCode
, String cardCode
, String payCode
, QueryOrdersResponse.DataBean.OrderBean fatherOrderBean
, QueryOrdersResponse.DataBean.OrderBean productOrderBean
, long totalAmount
, int cardAmount
, OrderExtInfoDto orderExtInfoDTO
,String transId
, OrderClientType orderClient
, CreateOrderVo.UnionPayCard unionPayCard
, List<OrderPayItemCreateReq> payItem
, BigDecimal cashAmount
, BigDecimal svcAmount){
CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto();
requestDto.setPartnerId(createOrderVo.getPartnerId());
requestDto.setWxAppId(userLoginInfoDto.getWxAppId());
requestDto.setOpenId(userLoginInfoDto.getOpenId());
requestDto.setCardCode(createOrderVo.getCardCode());
requestDto.setCashAmount(createOrderVo.getCashAmount());
requestDto.setSvcAmount(createOrderVo.getSvcAmount());
requestDto.setTotalAmount(createOrderOperateDto.getTotalAmount());
requestDto.setTransId(createOrderOperateDto.getFatherOrderBean().getOid());
requestDto.setFatherOrderBean(createOrderOperateDto.getFatherOrderBean());
requestDto.setProductOrderBean(createOrderOperateDto.getProductOrderBean());
requestDto.setOrderPayItemCreateReqList(createOrderVo.getOrderPayItemCreateReqList());
requestDto.setStoreId(createOrderVo.getShopId());
requestDto.setPartnerId(partnerId);
requestDto.setWxAppId(wxAppId);
requestDto.setOpenId(openId);
requestDto.setFaceCode(faceCode);
requestDto.setCardCode(cardCode);
requestDto.setPayCode(payCode);
requestDto.setFatherOrderBean(fatherOrderBean);
requestDto.setProductOrderBean(productOrderBean);
requestDto.setTotalAmount(totalAmount);
requestDto.setCardAmount(cardAmount);
requestDto.setOrderExtInfoDTO(orderExtInfoDTO);
requestDto.setTransId(transId);
requestDto.setOrderClient(orderClient);
requestDto.setUnionPayCard(unionPayCard);
requestDto.setOrderPayItemCreateReqList(payItem);
requestDto.setCashAmount(cashAmount);
requestDto.setSvcAmount(svcAmount);
return requestDto;
}
......@@ -3506,6 +3522,10 @@ public class OrderAdapter {
/**
* 混合支付预支付信息转换
* @param paymentRequest
* @param createPrepayRequestDto
* @param partnerPayOvertime
* @return
*/
public CombPayRequest convent2CombPayOrderRequest(PaymentRequest paymentRequest
, CreatePrepayRequestDto createPrepayRequestDto
......@@ -3557,15 +3577,19 @@ public class OrderAdapter {
/**
* 混合支付返回的支付参数
* @param payPlatform
* @param payPlatforms
* @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();
responseDto.setFmId(payPlatform.getFmTradeNo());
responseDto.setMsg("succ");
responseDto.setPayEbcode(payPlatform.getEbCode());
responseDto.setPayId("");
OrderPayResponse.PayOrderBean payBean = new OrderPayResponse.PayOrderBean();
payBean.setAppid(payPlatform.getAppId());
payBean.setNonceStr(payPlatform.getNonceStr());
......@@ -3577,6 +3601,14 @@ public class OrderAdapter {
responseDto.setPayOrder(payBean);
responseDto.setPayTransId(payPlatform.getTransId());
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;
}
}
......@@ -25,6 +25,7 @@ import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
......@@ -252,7 +253,7 @@ public class CreateOrderVo {
/**
* 混合支付
*/
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList = new ArrayList<>();
/**
* svc支付金额
*/
......
......@@ -29,4 +29,12 @@ public enum PayChannelType {
}
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 {
return createOrderOperateDtoResponse;
}
CreateOrderOperateDto createOrderOperateDto = (CreateOrderOperateDto)createOrderOperateDtoResponse.getResult();
//创建支付
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto, createOrderVo, createOrderOperateDto, extInfo);
if (svcPay) {
//创建支付
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto,createOrderOperateDto, createOrderVo);
return this.createCombpayOrder(createPrepayRequestDto);
}
else {
//创建支付
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto, createOrderVo, createOrderOperateDto, extInfo);
return this.createPrepayOrder(createPrepayRequestDto);
}
......@@ -381,9 +378,29 @@ public class OrderServiceImpl implements Orderservice {
} catch (Exception 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
public String paySuccessCallback(PaysuccessNoticeMessage message, ConfirmOrderDto confirmOrderDto, Map<String, QueryOrdersResponseDto.DataBean.OrderBean> orderBeans) {
OrderBean orderBean = orderBeans.get(OrderBeanType.SAASORDER.getCode());
......@@ -2600,6 +2617,12 @@ public class OrderServiceImpl implements Orderservice {
JSONObject.toJSONString(orderExtInfo));
orderEditRequest.setOrderId(orderBean.getOid());
orderEditRequest.setTrackingNo(trackingNo);
/**
* 混合支付项
*/
if (CollectionUtils.isNotEmpty(orderPayResponse.getPayItem())) {
orderEditRequest.setOrderPayItem(orderPayResponse.getPayItem());
}
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderEdit(orderEditRequest);
if (!ObjectUtils.equals(ResponseCodeConstant.RESPONSE_SUCCESS, baseOrderResponse.getErrcode())) {
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
......@@ -3117,14 +3140,16 @@ public class OrderServiceImpl implements Orderservice {
if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
}
else {
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = comPayOrder(paymentRequest,createPrepayRequestDto,partnerPayOvertime);
}
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = comPayOrder(paymentRequest,createPrepayRequestDto,partnerPayOvertime);
if (orderPayResponse == null || Objects.isNull(orderPayResponse.getFmId())) {
return failPreOrderPay(LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getProductOrderBean(), cardCode, createPrepayRequestDto.getOrderClient(),
Objects.isNull(orderPayResponse) ? null : orderPayResponse.getMsg());
return failPreOrderPay(LogThreadLocal.getTrackingNo()
, createPrepayRequestDto.getProductOrderBean()
, cardCode
, createPrepayRequestDto.getOrderClient()
, Objects.isNull(orderPayResponse) ? null : orderPayResponse.getMsg());
}
createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, createPrepayRequestDto.getProductOrderBean());
......@@ -3132,11 +3157,14 @@ public class OrderServiceImpl implements Orderservice {
if (baseEditResponse != null) {
return baseEditResponse;
}
/*
if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
createOrderResponse.setPaySuccess(false);
} else {
createOrderResponse.setPaySuccess(true);
}
*/
createOrderResponse.setPaySuccess(false);
// 推荐优惠插件用户下单数据上报
if (!createOrderResponse.getPaySuccess()) {
return ResponseUtil.success(createOrderResponse);
......@@ -3179,11 +3207,6 @@ public class OrderServiceImpl implements Orderservice {
}
else {
/**
* todo:加入轮训队列
*/
//putDelMq(request.getPartner_id(), request.getStore_id(), responseBase.getData(), orderBean.getOid());
//UnifiedOrderApiResponse unifiedOrderResponse = null;
/**
* 生成预支付参数
*/
CombPayResponse.PayPlatform payPlatform = responseBase.getData().getPayPlatformResponseList()
......@@ -3195,11 +3218,21 @@ public class OrderServiceImpl implements Orderservice {
orderPayResponse.setMsg("提取现金支付失败");
}
else {
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(payPlatform);
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(responseBase.getData().getPayPlatformResponseList(),createPrepayRequestDto.getPartnerId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setPartnerId(createPrepayRequestDto.getPartnerId());
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 @@
*/
package com.freemud.application.sdk.api.ordercenter.request;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import lombok.Data;
import java.util.List;
@Data
public class UpdateOrderReq {
......@@ -24,5 +27,6 @@ public class UpdateOrderReq {
private String extInfo;
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