Commit 85b9d96a by xiaoer.li@freemud.com

Merge remote-tracking branch 'remotes/origin/feature/2020-1104-混合支付' into develop

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/ProductVO.java
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/QueryOrdersResponse.java
#	order-application-service/pom.xml
#	order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
#	order-application-service/src/main/java/cn/freemud/entities/dto/order/CreatePrepayRequestDto.java
#	order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
#	ordercenter-sdk/pom.xml
#	ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/CreateOrderRequest.java
#	ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/OrderPayItemCreateReq.java
#	ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderInfoReqs.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents 884237d1 e9f57b1a
...@@ -263,6 +263,7 @@ public class OrderSdkAdapter { ...@@ -263,6 +263,7 @@ public class OrderSdkAdapter {
//订单重量 //订单重量
Double orderWeight = sumOrderWeight(requestVO.getProducts()); Double orderWeight = sumOrderWeight(requestVO.getProducts());
request.setWeight(orderWeight); request.setWeight(orderWeight);
request.setOrderPayItemCreateReqList(requestVO.getOrderPayItemCreateReqList());
// 扩展字段(第三方商品分类编号) // 扩展字段(第三方商品分类编号)
if (null != requestVO && null != requestVO.getOtherInfo()) { if (null != requestVO && null != requestVO.getOtherInfo()) {
request.setExtInfo(JSONObject.toJSONString(requestVO.getOtherInfo())); request.setExtInfo(JSONObject.toJSONString(requestVO.getOtherInfo()));
...@@ -1183,6 +1184,10 @@ public class OrderSdkAdapter { ...@@ -1183,6 +1184,10 @@ public class OrderSdkAdapter {
data.setExpressChannelName(orderInfoReqs.getExpressChannelName()); data.setExpressChannelName(orderInfoReqs.getExpressChannelName());
//发票信息 //发票信息
data.setOrderInvoice(orderInfoReqs.getOrderInvoice()); data.setOrderInvoice(orderInfoReqs.getOrderInvoice());
//todo:混合支付
if (CollectionUtils.isNotEmpty(orderInfoReqs.getOrderPayItemCreateReqList())) {
data.setOrderPayItem(this.getOrderItemPayList(orderInfoReqs.getOrderPayItemCreateReqList()));
}
//订单类型回传 //订单类型回传
if (orderInfoReqs.getMarketingType() != null) { if (orderInfoReqs.getMarketingType() != null) {
...@@ -1192,6 +1197,23 @@ public class OrderSdkAdapter { ...@@ -1192,6 +1197,23 @@ public class OrderSdkAdapter {
return data; return data;
} }
/**
* 混合支付转换
* @param OrderPayItemReqs
*/
private List<QueryOrdersResponse.DataBean.OrderBean.OrderPayItem> getOrderItemPayList(List<OrderPayItemReqs> OrderPayItemReqs) {
List<QueryOrdersResponse.DataBean.OrderBean.OrderPayItem> OrderPayItemList = new ArrayList<>(2);
for (OrderPayItemReqs orderPayItemReq : OrderPayItemReqs) {
QueryOrdersResponse.DataBean.OrderBean.OrderPayItem orderPayItem = new QueryOrdersResponse.DataBean.OrderBean.OrderPayItem();
orderPayItem.setOrderCode(orderPayItemReq.getOrderCode());
orderPayItem.setOrderPayItemCode(orderPayItemReq.getOrderPayItemCode());
orderPayItem.setPayAmount(orderPayItemReq.getPayAmount());
orderPayItem.setPayChannelName(orderPayItemReq.getPayChannelName());
orderPayItem.setPayChannelType(orderPayItemReq.getPayChannelType());
OrderPayItemList.add(orderPayItem);
}
return OrderPayItemList;
}
public QueryOrdersResponse convent2QueryOrdersResponse(BaseResponse<QueryOrderForUserResp> baseResponse) { public QueryOrdersResponse convent2QueryOrdersResponse(BaseResponse<QueryOrderForUserResp> baseResponse) {
QueryOrdersResponse response = new QueryOrdersResponse(); QueryOrdersResponse response = new QueryOrdersResponse();
response.setErrcode(Integer.parseInt(baseResponse.getCode())); response.setErrcode(Integer.parseInt(baseResponse.getCode()));
...@@ -1622,9 +1644,6 @@ public class OrderSdkAdapter { ...@@ -1622,9 +1644,6 @@ public class OrderSdkAdapter {
activityUpdateStockRequest.setPartnerCode(orderBean.getCompanyId()); activityUpdateStockRequest.setPartnerCode(orderBean.getCompanyId());
activityUpdateStockRequest.setStoreId(orderBean.getShopId()); activityUpdateStockRequest.setStoreId(orderBean.getShopId());
activityUpdateStockRequest.setVer("1"); activityUpdateStockRequest.setVer("1");
// add by miaohui 20201030 for 【ID1018638】【C端服务端】活动库存接口调整对接
activityUpdateStockRequest.setUserId(orderBean.getUserId());
activityUpdateStockRequest.setOrderCreateTime(DateUtil.getCurrentDate(DateUtil.FORMAT_yyyyMMdd_date));
return activityUpdateStockRequest; return activityUpdateStockRequest;
} }
...@@ -2815,13 +2834,6 @@ public class OrderSdkAdapter { ...@@ -2815,13 +2834,6 @@ public class OrderSdkAdapter {
extInfo.setProductGroupList(product.getProductGroupList()); extInfo.setProductGroupList(product.getProductGroupList());
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo)); orderItemCreateReq.setExtInfo(JSONObject.toJSONString(extInfo));
// 拼单加购人信息 add by miaohui 2020.10.12 start
orderItemCreateReq.setUserId(product.getUserId());
orderItemCreateReq.setNickName(product.getNickName());
orderItemCreateReq.setPhotoUrl(product.getPhotoUrl());
// 拼单加购人信息 add by miaohui 2020.10.12 end
orderItemList.add(orderItemCreateReq); orderItemList.add(orderItemCreateReq);
if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L && !isMaterial) { if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L && !isMaterial) {
//优惠信息转换 //优惠信息转换
......
...@@ -4,10 +4,10 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; ...@@ -4,10 +4,10 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest; import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.config.BaseConfig; import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
...@@ -174,6 +174,7 @@ public class BaseCreateOrderRequest extends BaseConfig { ...@@ -174,6 +174,7 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/ */
private Byte marketingType; private Byte marketingType;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
@Data @Data
public static class DeliveryTypeInfo { public static class DeliveryTypeInfo {
/** /**
......
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;
} }
} }
package com.freemud.sdk.api.assortment.order.request.payment;
import lombok.Data;
import java.util.List;
@Data
public class CombPayRequest {
private List<PayPlatformVO> platforms;
/**
* 用户标识
*/
private String open_id;
/**
* 回调通知地址
*/
private String notify_url;
/**
* 是否需要开发票:1为需要
*/
private Integer invoice_flag;
/**
* 支付总金额,以分为单位
*/
private Long amount;
/**
* 会员支付金额,以分为单位
*/
private Long vip_amount;
/**
* 不可打折金额,以分为单位
*/
private Integer undis_amount;
/**
* 订单描述
*/
private String body;
/**
* 外部交易流水号,由上游系统生成,需保证唯一
*/
private String out_order_no;
private List<ProductVO> products;
private String goodsTag;
/**
* 商户编号(由非码提供)
*/
private String partner_id;
/**
* 商家门店号(在线支付需要提前定义)
*/
private String store_id;
/**
* 业务日期
*/
private String business_date;
/**
* 营业员编号(可以使用固定值)
*/
private String operator_id = "1";
/**
* 商家POS机编号(可以使用固定值,扫码付必传)
*/
private String station_id = "1";;
private String appId;
private String payCode;
private String payTimeOutTime;
private String ebCode;
private String cardCode;
private Boolean disable_service_goods_tag = false;
private String request_source ="V1";
private String ver ="10";
}
...@@ -8,7 +8,7 @@ import java.math.BigDecimal; ...@@ -8,7 +8,7 @@ import java.math.BigDecimal;
public class ProductVO { public class ProductVO {
private String id; private String id;
private BigDecimal quantity; private Integer quantity;
private Integer seq; private Integer seq;
private Long price; private Long price;
private String name; private String name;
......
...@@ -417,6 +417,16 @@ public class QueryOrdersResponse { ...@@ -417,6 +417,16 @@ public class QueryOrdersResponse {
private String downstreamThirdOrderCode; private String downstreamThirdOrderCode;
/**
* 发票明细
*/
private OrderInvoice orderInvoice;
/**
* 混合支付list
*/
private List<OrderPayItem> orderPayItem;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class AddDeliveryInfo { public static class AddDeliveryInfo {
...@@ -557,21 +567,6 @@ public class QueryOrdersResponse { ...@@ -557,21 +567,6 @@ public class QueryOrdersResponse {
private Long id; private Long id;
/** /**
* 加购人ID
*/
private String userId;
/**
* 加购人昵称
*/
private String nickName;
/**
* 加购人头像
*/
private String photoUrl;
/**
* 套餐子商品 * 套餐子商品
*/ */
public List<ProductBean> comboProduct; public List<ProductBean> comboProduct;
...@@ -768,6 +763,23 @@ public class QueryOrdersResponse { ...@@ -768,6 +763,23 @@ public class QueryOrdersResponse {
// 扩展字段 // 扩展字段
private String extInfo; private String extInfo;
} }
@NoArgsConstructor
@Data
public static class OrderPayItem {
private Long orderId;
/**
* 订单号
*/
private String orderCode;
private Integer payChannelType;
private String payChannelName;
/**
* 支付交易号
*/
private String orderPayItemCode;
private BigDecimal payAmount;
}
} }
} }
} }
...@@ -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;
} }
} }
...@@ -690,6 +690,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -690,6 +690,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);
} }
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
<dependency> <dependency>
<artifactId>promotioncenter-sdk</artifactId> <artifactId>promotioncenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<version>2.6.5.SNAPSHOT</version> <version>2.3.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.sdk.api.assortment</groupId> <groupId>com.freemud.sdk.api.assortment</groupId>
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>storecenter-sdk</artifactId> <artifactId>storecenter-sdk</artifactId>
<version>3.2.9-SNAPSHOT</version> <version>3.1.9.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
...@@ -315,7 +315,7 @@ ...@@ -315,7 +315,7 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>paymentcenter-sdk</artifactId> <artifactId>paymentcenter-sdk</artifactId>
<version>2.9.2-SNAPSHOT</version> <version>2.9.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.sdk.api.assortment</groupId> <groupId>com.freemud.sdk.api.assortment</groupId>
......
...@@ -20,6 +20,7 @@ import cn.freemud.entities.dto.activity.ShareDiscountActivityDto; ...@@ -20,6 +20,7 @@ import cn.freemud.entities.dto.activity.ShareDiscountActivityDto;
import cn.freemud.entities.dto.order.*; import cn.freemud.entities.dto.order.*;
import cn.freemud.entities.dto.order.CreateOrderAccountDto; import cn.freemud.entities.dto.order.CreateOrderAccountDto;
import cn.freemud.entities.dto.order.CreateOrderProductDto; import cn.freemud.entities.dto.order.CreateOrderProductDto;
import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.promotion.OrderBeanRequest; import cn.freemud.entities.dto.promotion.OrderBeanRequest;
import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse; import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto; import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
...@@ -50,10 +51,8 @@ import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo ...@@ -50,10 +51,8 @@ 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.enums.AfterSalesType; import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
...@@ -65,6 +64,9 @@ import com.freemud.sdk.api.assortment.order.request.order.*; ...@@ -65,6 +64,9 @@ import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.request.payment.PayPlatformVO; import com.freemud.sdk.api.assortment.order.request.payment.PayPlatformVO;
import com.freemud.sdk.api.assortment.order.request.payment.ProductVO; import com.freemud.sdk.api.assortment.order.request.payment.ProductVO;
import com.freemud.sdk.api.assortment.order.request.payment.UnifiedOrderApplicationRequest; import com.freemud.sdk.api.assortment.order.request.payment.UnifiedOrderApplicationRequest;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import com.freemud.sdk.api.assortment.order.request.payment.PayPlatformVO;
import com.freemud.sdk.api.assortment.order.request.payment.ProductVO;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderFlowResponse; import com.freemud.sdk.api.assortment.order.response.order.CreateOrderFlowResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
...@@ -80,7 +82,6 @@ import org.apache.commons.lang.StringUtils; ...@@ -80,7 +82,6 @@ import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.FastDateFormat; import org.apache.commons.lang.time.FastDateFormat;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.awt.geom.Point2D; import java.awt.geom.Point2D;
...@@ -316,6 +317,7 @@ public class OrderAdapter { ...@@ -316,6 +317,7 @@ public class OrderAdapter {
createOrderDto.setPayChannelType(createOrderVo.getPayChannelType()); createOrderDto.setPayChannelType(createOrderVo.getPayChannelType());
createOrderDto.setPayChannelType(createOrderVo.getPayChannelType()); createOrderDto.setPayChannelType(createOrderVo.getPayChannelType());
createOrderDto.setOrderPayItemCreateReqList(createOrderVo.getOrderPayItemCreateReqList()); createOrderDto.setOrderPayItemCreateReqList(createOrderVo.getOrderPayItemCreateReqList());
createOrderDto.setOrderPayItemCreateReqList(createOrderVo.getOrderPayItemCreateReqList());
// createOrderDto.setOtherInfo(getOrderOtherInfo(shoppingCartGoodsDto)); // createOrderDto.setOtherInfo(getOrderOtherInfo(shoppingCartGoodsDto));
return createOrderDto; return createOrderDto;
...@@ -2868,6 +2870,9 @@ public class OrderAdapter { ...@@ -2868,6 +2870,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;
} }
...@@ -3415,12 +3420,59 @@ public class OrderAdapter { ...@@ -3415,12 +3420,59 @@ public class OrderAdapter {
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(AssortmentCustomerInfoVo userLoginInfoDto,CreateOrderVo createOrderVo, public CreatePrepayRequestDto convertToCreatePrepayRequestDto(AssortmentCustomerInfoVo userLoginInfoDto,CreateOrderVo createOrderVo,
CreateOrderOperateDto createOrderOperateDto, OrderExtInfoDto orderExtInfoDTO){ CreateOrderOperateDto createOrderOperateDto, OrderExtInfoDto orderExtInfoDTO){
return this.convertToCreatePrepayRequestDto(createOrderVo.getPartnerId(), userLoginInfoDto.getWxAppId(), userLoginInfoDto.getOpenId(), return this.convertToCreatePrepayRequestDto(createOrderVo.getPartnerId()
createOrderVo.getFaceCode(), createOrderVo.getCardCode(), null, , userLoginInfoDto.getWxAppId()
createOrderOperateDto.getFatherOrderBean(), createOrderOperateDto.getProductOrderBean(), , userLoginInfoDto.getOpenId()
createOrderOperateDto.getTotalAmount() == null ? 0 : createOrderOperateDto.getTotalAmount(), , createOrderVo.getFaceCode()
createOrderOperateDto.getCardAmount() == null ? 0 : createOrderOperateDto.getCardAmount(), orderExtInfoDTO, , createOrderVo.getCardCode()
createOrderOperateDto.getFatherOrderBean().getOid(), null, createOrderVo.getUnionPayCard()); , null
, createOrderOperateDto.getFatherOrderBean()
, createOrderOperateDto.getProductOrderBean()
, createOrderOperateDto.getTotalAmount() == null ? 0 : createOrderOperateDto.getTotalAmount()
, createOrderOperateDto.getCardAmount() == null ? 0 : createOrderOperateDto.getCardAmount()
, orderExtInfoDTO
, createOrderOperateDto.getFatherOrderBean().getOid()
, null
, createOrderVo.getUnionPayCard()
, 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(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;
} }
/** /**
...@@ -3680,4 +3732,124 @@ public class OrderAdapter { ...@@ -3680,4 +3732,124 @@ public class OrderAdapter {
activityUpdateStockRequest.setActivityList(CollectionUtils.isNotEmpty(activityList) ? activityList : null); activityUpdateStockRequest.setActivityList(CollectionUtils.isNotEmpty(activityList) ? activityList : null);
return activityUpdateStockRequest; return activityUpdateStockRequest;
} }
/**
* svc卡支付+现金支付
* @param cashAmount
* @param svcAmount
* @param payChannelType
* @return
*/
public List<OrderPayItemCreateReq> setOrderPayItem(BigDecimal cashAmount,BigDecimal svcAmount, Byte payChannelType){
List<OrderPayItemCreateReq> orderPayItemCreateReqs = new ArrayList<>(0);
OrderPayItemCreateReq orderPayItemCreateReqSvc = new OrderPayItemCreateReq();
//svc卡
orderPayItemCreateReqSvc.setPayAmount(svcAmount);
orderPayItemCreateReqSvc.setPayChannelType(PayChannelType.SVC.getIndex().intValue());
orderPayItemCreateReqSvc.setPayChannelName(PayChannelType.SVC.getName());
orderPayItemCreateReqSvc.setPayEbCode(PayChannelType.SVC.getEbcode());
orderPayItemCreateReqs.add(orderPayItemCreateReqSvc);
//现金支付
OrderPayItemCreateReq orderPayItemCreateReqOther = new OrderPayItemCreateReq();
orderPayItemCreateReqOther.setPayAmount(cashAmount);
orderPayItemCreateReqOther.setPayChannelType(PayChannelType.getByIndex(payChannelType).getIndex().intValue());
orderPayItemCreateReqOther.setPayChannelName(PayChannelType.getByIndex(payChannelType).getName());
orderPayItemCreateReqOther.setPayEbCode(PayChannelType.getByIndex(payChannelType).getEbcode());
orderPayItemCreateReqs.add(orderPayItemCreateReqOther);
return orderPayItemCreateReqs;
}
/**
* 混合支付预支付信息转换
* @param paymentRequest
* @param createPrepayRequestDto
* @param partnerPayOvertime
* @return
*/
public CombPayRequest convent2CombPayOrderRequest(PaymentRequest paymentRequest
, CreatePrepayRequestDto createPrepayRequestDto
, String partnerPayOvertime) {
CombPayRequest orderPayDto = new CombPayRequest();
orderPayDto.setEbCode(paymentRequest.getPayCode());
orderPayDto.setPartner_id(createPrepayRequestDto.getPartnerId());
orderPayDto.setBody(paymentRequest.getPrincipalName());
orderPayDto.setNotify_url(paymentRequest.getReverseNotifyiDcUrl());
//orderPayDto.setStore_id(createPrepayRequestDto.getStoreId());
orderPayDto.setStore_id("999999998");
orderPayDto.setOpen_id(paymentRequest.getOpenId());
String businessDate = com.freemud.application.sdk.api.util.DateUtil.convert2String(new Date(), "yyyyMMdd");
orderPayDto.setBusiness_date(businessDate);
orderPayDto.setAmount(createPrepayRequestDto.getTotalAmount());
orderPayDto.setVip_amount(0L);
orderPayDto.setAppId(paymentRequest.getWxAppId());
orderPayDto.setPayCode(paymentRequest.getPayCode());
orderPayDto.setPayTimeOutTime(StringUtils.defaultIfBlank(partnerPayOvertime, "30"));
List<ProductVO> productVOS = new ArrayList<ProductVO>();
if (CollectionUtils.isNotEmpty(createPrepayRequestDto.getFatherOrderBean().getProductList())) {
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean product : createPrepayRequestDto.getFatherOrderBean().getProductList()) {
ProductVO productBean = new ProductVO();
productBean.setId(product.getProductId());
productBean.setQuantity(product.getNumber());
productBean.setSeq(product.getSequence());
productBean.setSalesType("NORMAL");
productBean.setPrice(product.getPrice());
productBean.setName(product.getProductName());
productVOS.add(productBean);
}
}
orderPayDto.setProducts(productVOS);
List<PayPlatformVO> platforms = new ArrayList<>();
if(null != createPrepayRequestDto.getOrderPayItemCreateReqList() && createPrepayRequestDto.getOrderPayItemCreateReqList().size()>0){
for (OrderPayItemCreateReq orderPayItemCreateReq : createPrepayRequestDto.getOrderPayItemCreateReqList()) {
PayPlatformVO payPlatformVO = new PayPlatformVO();
payPlatformVO.setAmount(orderPayItemCreateReq.getPayAmount().longValue());
payPlatformVO.setEbcode(orderPayItemCreateReq.getPayEbCode());
platforms.add(payPlatformVO);
}
}
orderPayDto.setPlatforms(platforms);
orderPayDto.setOut_order_no(createPrepayRequestDto.getFatherOrderBean().getOid());
orderPayDto.setCardCode(createPrepayRequestDto.getCardCode());
return orderPayDto;
}
/**
* 混合支付返回的支付参数
* @param payPlatforms
* @return
*/
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.setMsg("succ");
responseDto.setPayEbcode(payPlatform.getEbCode());
responseDto.setPayId("");
OrderPayResponse.PayOrderBean payBean = new OrderPayResponse.PayOrderBean();
payBean.setAppid(payPlatform.getAppId());
payBean.setNonceStr(payPlatform.getNonceStr());
payBean.setPackageX(payPlatform.get_package());
payBean.setSign(payPlatform.getPaySign());
payBean.setSignType(payPlatform.getPaySignType());
payBean.setTimestamp(payPlatform.getTimestamp());
payBean.setAliPayOrder(payPlatform.getAliPayOrder());
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;
}
} }
...@@ -17,6 +17,7 @@ public class ResponseCodeConstant { ...@@ -17,6 +17,7 @@ public class ResponseCodeConstant {
// 电子风味卡,密码错误或者余额不足,需要特殊处理 // 电子风味卡,密码错误或者余额不足,需要特殊处理
public final static String PASSWORD_WRONG = "8200407"; public final static String PASSWORD_WRONG = "8200407";
public final static String NOT_SUFFICIENT_FUND = "8200407"; public final static String NOT_SUFFICIENT_FUND = "8200407";
public final static Integer PAYMENT_RESPONSE_SUCCESS = 200;
private final static Set<Object> successResponseCodeSet = new HashSet<>(); private final static Set<Object> successResponseCodeSet = new HashSet<>();
......
...@@ -9,6 +9,9 @@ import lombok.Data; ...@@ -9,6 +9,9 @@ import lombok.Data;
import java.util.List; import java.util.List;
import java.math.BigDecimal;
import java.util.List;
@Data @Data
public class CreatePrepayRequestDto { public class CreatePrepayRequestDto {
/** /**
...@@ -72,4 +75,13 @@ public class CreatePrepayRequestDto { ...@@ -72,4 +75,13 @@ public class CreatePrepayRequestDto {
private CreateOrderVo.UnionPayCard unionPayCard; private CreateOrderVo.UnionPayCard unionPayCard;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList; private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
/**
* svc支付金额
*/
private BigDecimal svcAmount;
/**
* 现金支付金额
*/
private BigDecimal cashAmount;
private String storeId;
} }
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderPayResponseDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/5/25 17:10
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.entities.dto.pay;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.List;
@NoArgsConstructor
@Data
@ToString
public class CombPayResponse {
private int code;
@ApiModelProperty(value = "提示信息")
private String msg;
private PayPlatforms data;
@Data
public static class PayPlatforms {
private List<PayPlatform> payPlatformResponseList;
}
@Data
static public class PayPlatform {
@ApiModelProperty(value = "app_id编号(微信使用)")
private String appId;
@ApiModelProperty(value = "支付渠道编号")
private String ebCode;
//@ApiModelProperty(value = "验签可配置")
private String sign;
@ApiModelProperty(value = "非码交易流水号")
private String fmTradeNo;
@ApiModelProperty(value = "随机字符串(微信使用)")
private String nonceStr;
@ApiModelProperty(value = "外部交易流水号,由上游系统生成,需保证唯一")
private String outOrderNo;
@ApiModelProperty(value = "包名(微信使用)")
@JsonProperty("package")
private String _package;
@ApiModelProperty(value = "支付帐号")
private String payAccount;
@ApiModelProperty(value = "签名(微信使用)")
private String paySign;
@ApiModelProperty(value = "签名类型(微信使用)")
private String paySignType;
@ApiModelProperty(value = "支付渠道描述")
private String platformDesc;
@ApiModelProperty(value = "第三方支付交易序号")
private String platformTradeNo;
@ApiModelProperty(value = "预订单编号")
private String prepayId;
@ApiModelProperty(value = "时间戳(微信使用)")
private String timestamp;
@ApiModelProperty(value = "间联单号")
private String transId;
@ApiModelProperty(value = "支付宝秘钥参数")
private String aliPayOrder;
}
}
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.UserDeliveryInfoDto; import cn.freemud.entities.dto.UserDeliveryInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -25,6 +26,8 @@ import javax.validation.Valid; ...@@ -25,6 +26,8 @@ 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.util.ArrayList; import java.util.ArrayList;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -257,6 +260,18 @@ public class CreateOrderVo { ...@@ -257,6 +260,18 @@ public class CreateOrderVo {
private UnionPayCard unionPayCard; private UnionPayCard unionPayCard;
/** /**
* 混合支付
*/
private List<OrderPayItemCreateReq> orderPayItemCreateReqList = new ArrayList<>();
/**
* svc支付金额
*/
private BigDecimal svcAmount;
/**
* 现金支付金额
*/
private BigDecimal cashAmount;
/**
* 电子风味卡 * 电子风味卡
*/ */
@Data @Data
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
*/ */
package cn.freemud.service.impl; package cn.freemud.service.impl;
import cn.freemud.base.constant.Version; import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.StoreConstant; import cn.freemud.constant.StoreConstant;
...@@ -27,11 +27,8 @@ import cn.freemud.manager.StoreTableNumberManager; ...@@ -27,11 +27,8 @@ import cn.freemud.manager.StoreTableNumberManager;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import cn.freemud.service.adapter.OrderCheckAdapter; import cn.freemud.service.adapter.OrderCheckAdapter;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StockClient;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappConfig;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
...@@ -39,7 +36,6 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp ...@@ -39,7 +36,6 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest; import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.request.StatisticalPropertyRequest; import com.freemud.application.sdk.api.membercenter.request.StatisticalPropertyRequest;
...@@ -47,6 +43,10 @@ import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberI ...@@ -47,6 +43,10 @@ import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberI
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse; import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService; import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService; import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest; import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse; import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse;
...@@ -62,6 +62,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -62,6 +62,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.awt.geom.Point2D; import java.awt.geom.Point2D;
import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -100,14 +101,15 @@ public class CheckOrder { ...@@ -100,14 +101,15 @@ public class CheckOrder {
// private OrderAdapter orderAdapter; // private OrderAdapter orderAdapter;
@Autowired @Autowired
private StoreServiceImpl storeService; private StoreServiceImpl storeService;
@Autowired
private StockClient stockClient;
@Autowired
private ItemServiceImpl itemService;
@Autowired @Autowired
private CouponService couponService; private CouponService couponService;
private static Gson gson = new Gson(); private static Gson gson = new Gson();
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private OrderAdapter orderAdapter;
/** /**
* 下单会员相关校验 * 下单会员相关校验
*/ */
...@@ -782,4 +784,44 @@ public class CheckOrder { ...@@ -782,4 +784,44 @@ public class CheckOrder {
// } // }
} }
/**
* 混合支付
* @param createOrderVo
* @param shoppingCartGoodsDto
* @param trackingNo
* @return
*/
public boolean checkSvcPay(CreateOrderVo createOrderVo,ShoppingCartGoodsDto shoppingCartGoodsDto,String trackingNo) {
if (StringUtils.isBlank(createOrderVo.getCardCode())) {
return false;
}
SVCCardAmountRequest request = new SVCCardAmountRequest();
request.setPartnerId(createOrderVo.getPartnerId());
request.setCardCodes(Arrays.asList(createOrderVo.getCardCode()));
BaseResponse<SVCCardAmountResponse> svcCardAmount = paymentNewService.querySVCCardAmount(request, trackingNo);
if (svcCardAmount==null || svcCardAmount.getData()==null ||!ResponseResult.SUCCESS.getCode().equals(svcCardAmount.getCode())) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
Integer svcAmount = 0 ;
Integer svcVAmount = 0 ;
Long totalVAmount = shoppingCartGoodsDto.getTotalAmount();
if (svcCardAmount.getData().getData().getCardSimpleInfos().size()>0) {
svcAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getAmount();
svcVAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getVamount();
//todo : svc卡的金额小于订单金额
if(svcAmount + svcVAmount >0 && totalVAmount> svcAmount + svcVAmount){
BigDecimal total = new BigDecimal(totalVAmount);
BigDecimal svcAmounts = new BigDecimal(svcAmount + svcVAmount);
BigDecimal cashAmout = total.subtract(svcAmounts);
createOrderVo.setOrderPayItemCreateReqList(orderAdapter.setOrderPayItem(cashAmout,svcAmounts,createOrderVo.getPayChannelType()));
createOrderVo.setPayChannelType(PayChannelType.COMB.getIndex());
createOrderVo.setCashAmount(cashAmout);
createOrderVo.setSvcAmount(svcAmounts);
return true;
}
}
return false;
}
} }
...@@ -183,7 +183,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -183,7 +183,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
} }
try { try {
ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message); ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message);
// 通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值 // 蜜雪专用:通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值
String orderId = redisCache.getValue(RedisUtil.getPaymentTransIdOrderKey(confirmOrderDto.getOrderId())); String orderId = redisCache.getValue(RedisUtil.getPaymentTransIdOrderKey(confirmOrderDto.getOrderId()));
if (StringUtils.isNotBlank(orderId)) { if (StringUtils.isNotBlank(orderId)) {
log.info("从缓存中获取的订单数据,trackingNo:{},transId:{},orderId:{}", LogTreadLocal.getTrackingNo(), confirmOrderDto.getOrderId(), orderId); log.info("从缓存中获取的订单数据,trackingNo:{},transId:{},orderId:{}", LogTreadLocal.getTrackingNo(), confirmOrderDto.getOrderId(), orderId);
......
...@@ -38,6 +38,7 @@ import cn.freemud.entities.dto.order.CreateOrderOperateDto; ...@@ -38,6 +38,7 @@ import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.FacePayRequestDto; import cn.freemud.entities.dto.order.FacePayRequestDto;
import cn.freemud.entities.dto.order.FacePayResponseDto; import cn.freemud.entities.dto.order.FacePayResponseDto;
import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.product.AttributeValue; import cn.freemud.entities.dto.product.AttributeValue;
import cn.freemud.entities.dto.product.GroupDetail; import cn.freemud.entities.dto.product.GroupDetail;
import cn.freemud.entities.dto.product.ProductAttributeGroup; import cn.freemud.entities.dto.product.ProductAttributeGroup;
...@@ -48,10 +49,7 @@ import cn.freemud.entities.vo.*; ...@@ -48,10 +49,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.BuriedPointService; import cn.freemud.service.*;
import cn.freemud.service.CouponActivityService;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice;
import cn.freemud.service.thirdparty.*; import cn.freemud.service.thirdparty.*;
import cn.freemud.utils.*; import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -79,17 +77,16 @@ import com.freemud.application.sdk.api.log.ErrorLog; ...@@ -79,17 +77,16 @@ import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
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.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq; import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq; import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp; import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse; import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest; import com.freemud.application.sdk.api.paymentcenter.client.request.CodePayRequest;
...@@ -114,6 +111,7 @@ import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushServic ...@@ -114,6 +111,7 @@ import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushServic
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter; import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus; import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import com.freemud.sdk.api.assortment.order.request.payment.UnifiedOrderApplicationRequest; import com.freemud.sdk.api.assortment.order.request.payment.UnifiedOrderApplicationRequest;
import com.freemud.sdk.api.assortment.order.response.order.*; import com.freemud.sdk.api.assortment.order.response.order.*;
import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse; import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
...@@ -262,6 +260,12 @@ public class OrderServiceImpl implements Orderservice { ...@@ -262,6 +260,12 @@ public class OrderServiceImpl implements Orderservice {
@Autowired @Autowired
private RedisTemplate redisTemplate; private RedisTemplate redisTemplate;
@Autowired
private CustomerExtendClient extendClient;
@Autowired
private ComPayClient comPayClient;
@Override @Override
public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) { public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
String trackingNo = LogTreadLocal.getTrackingNo(); String trackingNo = LogTreadLocal.getTrackingNo();
...@@ -318,6 +322,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -318,6 +322,9 @@ public class OrderServiceImpl implements Orderservice {
ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrder.getShoppingCartGoodsDto(createOrderVo); ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrder.getShoppingCartGoodsDto(createOrderVo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件 // 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo); Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto, trackingNo);
OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo, shoppingCartGoodsDto);
boolean svcPay = checkOrder.checkSvcPay(createOrderVo, shoppingCartGoodsDto, trackingNo);
OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo); OrderExtInfoDto extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo);
//1.9.2套餐需求同步优化创建订单代码 //1.9.2套餐需求同步优化创建订单代码
BaseResponse createOrderOperateDtoResponse = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto); BaseResponse createOrderOperateDtoResponse = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto);
...@@ -325,26 +332,15 @@ public class OrderServiceImpl implements Orderservice { ...@@ -325,26 +332,15 @@ public class OrderServiceImpl implements Orderservice {
return createOrderOperateDtoResponse; return createOrderOperateDtoResponse;
} }
CreateOrderOperateDto createOrderOperateDto = (CreateOrderOperateDto)createOrderOperateDtoResponse.getResult(); CreateOrderOperateDto createOrderOperateDto = (CreateOrderOperateDto)createOrderOperateDtoResponse.getResult();
//创建支付 ,混合支付走单独的逻辑,其他的都单独逻辑
// 设置集点值
/*
ShoppingCartGoodsDto.SendPoint sendPoint = shoppingCartGoodsDto.getSendPoint();
if (sendPoint != null){
redisCache.save(RedisKeyConstant.KGD_SENDPOINT_ORDERID + createOrderOperateDto.getFatherOrderBean().getOid(), sendPoint, 1L, TimeUnit.DAYS);
}
*/
//创建支付 //创建支付
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto, createOrderVo, createOrderOperateDto, extInfo); CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto, createOrderVo, createOrderOperateDto, extInfo);
if(null != createOrderVo.getPayChannelType() && createOrderVo.getPayChannelType().equals(PayChannelType.COMB.getIndex())) { if (svcPay) {
log.info("createCombpayOrder {}" + JsonUtil.toJSONString(createPrepayRequestDto)); return this.createCombpayOrder(createPrepayRequestDto);
createPrepayRequestDto.setOrderPayItemCreateReqList(createOrderVo.getOrderPayItemCreateReqList()); }
createPrepayRequestDto.setPayCode(createOrderVo.getPayChannelType().toString()); else {
return this.createCombpayOrder(createPrepayRequestDto); return this.createPrepayOrder(createPrepayRequestDto);
}else{
log.info("createPrepayOrder {}" + JsonUtil.toJSONString(createPrepayRequestDto));
return this.createPrepayOrder(createPrepayRequestDto);
} }
} }
/** /**
...@@ -388,9 +384,29 @@ public class OrderServiceImpl implements Orderservice { ...@@ -388,9 +384,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());
...@@ -2615,6 +2631,12 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2615,6 +2631,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(),
...@@ -3188,4 +3210,128 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3188,4 +3210,128 @@ public class OrderServiceImpl implements Orderservice {
} }
return mealCodeRule; return mealCodeRule;
} }
/**
* 创建混合支付预支付
*/
public BaseResponse createCombpayOrder(CreatePrepayRequestDto createPrepayRequestDto) {
CreateOrderResponseVo createOrderResponse;
OrderPayResponse orderPayResponse = null;
PaymentRequest paymentRequest = orderBodyConvertToPaymentBody(createPrepayRequestDto.getOpenId()
, createPrepayRequestDto.getPartnerId()
, createPrepayRequestDto.getWxAppId()
, null);
long totalAmount = createPrepayRequestDto.getTotalAmount();
String cardCode = createPrepayRequestDto.getCardCode();
if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
}
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = comPayOrder(paymentRequest,createPrepayRequestDto,partnerPayOvertime,LogThreadLocal.getTrackingNo());
if (orderPayResponse == null || Objects.isNull(orderPayResponse.getFmId())) {
return failPreOrderPay(LogThreadLocal.getTrackingNo()
, createPrepayRequestDto.getProductOrderBean()
, cardCode
, createPrepayRequestDto.getOrderClient()
, Objects.isNull(orderPayResponse) ? null : orderPayResponse.getMsg());
}
createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, createPrepayRequestDto.getProductOrderBean());
BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, createPrepayRequestDto.getOrderExtInfoDTO(), createPrepayRequestDto.getProductOrderBean(), LogThreadLocal.getTrackingNo());
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);
} else {
//如果是商品券支付0元,调用回调接口
PaysuccessNoticeMessage message = new PaysuccessNoticeMessage();
message.setResult_code(100);
message.setOut_trade_no(createOrderResponse.getFmId());
message.setTrans_id(createOrderResponse.getOid());
message.setTotal_fee(0);
message.setOpenid(createPrepayRequestDto.getOpenId());
message.setPlatform_coupon(0);
message.setMerchant_coupon(0);
orderAdapterService.paySuccessCallback(message);
return ResponseUtil.success(createOrderResponse);
}
}
/**
* 创建混合支付
* @param paymentRequest
* @param createPrepayRequestDto
* @param partnerPayOvertime
* @return
*/
private OrderPayResponse comPayOrder(PaymentRequest paymentRequest
, CreatePrepayRequestDto createPrepayRequestDto
, String partnerPayOvertime
, String trackingNo) {
OrderPayResponse orderPayResponse = null;
CombPayResponse responseBase = null;
CombPayRequest combPayRequest = null;
try {
combPayRequest = orderAdapter.convent2CombPayOrderRequest(paymentRequest,createPrepayRequestDto,partnerPayOvertime);
responseBase = comPayClient.combPay(combPayRequest,combPayRequest.getPartner_id());
if (!ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(responseBase.getCode())|| responseBase.getData().getPayPlatformResponseList().size()==0) {
log.info("混合支付返回信息错误,trackingNo:{} request:{} response:{}",trackingNo, JSONObject.toJSONString(combPayRequest), JSONObject.toJSONString(responseBase));
orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg(responseBase.getMsg());
}
else {
/**
* 生成预支付参数
*/
CombPayResponse.PayPlatform payPlatform = responseBase.getData().getPayPlatformResponseList()
.stream()
.filter(f -> !PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
.orElse(null);
if(payPlatform==null) {
orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg("提取现金支付失败");
}
else {
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(responseBase.getData().getPayPlatformResponseList(),createPrepayRequestDto.getPartnerId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setPartnerId(createPrepayRequestDto.getPartnerId());
orderPayResponse.setOrderId(createPrepayRequestDto.getTransId());
/**
* 加入轮训队列
*/
//putDelMq(createPrepayRequestDto.getPartnerId()
// , createPrepayRequestDto.getStoreId()
// , orderPayResponse.getFmId()
// ,createPrepayRequestDto.getTransId()
// , PayChannelType.getByEbcode(payPlatform.getEbCode()).getIndex().intValue());
}
}
}
catch (Exception e) {
//TODO 邮件告警
LogUtil.error("comPay_error", JSONObject.toJSONString(responseBase), JSONObject.toJSONString(paymentRequest), e);
orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg("comPay_error");
}
return orderPayResponse;
}
} }
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: PaymentClient
* @Package cn.freemud.service.thirdparty
* @Description: 支付服务
* @author: liming.guo
* @date: 2018/5/12519:24
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.pay.CombPayResponse;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "payment-center-application-api",url="${saas.paymentcenter.application.api.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface ComPayClient {
/**
* 统一下单
*/
@PostMapping("/payment/application/pay")
CombPayResponse combPay(@RequestBody CombPayRequest combPayRequest, @RequestHeader("partnerId") String partnerId);
}
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;
}
package com.freemud.application.sdk.api.ordercenter.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum PayChannelType {
WECHAT((byte)1,"10211","微信"),
SVC((byte)2,"10102","储值卡"),
ALIPAY((byte)3,"10300","支付宝"),
COMB((byte)4,"","混合支付"),
USVCP((byte)5,"10556", "电子风味卡支付");
private Byte index;
private String ebcode;
private String name;
public static final String API_DESC = "订单支付渠道类型 1:微信 2:储值卡 3:支付宝 4:混合支付,5:电子风味卡支付";
public static PayChannelType getByIndex(byte index) {
for (PayChannelType payType : values()) {
if (payType.getIndex().equals(index)) {
return payType;
}
}
return null;
}
public static PayChannelType getByEbcode(String ebcode) {
for (PayChannelType payType : values()) {
if (payType.getEbcode().equals(ebcode)) {
return payType;
}
}
return null;
}
}
...@@ -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;
} }
package com.freemud.application.sdk.api.ordercenter.request.create; package com.freemud.application.sdk.api.ordercenter.request.create;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
...@@ -21,9 +23,13 @@ public class OrderPayItemCreateReq { ...@@ -21,9 +23,13 @@ public class OrderPayItemCreateReq {
private String storeId; private String storeId;
private String payChannelType; private Integer payChannelType;
private String payChannelName; private String payChannelName;
/**
* 支付渠道码
*/
private String payEbCode;
private String operator; private String operator;
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
package com.freemud.application.sdk.api.ordercenter.response.orderInfo; package com.freemud.application.sdk.api.ordercenter.response.orderInfo;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderTraceInfoResp;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -158,7 +157,7 @@ public class OrderInfoReqs { ...@@ -158,7 +157,7 @@ public class OrderInfoReqs {
//门店订单序号 //门店订单序号
private Integer daySeq; private Integer daySeq;
//订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单 //订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单
private Integer marketingType; private Integer marketingType;
//销售类型对应的场景值 //销售类型对应的场景值
...@@ -271,4 +270,9 @@ public class OrderInfoReqs { ...@@ -271,4 +270,9 @@ public class OrderInfoReqs {
//支付渠道类型 //支付渠道类型
private String payChannelType; private String payChannelType;
} /**
\ No newline at end of file * 支付信息
*/
private List<OrderPayItemReqs> orderPayItemCreateReqList;
}
package com.freemud.application.sdk.api.ordercenter.response.orderInfo;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: com.freemud.application.sdk.api.ordercenter.request OrderPayItemReq
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/5
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
public class OrderPayItemReqs {
private Long id;
private Long orderId;
/**
* 订单号
*/
private String orderCode;
/**
* 商户号
*/
private String partnerId;
/**
* 门店ID
*/
private String storeId;
/**
* 支付类型
*/
private Integer payChannelType;
private String ebCode;
private String payChannelName;
/**
* 支付交易号
*/
private String orderPayItemCode;
private BigDecimal payAmount;
}
...@@ -145,6 +145,10 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -145,6 +145,10 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
* 麦咖啡-咖啡月卡价格 * 麦咖啡-咖啡月卡价格
*/ */
private Long payCardFee; private Long payCardFee;
/**
* svc卡支付金额
*/
private BigDecimal svcPayAmount;
private Integer version; private Integer version;
......
...@@ -1639,10 +1639,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1639,10 +1639,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (response.getData() == null || response.getData().getData() == null || response.getData().getData().getCardSimpleInfos().size() > 1) { if (response.getData() == null || response.getData().getData() == null || response.getData().getData().getCardSimpleInfos().size() > 1) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
//获取实际配送费,配送费不 //获取实际配送费
Integer deliveryAmount = 0; Integer deliveryAmount = 0;
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) { if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
// Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId); //Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId);
deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue(); deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount; orderAmount += deliveryAmount;
} }
...@@ -1650,15 +1650,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1650,15 +1650,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount(); Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
BigDecimal svcPayAmount = BigDecimal.ZERO; BigDecimal svcPayAmount = BigDecimal.ZERO;
//本金+赠送金额
if (orderAmount > amount1 + vamount) { if (orderAmount > amount1 + vamount) {
//throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
svcPayAmount = new BigDecimal(amount1 + vamount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); svcPayAmount = new BigDecimal(amount1 + vamount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
shoppingCartGoodsResponseVo.setTotalAmount(orderAmount - svcPayAmount.multiply(new BigDecimal(100)).longValue()); shoppingCartGoodsResponseVo.setTotalAmount(orderAmount - svcPayAmount.multiply(new BigDecimal(100)).longValue());
}else{ }
else {
svcPayAmount = new BigDecimal(orderAmount - deliveryAmount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); svcPayAmount = new BigDecimal(orderAmount - deliveryAmount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
shoppingCartGoodsResponseVo.setTotalAmount(deliveryAmount.longValue()); shoppingCartGoodsResponseVo.setTotalAmount(deliveryAmount.longValue());
} }
shoppingCartGoodsResponseVo.setSvcPayAmount(svcPayAmount); shoppingCartGoodsResponseVo.setSvcPayAmount(svcPayAmount);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + svcPayAmount); shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + svcPayAmount);
//BigDecimal bigDecimal = new BigDecimal(orderAmount);
//String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
//shoppingCartGoodsResponseVo.setTotalAmount(0L);
//shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr);
} }
/** /**
......
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