Commit 49f8814b by xiaoer.li@freemud.com

Merge branch 'feature/2020-1104-混合支付' into qa

# 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/PayPlatformVO.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
parents 323272d4 0150fc7d
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,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.7.RELEASE</version> <version>2.3.RELEASE</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -1170,10 +1170,30 @@ public class OrderSdkAdapter { ...@@ -1170,10 +1170,30 @@ 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()));
}
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()));
...@@ -1324,9 +1344,6 @@ public class OrderSdkAdapter { ...@@ -1324,9 +1344,6 @@ public class OrderSdkAdapter {
case "MEMBER_PRICE_DISCOUNT": case "MEMBER_PRICE_DISCOUNT":
type=220; type=220;
break; break;
case "GATHER_SPOT":
type=221;
break;
default: default:
break; break;
} }
...@@ -1607,9 +1624,6 @@ public class OrderSdkAdapter { ...@@ -1607,9 +1624,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;
} }
......
...@@ -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;
...@@ -48,7 +48,6 @@ public class BaseCreateOrderRequest extends BaseConfig { ...@@ -48,7 +48,6 @@ public class BaseCreateOrderRequest extends BaseConfig {
* 用户电话 * 用户电话
*/ */
private String phone; private String phone;
/** /**
* 收货地址 非必填 * 收货地址 非必填
*/ */
...@@ -169,7 +168,7 @@ public class BaseCreateOrderRequest extends BaseConfig { ...@@ -169,7 +168,7 @@ public class BaseCreateOrderRequest extends BaseConfig {
* 收货地址Id * 收货地址Id
*/ */
private String receiveId; private String receiveId;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
@Data @Data
public static class DeliveryTypeInfo { public static class DeliveryTypeInfo {
/** /**
...@@ -223,6 +222,5 @@ public class BaseCreateOrderRequest extends BaseConfig { ...@@ -223,6 +222,5 @@ public class BaseCreateOrderRequest extends BaseConfig {
private Integer validityDateDays; private Integer validityDateDays;
} }
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
} }
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";
}
...@@ -6,5 +6,6 @@ import lombok.Data; ...@@ -6,5 +6,6 @@ import lombok.Data;
public class PayPlatformVO { public class PayPlatformVO {
private String ebcode; private String ebcode;
private Long amount; private Long amount;
private String clientCode;
} }
...@@ -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;
......
...@@ -410,6 +410,11 @@ public class QueryOrdersResponse { ...@@ -410,6 +410,11 @@ public class QueryOrdersResponse {
private String downstreamThirdOrderCode; private String downstreamThirdOrderCode;
/**
* 混合支付list
*/
private List<OrderPayItem> orderPayItem;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class AddDeliveryInfo { public static class AddDeliveryInfo {
...@@ -746,6 +751,23 @@ public class QueryOrdersResponse { ...@@ -746,6 +751,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
...@@ -78,12 +83,19 @@ public class OrderPayResponse { ...@@ -78,12 +83,19 @@ public class OrderPayResponse {
private String nonceStr; private String nonceStr;
/**
* 签名
*/
private String sign; private String sign;
private String timestamp; private String timestamp;
/**
* 签名方式
*/
private String signType; private String signType;
private String aliPayOrder; private String aliPayOrder;
} }
} }
...@@ -695,6 +695,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -695,6 +695,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);
} }
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<dependency> <dependency>
<groupId>com.freemud.sdk.api.assortment</groupId> <groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-orderdistributor-sdk</artifactId> <artifactId>assortment-orderdistributor-sdk</artifactId>
<version>2.4.3-SNAPSHOT</version> <version>2.4.4-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.1.8-SNAPSHOT</version> <version>2.0.2-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
...@@ -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.7.RELEASE</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.1-SNAPSHOT</version> <version>3.1.9.RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
...@@ -119,7 +119,7 @@ ...@@ -119,7 +119,7 @@
<dependency> <dependency>
<artifactId>assortment-data-manager</artifactId> <artifactId>assortment-data-manager</artifactId>
<groupId>com.freemud.sdk.api.assortment</groupId> <groupId>com.freemud.sdk.api.assortment</groupId>
<version>5.2.7.RELEASE</version> <version>5.1.1-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud.commons</groupId> <groupId>cn.freemud.commons</groupId>
......
...@@ -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<>();
......
...@@ -7,6 +7,7 @@ import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCr ...@@ -7,6 +7,7 @@ import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCr
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@Data @Data
...@@ -72,4 +73,13 @@ public class CreatePrepayRequestDto { ...@@ -72,4 +73,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 fmTradeNo;
@ApiModelProperty(value = "随机字符串(微信使用)")
private String nonceStr;
@ApiModelProperty(value = "外部交易流水号,由上游系统生成,需保证唯一")
private String outOrderNo;
@ApiModelProperty(value = "支付帐号")
private String payAccount;
@ApiModelProperty(value = "第三方支付交易序号")
private String platformTradeNo;
@ApiModelProperty(value = "间联单号")
private String transId;
@ApiModelProperty(value = "")
private PayOrderBean payOrder;
@Data
public static class PayOrderBean {
/**
* appid : wx3ab08e23966343fe
* package : prepay_id=wx25143630149413bcd9fbad100070370076
* nonce_str : -610630281
* sign : D320B2B74D858EBE16841F43AE70E757
* timestamp : 1527230190
* signType : MD5
*/
private String appId;
@JsonProperty("package")
private String packageX;
//@JsonProperty("nonce_str")
private String nonceStr;
/**
* 支付签名
*/
private String paySign;
private String timeStamp;
/**
* 加密方式
*/
private String signType;
private String aliPayOrder;
}
}
}
...@@ -14,10 +14,8 @@ package cn.freemud.entities.vo; ...@@ -14,10 +14,8 @@ package cn.freemud.entities.vo;
import cn.freemud.entities.dto.UserDeliveryInfoDto; import cn.freemud.entities.dto.UserDeliveryInfoDto;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto; import cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
...@@ -25,7 +23,6 @@ import org.hibernate.validator.constraints.NotEmpty; ...@@ -25,7 +23,6 @@ import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.Valid; 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.List; import java.util.List;
......
...@@ -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;
...@@ -21,19 +21,14 @@ import cn.freemud.entities.dto.order.BusinessDate; ...@@ -21,19 +21,14 @@ import cn.freemud.entities.dto.order.BusinessDate;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto; import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.CouponFlag; import cn.freemud.enums.*;
import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.manager.StoreTableNumberManager; 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;
...@@ -41,7 +36,6 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp ...@@ -41,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;
...@@ -49,12 +43,15 @@ import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberI ...@@ -49,12 +43,15 @@ 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;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import cn.freemud.enums.CouponReqTypeEnum;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -65,6 +62,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -65,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.*;
...@@ -103,14 +101,15 @@ public class CheckOrder { ...@@ -103,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;
/** /**
* 下单会员相关校验 * 下单会员相关校验
*/ */
...@@ -738,4 +737,43 @@ public class CheckOrder { ...@@ -738,4 +737,43 @@ 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,Byte.parseByte(createOrderVo.getChannel())));
createOrderVo.setPayChannelType(PayChannelType.COMB.getIndex());
createOrderVo.setCashAmount(cashAmout);
createOrderVo.setSvcAmount(svcAmounts);
return true;
}
}
return false;
}
} }
...@@ -214,8 +214,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -214,8 +214,8 @@ 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(message.getTrans_id()));
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);
confirmOrderDto.setOrderId(orderId); confirmOrderDto.setOrderId(orderId);
......
/**
* 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","微信"),
ALIPAY((byte)2,"10300","支付宝"),
SVC((byte)3,"10102","储值卡"),
COMB((byte)4,"10212","混合支付"),
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;
} }
...@@ -214,6 +214,6 @@ public class CreateOrderRequest extends BaseRequest { ...@@ -214,6 +214,6 @@ public class CreateOrderRequest extends BaseRequest {
private String appId; private String appId;
private Byte payChannelType; private Byte payChannelType;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList; private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
} }
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 lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
@Data @Data
public class OrderPayItemCreateReq { public class OrderPayItemCreateReq {
...@@ -21,9 +16,13 @@ public class OrderPayItemCreateReq { ...@@ -21,9 +16,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;
...@@ -271,4 +270,9 @@ public class OrderInfoReqs { ...@@ -271,4 +270,9 @@ public class OrderInfoReqs {
//支付渠道类型 //支付渠道类型
private String payChannelType; private String payChannelType;
/**
* 支付信息
*/
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;
}
...@@ -15,6 +15,7 @@ package cn.freemud.entities.vo; ...@@ -15,6 +15,7 @@ package cn.freemud.entities.vo;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@Data @Data
...@@ -140,6 +141,10 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -140,6 +141,10 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
* 麦咖啡-咖啡月卡价格 * 麦咖啡-咖啡月卡价格
*/ */
private Long payCardFee; private Long payCardFee;
/**
* svc卡支付金额
*/
private BigDecimal svcPayAmount;
/** /**
* 各类券信息 * 各类券信息
......
...@@ -1653,20 +1653,32 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1653,20 +1653,32 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
//获取实际配送费 //获取实际配送费
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);
Integer deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue(); deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount; orderAmount += deliveryAmount;
} }
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
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;
//本金+赠送金额
if (orderAmount > amount1 + vamount) { if (orderAmount > amount1 + vamount) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY); //throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
svcPayAmount = new BigDecimal(amount1 + vamount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
shoppingCartGoodsResponseVo.setTotalAmount(orderAmount - svcPayAmount.multiply(new BigDecimal(100)).longValue());
} }
BigDecimal bigDecimal = new BigDecimal(orderAmount); else {
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString(); svcPayAmount = new BigDecimal(orderAmount - deliveryAmount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
shoppingCartGoodsResponseVo.setTotalAmount(0L); shoppingCartGoodsResponseVo.setTotalAmount(deliveryAmount.longValue());
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr); }
shoppingCartGoodsResponseVo.setSvcPayAmount(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