Commit 4fe245a5 by vega

feat:createOrder:新增银联礼品卡支付方式,暂存,等待支付给文档

parent 2bb63b8a
...@@ -490,7 +490,7 @@ public class OrderAdapter { ...@@ -490,7 +490,7 @@ public class OrderAdapter {
createOrderDto.setLongitude(longitude); createOrderDto.setLongitude(longitude);
createOrderDto.setOrderType(convent2OrderTypeEnum(orderType)); createOrderDto.setOrderType(convent2OrderTypeEnum(orderType));
createOrderDto.setPayType(QueryPayType.ONLINE_PAY); createOrderDto.setPayType(QueryPayType.ONLINE_PAY);
if (Objects.nonNull(createOrderVo.getUseUnionPayCard()) && createOrderVo.getUseUnionPayCard()) { if (Objects.nonNull(createOrderVo.getUnionPayCard())) {
createOrderDto.setPayChannel(PayChannel.UPC.getCode()); createOrderDto.setPayChannel(PayChannel.UPC.getCode());
createOrderDto.setPayChannelName(PayChannel.UPC.getDesc()); createOrderDto.setPayChannelName(PayChannel.UPC.getDesc());
} else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){ } else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){
...@@ -548,7 +548,7 @@ public class OrderAdapter { ...@@ -548,7 +548,7 @@ public class OrderAdapter {
productOrderInfo.setBizType(1); productOrderInfo.setBizType(1);
productOrderInfo.setOrderType(orderType); productOrderInfo.setOrderType(orderType);
productOrderInfo.setPayType(QueryPayType.ONLINE_PAY); productOrderInfo.setPayType(QueryPayType.ONLINE_PAY);
if (Objects.nonNull(createOrderVo.getUseUnionPayCard()) && createOrderVo.getUseUnionPayCard()) { if (Objects.nonNull(createOrderVo.getUnionPayCard())) {
productOrderInfo.setPayChannel(PayChannel.UPC.getCode()); productOrderInfo.setPayChannel(PayChannel.UPC.getCode());
productOrderInfo.setPayChannelName(PayChannel.UPC.getDesc()); productOrderInfo.setPayChannelName(PayChannel.UPC.getDesc());
} else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){ } else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){
...@@ -681,7 +681,7 @@ public class OrderAdapter { ...@@ -681,7 +681,7 @@ public class OrderAdapter {
memberOrderInfo.setOrderType(orderType); memberOrderInfo.setOrderType(orderType);
memberOrderInfo.setIsParent(false); memberOrderInfo.setIsParent(false);
memberOrderInfo.setOrderClient(OrderClientType.I_MEMBER.getIndex()); memberOrderInfo.setOrderClient(OrderClientType.I_MEMBER.getIndex());
if (Objects.nonNull(createOrderVo.getUseUnionPayCard()) && createOrderVo.getUseUnionPayCard()) { if (Objects.nonNull(createOrderVo.getUnionPayCard())) {
memberOrderInfo.setPayChannel(PayChannel.UPC.getCode()); memberOrderInfo.setPayChannel(PayChannel.UPC.getCode());
memberOrderInfo.setPayChannelName(PayChannel.UPC.getDesc()); memberOrderInfo.setPayChannelName(PayChannel.UPC.getDesc());
} else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){ } else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){
...@@ -724,7 +724,7 @@ public class OrderAdapter { ...@@ -724,7 +724,7 @@ public class OrderAdapter {
fatherOrderInfo.setIsParent(true); fatherOrderInfo.setIsParent(true);
fatherOrderInfo.setOrderClient(OrderClientType.SAAS.getIndex()); fatherOrderInfo.setOrderClient(OrderClientType.SAAS.getIndex());
fatherOrderInfo.setOrderType(orderType); fatherOrderInfo.setOrderType(orderType);
if (Objects.nonNull(createOrderVo.getUseUnionPayCard()) && createOrderVo.getUseUnionPayCard()) { if (Objects.nonNull(createOrderVo.getUnionPayCard())) {
fatherOrderInfo.setPayChannel(PayChannel.UPC.getCode()); fatherOrderInfo.setPayChannel(PayChannel.UPC.getCode());
fatherOrderInfo.setPayChannelName(PayChannel.UPC.getDesc()); fatherOrderInfo.setPayChannelName(PayChannel.UPC.getDesc());
} else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){ } else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){
...@@ -2841,7 +2841,15 @@ public class OrderAdapter { ...@@ -2841,7 +2841,15 @@ public class OrderAdapter {
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId, String wxAppId, String openId, public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId, String wxAppId, String openId,
String faceCode, String cardCode, String payCode, QueryOrdersResponse.DataBean.OrderBean fatherOrderBean, String faceCode, String cardCode, String payCode, QueryOrdersResponse.DataBean.OrderBean fatherOrderBean,
QueryOrdersResponse.DataBean.OrderBean productOrderBean, long totalAmount, int cardAmount, OrderExtInfoDto orderExtInfoDTO, QueryOrdersResponse.DataBean.OrderBean productOrderBean, long totalAmount, int cardAmount, OrderExtInfoDto orderExtInfoDTO,
String transId, OrderClientType orderClient, Boolean useUnionPayCard){ String transId, OrderClientType orderClient){
return convertToCreatePrepayRequestDto(partnerId, wxAppId, openId, faceCode, cardCode, payCode, fatherOrderBean,
productOrderBean, totalAmount, cardAmount, orderExtInfoDTO, transId, orderClient, null);
}
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){
CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto(); CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto();
requestDto.setPartnerId(partnerId); requestDto.setPartnerId(partnerId);
requestDto.setWxAppId(wxAppId); requestDto.setWxAppId(wxAppId);
...@@ -2856,7 +2864,7 @@ public class OrderAdapter { ...@@ -2856,7 +2864,7 @@ public class OrderAdapter {
requestDto.setOrderExtInfoDTO(orderExtInfoDTO); requestDto.setOrderExtInfoDTO(orderExtInfoDTO);
requestDto.setTransId(transId); requestDto.setTransId(transId);
requestDto.setOrderClient(orderClient); requestDto.setOrderClient(orderClient);
requestDto.setUseUnionPayCard(useUnionPayCard); requestDto.setUnionPayCard(unionPayCard);
return requestDto; return requestDto;
} }
...@@ -2867,7 +2875,7 @@ public class OrderAdapter { ...@@ -2867,7 +2875,7 @@ public class OrderAdapter {
createOrderOperateDto.getFatherOrderBean(), createOrderOperateDto.getProductOrderBean(), createOrderOperateDto.getFatherOrderBean(), createOrderOperateDto.getProductOrderBean(),
createOrderOperateDto.getTotalAmount() == null ? 0 : createOrderOperateDto.getTotalAmount(), createOrderOperateDto.getTotalAmount() == null ? 0 : createOrderOperateDto.getTotalAmount(),
createOrderOperateDto.getCardAmount() == null ? 0 : createOrderOperateDto.getCardAmount(), orderExtInfoDTO, createOrderOperateDto.getCardAmount() == null ? 0 : createOrderOperateDto.getCardAmount(), orderExtInfoDTO,
createOrderOperateDto.getFatherOrderBean().getOid(), null, createOrderVo.getUseUnionPayCard()); createOrderOperateDto.getFatherOrderBean().getOid(), null, createOrderVo.getUnionPayCard());
} }
/** /**
......
package cn.freemud.entities.dto.order; package cn.freemud.entities.dto.order;
import cn.freemud.entities.vo.CreateOrderVo;
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.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
...@@ -61,5 +62,5 @@ public class CreatePrepayRequestDto { ...@@ -61,5 +62,5 @@ public class CreatePrepayRequestDto {
/** /**
* 使用银联礼品卡 * 使用银联礼品卡
*/ */
private Boolean useUnionPayCard; private CreateOrderVo.UnionPayCard unionPayCard;
} }
...@@ -206,9 +206,23 @@ public class CreateOrderVo { ...@@ -206,9 +206,23 @@ public class CreateOrderVo {
private String channelType; private String channelType;
/** /**
* 使用银联礼品卡 true 使用, null or false 不使用 * 是否使用银联礼品卡,如果不为空则为使用
*/ */
private Boolean useUnionPayCard; @Valid
private UnionPayCard unionPayCard;
/**
* 银联礼品卡
*/
@Data
public static class UnionPayCard {
@NotNull(message = "银联礼品卡手机号必传")
private String phoneNumber;
@NotNull(message = "银联礼品卡密码必传")
private String password;
}
/** /**
* 微信配送地址信息 * 微信配送地址信息
......
...@@ -130,6 +130,7 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -130,6 +130,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringBuilder;
import org.aspectj.weaver.ast.Or;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -138,6 +139,9 @@ import tk.mybatis.mapper.util.StringUtil; ...@@ -138,6 +139,9 @@ import tk.mybatis.mapper.util.StringUtil;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Function; import java.util.function.Function;
...@@ -1802,9 +1806,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1802,9 +1806,9 @@ public class OrderServiceImpl implements Orderservice {
String transId = createPrepayRequestDto.getTransId(); String transId = createPrepayRequestDto.getTransId();
if (totalAmount < 0) { if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR); throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} else if (totalAmount > 0 && Objects.nonNull(createPrepayRequestDto.getUseUnionPayCard()) && createPrepayRequestDto.getUseUnionPayCard()) { } else if (totalAmount > 0 && Objects.nonNull(createPrepayRequestDto.getUnionPayCard())) {
// 银联礼品卡支付 // 银联礼品卡支付
orderPayResponse = upcPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo()); orderPayResponse = upcPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getUnionPayCard());
} else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) { } else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId); orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId);
} else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) { } else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) {
...@@ -1847,8 +1851,47 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1847,8 +1851,47 @@ public class OrderServiceImpl implements Orderservice {
} }
} }
private OrderPayResponse upcPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) { /**
return null; * unionPay card pay
* @param orderBean
* @param paymentRequest
* @param transId
* @param trackingNo
* @param unionPayCard
* @return
*/
private OrderPayResponse upcPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String transId, String trackingNo, CreateOrderVo.UnionPayCard unionPayCard) {
OrderPayResponse orderPayResponse = new OrderPayResponse();
if (Objects.isNull(unionPayCard) || StringUtils.isBlank(unionPayCard.getPhoneNumber()) || 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()));
// request.setCode(unionPayCard.getPhoneNumber());
request.setCode(paymentRequest.getOpenId());
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) {
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());
}
return orderPayResponse;
} }
/** /**
...@@ -2367,6 +2410,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2367,6 +2410,10 @@ 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);
} }
//银联礼品卡支付
if (totalAmount > 0 && Objects.nonNull(createOrderVo.getUnionPayCard())) {
return upcPay(fatherBeanListOne, paymentRequest, fatherBeanListOne.getOid(), LogThreadLocal.getTrackingNo(), createOrderVo.getUnionPayCard());
}
//唤起微信支付 //唤起微信支付
if (totalAmount > 0 && StringUtils.isBlank(createOrderVo.getCardCode()) && StringUtils.isBlank(createOrderVo.getFaceCode())) { if (totalAmount > 0 && StringUtils.isBlank(createOrderVo.getCardCode()) && StringUtils.isBlank(createOrderVo.getFaceCode())) {
orderPayResponse = getPreOrderPay(fatherBeanListOne, paymentRequest, LogThreadLocal.getTrackingNo(), cardAmount, fatherBeanListOne.getOid()); orderPayResponse = getPreOrderPay(fatherBeanListOne, paymentRequest, LogThreadLocal.getTrackingNo(), cardAmount, fatherBeanListOne.getOid());
......
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