Commit cb9b965a by vega

Merge branch 'featrue/1.9.36-新增银联礼品卡支付-肖家炜' into develop

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
parents caae0dab 4299cef9
...@@ -541,7 +541,10 @@ public class OrderAdapter { ...@@ -541,7 +541,10 @@ 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(StringUtils.isNotBlank(createOrderVo.getCardCode())){ if (Objects.nonNull(createOrderVo.getUnionPayCard())) {
createOrderDto.setPayChannel(PayChannel.UPC.getCode());
createOrderDto.setPayChannelName(PayChannel.UPC.getDesc());
} else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){
createOrderDto.setPayChannel("10102"); createOrderDto.setPayChannel("10102");
createOrderDto.setPayChannelName("储值卡支付"); createOrderDto.setPayChannelName("储值卡支付");
} }
...@@ -597,7 +600,10 @@ public class OrderAdapter { ...@@ -597,7 +600,10 @@ 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(StringUtils.isNotBlank(createOrderVo.getCardCode())){ if (Objects.nonNull(createOrderVo.getUnionPayCard())) {
productOrderInfo.setPayChannel(PayChannel.UPC.getCode());
productOrderInfo.setPayChannelName(PayChannel.UPC.getDesc());
} else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){
productOrderInfo.setPayChannel("10102"); productOrderInfo.setPayChannel("10102");
productOrderInfo.setPayChannelName("储值卡支付"); productOrderInfo.setPayChannelName("储值卡支付");
} }
...@@ -727,7 +733,10 @@ public class OrderAdapter { ...@@ -727,7 +733,10 @@ 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(StringUtils.isNotBlank(createOrderVo.getCardCode())){ if (Objects.nonNull(createOrderVo.getUnionPayCard())) {
memberOrderInfo.setPayChannel(PayChannel.UPC.getCode());
memberOrderInfo.setPayChannelName(PayChannel.UPC.getDesc());
} else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){
memberOrderInfo.setPayChannel("10102"); memberOrderInfo.setPayChannel("10102");
memberOrderInfo.setPayChannelName("储值卡支付"); memberOrderInfo.setPayChannelName("储值卡支付");
} }
...@@ -767,7 +776,10 @@ public class OrderAdapter { ...@@ -767,7 +776,10 @@ 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(StringUtils.isNotBlank(createOrderVo.getCardCode())){ if (Objects.nonNull(createOrderVo.getUnionPayCard())) {
fatherOrderInfo.setPayChannel(PayChannel.UPC.getCode());
fatherOrderInfo.setPayChannelName(PayChannel.UPC.getDesc());
} else if(StringUtils.isNotBlank(createOrderVo.getCardCode())){
fatherOrderInfo.setPayChannel("10102"); fatherOrderInfo.setPayChannel("10102");
fatherOrderInfo.setPayChannelName("储值卡支付"); fatherOrderInfo.setPayChannelName("储值卡支付");
} }
...@@ -1036,6 +1048,8 @@ public class OrderAdapter { ...@@ -1036,6 +1048,8 @@ public class OrderAdapter {
responseVo.setOrderPayType("支付宝支付"); responseVo.setOrderPayType("支付宝支付");
} else if (ordersBean.getPayChannel() != null && PayChannel.WXPAY.getCode().equals(ordersBean.getPayChannel())) { } else if (ordersBean.getPayChannel() != null && PayChannel.WXPAY.getCode().equals(ordersBean.getPayChannel())) {
responseVo.setOrderPayType("微信支付"); responseVo.setOrderPayType("微信支付");
} else if (ordersBean.getPayChannel() != null && Objects.equals(PayChannel.UPC.getCode(), ordersBean.getPayChannel())) {
responseVo.setOrderPayType("银联礼品卡支付");
} else { } else {
responseVo.setOrderPayType("微信支付"); responseVo.setOrderPayType("微信支付");
} }
...@@ -3030,6 +3044,14 @@ public class OrderAdapter { ...@@ -3030,6 +3044,14 @@ public class OrderAdapter {
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){ 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);
...@@ -3044,6 +3066,7 @@ public class OrderAdapter { ...@@ -3044,6 +3066,7 @@ public class OrderAdapter {
requestDto.setOrderExtInfoDTO(orderExtInfoDTO); requestDto.setOrderExtInfoDTO(orderExtInfoDTO);
requestDto.setTransId(transId); requestDto.setTransId(transId);
requestDto.setOrderClient(orderClient); requestDto.setOrderClient(orderClient);
requestDto.setUnionPayCard(unionPayCard);
return requestDto; return requestDto;
} }
...@@ -3054,7 +3077,7 @@ public class OrderAdapter { ...@@ -3054,7 +3077,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); 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;
...@@ -57,4 +58,9 @@ public class CreatePrepayRequestDto { ...@@ -57,4 +58,9 @@ public class CreatePrepayRequestDto {
private String transId; private String transId;
private OrderClientType orderClient; private OrderClientType orderClient;
/**
* 使用银联礼品卡
*/
private CreateOrderVo.UnionPayCard unionPayCard;
} }
...@@ -222,6 +222,25 @@ public class CreateOrderVo { ...@@ -222,6 +222,25 @@ public class CreateOrderVo {
private String invoiceTitle; private String invoiceTitle;
/** /**
* 是否使用银联礼品卡,如果不为空则为使用
*/
@Valid
private UnionPayCard unionPayCard;
/**
* 银联礼品卡
*/
@Data
public static class UnionPayCard {
@NotNull(message = "银联礼品卡手机号必传")
private String phoneNumber;
@NotNull(message = "银联礼品卡密码必传")
private String password;
}
/**
* 微信配送地址信息 * 微信配送地址信息
*/ */
private WeixinDeliveryAddressDto weixinDeliveryAddress; private WeixinDeliveryAddressDto weixinDeliveryAddress;
......
...@@ -15,6 +15,7 @@ package cn.freemud.enums; ...@@ -15,6 +15,7 @@ package cn.freemud.enums;
public enum PayChannel { public enum PayChannel {
SVC("10102", "svc卡支付"), SVC("10102", "svc卡支付"),
UPC("10031", "银联"),
ALIPAY("10300", "支付宝"), ALIPAY("10300", "支付宝"),
WXPAY("10211", "微信"); WXPAY("10211", "微信");
......
...@@ -142,6 +142,9 @@ import tk.mybatis.mapper.util.StringUtil; ...@@ -142,6 +142,9 @@ import tk.mybatis.mapper.util.StringUtil;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
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;
...@@ -2131,6 +2134,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2131,6 +2134,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.getUnionPayCard())) {
// 银联礼品卡支付
orderPayResponse = upcPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getUnionPayCard());
} else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) { } else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId()); String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime); orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime);
...@@ -2175,6 +2181,49 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2175,6 +2181,49 @@ public class OrderServiceImpl implements Orderservice {
} }
/** /**
* 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;
}
/**
* 创建普通订单 * 创建普通订单
*/ */
public CreateOrderResponse createOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto, public CreateOrderResponse createOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto,
...@@ -2561,7 +2610,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2561,7 +2610,7 @@ public class OrderServiceImpl implements Orderservice {
QueryOrdersResponse.DataBean.OrderBean productOrderBean = operateDto.getProductOrderBean(); QueryOrdersResponse.DataBean.OrderBean productOrderBean = operateDto.getProductOrderBean();
//支付-- 包含商品券无需支付、唤起微信支付、储值卡支付直接支付、扫脸支付 //支付-- 包含商品券无需支付、唤起微信支付、储值卡支付直接支付、扫脸支付
OrderPayResponse orderPayResponse = pay(userLoginInfoDto,createOrderVo,totalAmount,cardAmount,fatherOrderBean); OrderPayResponse orderPayResponse = pay(userLoginInfoDto,createOrderVo,totalAmount,cardAmount,fatherOrderBean);
// 默认支付成功必有非码订单号,不管成功与否,orderPayResponse都是不空的.此处是防御式处理 // 默认支付成功必有非码订单号
if (orderPayResponse == null || Objects.isNull(orderPayResponse.getFmId())) { if (orderPayResponse == null || Objects.isNull(orderPayResponse.getFmId())) {
if(createOrderVo.getFaceCode() != null){ if(createOrderVo.getFaceCode() != null){
createOrderVo.setCardCode(createOrderVo.getFaceCode()); createOrderVo.setCardCode(createOrderVo.getFaceCode());
...@@ -2690,6 +2739,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2690,6 +2739,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())) {
String partnerPayOvertime = this.getPartnerPayOvertime(createOrderVo.getPartnerId()); String partnerPayOvertime = this.getPartnerPayOvertime(createOrderVo.getPartnerId());
......
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