Commit 166357a9 by 胡敬轩

Merge remote-tracking branch 'remotes/origin/feature/Ka2.0.76-0427-0504-多卡支付' into develop

parents 39c32f72 cf731730
package com.freemud.sdk.api.assortment.order.request.payment;
import lombok.Data;
import java.util.List;
@Data
public class MultiPayRequest {
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 Boolean disable_service_goods_tag = false;
private String request_source ="V1";
private String ver ="10";
private String storeName;
private Long merchantDiscount;
/**
* @see com.freemud
* 下单所用小程序类型:1微信,2支付宝,3抖音")
*/
private Integer applicationType;
//储值卡支付列表
private List<String> cardItems;
}
...@@ -21,10 +21,8 @@ import cn.freemud.entities.bo.CreateOrderBONew; ...@@ -21,10 +21,8 @@ import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.order.CreateOrderOperateDto; 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.pay.OrderPayResponse; import cn.freemud.entities.dto.order.UnifiedPayResponseDto;
import cn.freemud.entities.dto.pay.PayProductDto; import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.UnifiedOrderCom;
import cn.freemud.entities.dto.pay.UnifiedOrderRequest;
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;
...@@ -79,6 +77,7 @@ import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO; ...@@ -79,6 +77,7 @@ import com.freemud.sdk.api.assortment.order.entities.promption.SubtractStockVO;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
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.CombPayRequest;
import com.freemud.sdk.api.assortment.order.request.payment.MultiPayRequest;
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.response.order.QueryOrderByIdResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
...@@ -3360,6 +3359,7 @@ public class OrderAdapter { ...@@ -3360,6 +3359,7 @@ public class OrderAdapter {
requestDto.setOpenId( userLoginInfoDto.getOpenId()); requestDto.setOpenId( userLoginInfoDto.getOpenId());
requestDto.setFaceCode(createOrderVo.getFaceCode()); requestDto.setFaceCode(createOrderVo.getFaceCode());
requestDto.setCardCode(createOrderVo.getCardCode()); requestDto.setCardCode(createOrderVo.getCardCode());
requestDto.setCardCodes(createOrderVo.getCardCodes());
requestDto.setPayCode(null); requestDto.setPayCode(null);
requestDto.setFatherOrderBean(createOrderOperateDto.getFatherOrderBean()); requestDto.setFatherOrderBean(createOrderOperateDto.getFatherOrderBean());
requestDto.setProductOrderBean(createOrderOperateDto.getProductOrderBean()); requestDto.setProductOrderBean(createOrderOperateDto.getProductOrderBean());
...@@ -3944,7 +3944,7 @@ public class OrderAdapter { ...@@ -3944,7 +3944,7 @@ public class OrderAdapter {
orderExtInfoDto.setPackageAmountCollectType(shoppingCartGoodsDto.getPackageAmountCollectType()); orderExtInfoDto.setPackageAmountCollectType(shoppingCartGoodsDto.getPackageAmountCollectType());
} }
orderExtInfoDto.setUnDistribution(createOrderVo.getUnDistribution()); // orderExtInfoDto.setUnDistribution(createOrderVo.getUnDistribution());
return orderExtInfoDto; return orderExtInfoDto;
} }
...@@ -4023,4 +4023,73 @@ public class OrderAdapter { ...@@ -4023,4 +4023,73 @@ public class OrderAdapter {
return type; return type;
} }
public List<SvcPayItem> convertSvcPayItem(UnifiedPayResponseDto codePayResponse,String cardCode){
List<SvcPayItem> payItems = new ArrayList<>();
SvcPayItem payItem = new SvcPayItem();
payItem.setCardCode(cardCode);
payItem.setSvcTransId(codePayResponse.getPayTransId());
payItem.setTransId(codePayResponse.getFmId());
payItems.add(payItem);
return payItems;
}
public MultiPayRequest convent2MultiPayOrderRequest(List<String> cardCodes
, OrderBeanV1 orderBean
, PaymentRequest paymentRequest
, String partnerPayOvertime
, String orderClient
, String channel
, Integer totalAmount) {
MultiPayRequest orderPayDto = new MultiPayRequest();
orderPayDto.setEbCode(paymentRequest.getPayCode());
orderPayDto.setPartner_id(orderBean.getCompanyId());
orderPayDto.setBody(paymentRequest.getPrincipalName());
orderPayDto.setNotify_url(paymentRequest.getReverseNotifyiDcUrl());
orderPayDto.setStore_id(orderBean.getShopId());
orderPayDto.setOpen_id(paymentRequest.getOpenId());
String businessDate = com.freemud.application.sdk.api.util.DateUtil.convert2String(new Date(), "yyyyMMdd");
orderPayDto.setBusiness_date(businessDate);
orderPayDto.setAmount(totalAmount.longValue());
orderPayDto.setVip_amount(0L);
orderPayDto.setAppId(paymentRequest.getWxAppId());
orderPayDto.setPayCode(paymentRequest.getPayCode());
orderPayDto.setVer("V1");
orderPayDto.setStoreName(orderBean.getShopName());
orderPayDto.setPayTimeOutTime(StringUtils.defaultIfBlank(partnerPayOvertime, "30"));
List<ProductVO> productVOS = new ArrayList<ProductVO>();
if (CollectionUtils.isNotEmpty(orderBean.getProductList())) {
for (ProductBeanV1 product : orderBean.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.setMerchantDiscount(orderBean.getOriginalAmount().longValue() - orderBean.getAmount());
orderPayDto.setProducts(productVOS);
List<PayPlatformVO> platforms = new ArrayList<>();
PayPlatformVO payPlatformVO = new PayPlatformVO();
payPlatformVO.setClientCode(PayChannelType.SVC.getEbcode());
payPlatformVO.setEbcode(PayChannelType.SVC.getEbcode());
payPlatformVO.setAmount(0L);
platforms.add(payPlatformVO);
String ebcode = PayChannelType.getByIndex(Byte.parseByte(channel)).getEbcode();
payPlatformVO = new PayPlatformVO();
payPlatformVO.setAmount(0L);
payPlatformVO.setClientCode(orderClient);
payPlatformVO.setEbcode(ebcode);
platforms.add(payPlatformVO);
orderPayDto.setPlatforms(platforms);
orderPayDto.setOut_order_no(orderBean.getOid());
orderPayDto.setCardItems(cardCodes);//多卡支付
orderPayDto.setApplicationType(getPayApplicationType(orderBean.getOrderClient()));
return orderPayDto;
}
} }
package cn.freemud.entities;
public class EdenResponse<T> {
private static final String SUCCESSCODE ="200";
protected String statusCode;
protected String message;
protected T result;
public EdenResponse() {
this.statusCode = SUCCESSCODE;
}
public EdenResponse(String statusCode) {
this.statusCode = statusCode;
}
public EdenResponse(String statusCode, String message) {
this.statusCode = statusCode;
this.message = message;
}
public EdenResponse(String ver, String statusCode, T result) {
this.statusCode = statusCode;
this.message = message;
this.result = result;
}
public String getStatusCode() {
return statusCode;
}
public void setStatusCode(String statusCode) {
this.statusCode = statusCode;
}
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public T getResult() {
return this.result;
}
public void setResult(T result) {
this.result = result;
}
}
...@@ -7,6 +7,8 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; ...@@ -7,6 +7,8 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class CreatePrepayRequestDto { public class CreatePrepayRequestDto {
/** /**
...@@ -26,9 +28,15 @@ public class CreatePrepayRequestDto { ...@@ -26,9 +28,15 @@ public class CreatePrepayRequestDto {
*/ */
private String faceCode; private String faceCode;
/** /**
* 会员卡code * 会员卡code 储值卡
*/ */
private String cardCode; private String cardCode;
/**
* 储值卡
*/
private List<String> cardCodes;
/** /**
* 支付渠道码 * 支付渠道码
*/ */
......
...@@ -20,7 +20,7 @@ public class UnifiedPayResponseDto { ...@@ -20,7 +20,7 @@ public class UnifiedPayResponseDto {
private Integer resultCode; private Integer resultCode;
private String resultMsg; private String resultMsg;
private String fmId; private String fmId;
private String payTransId; private String payTransId;//svc交易记录表id
private String payCode; private String payCode;
private String userId; private String userId;
private String originalChannel; private String originalChannel;
......
/**
* 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 MultiPayResponse {
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 platformTradeNo;
@ApiModelProperty(value = "支付金额")
private Integer payAmount;
@ApiModelProperty(value = "间联单号")
private String transId;
//商户单号
private String endTransTradeNo;
//储值卡类型:0一次性卡(礼品卡),3重复使用卡(储值卡)")
private Integer cardType;
@ApiModelProperty(value = "")
private PayOrderBean payOrder;
//卡号 多卡支付multiPay接口返回
private String cardCode;
@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;
}
}
}
...@@ -97,6 +97,12 @@ public class OrderPayResponse { ...@@ -97,6 +97,12 @@ public class OrderPayResponse {
*/ */
private String channelPayId; private String channelPayId;
/**
* 储值卡流水明细 储值卡消费结果通知储值交易服务
*/
private List<SvcPayItem> svcPayItems;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class PayOrderBean { public static class PayOrderBean {
...@@ -131,5 +137,4 @@ public class OrderPayResponse { ...@@ -131,5 +137,4 @@ public class OrderPayResponse {
} }
} }
/**
* 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 lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
//sdk 类迁移
@NoArgsConstructor
@Data
@ToString
public class SvcPayItem {
/**
* 支付流水号
*/
private String transId;
/**
* 卡号
*/
private String cardCode;
/**
* svc交易记录表id
*/
private String svcTransId;
}
package cn.freemud.entities.dto.pay.svc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Auther: Chenbin
* @Description:
* @CreateDate: Created in 10:39 2020/3/19
* @ModifyDate:
*/
@Data
public class ConsumeHistoryCreateRequest {
@ApiModelProperty("商户编号")
private String partnerId;
@ApiModelProperty("订单号")
private String orderCode;
@ApiModelProperty("用户id")
private String memberId;
@ApiModelProperty("门店")
private String storeId;
@ApiModelProperty("储值卡流水号")
private List<String> cardRequestNo;
}
...@@ -290,7 +290,7 @@ public class CreateOrderVo { ...@@ -290,7 +290,7 @@ public class CreateOrderVo {
* *
* 1 表示不分账 ,其他情况 不传值 给基础服务 * 1 表示不分账 ,其他情况 不传值 给基础服务
*/ */
private Integer unDistribution; // private Integer unDistribution;
/** /**
* 是否使用电子风味卡,如果不为空则为使用 * 是否使用电子风味卡,如果不为空则为使用
......
...@@ -12,9 +12,12 @@ ...@@ -12,9 +12,12 @@
*/ */
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.pay.SvcPayItem;
import lombok.Data; import lombok.Data;
import lombok.ToString; import lombok.ToString;
import java.util.List;
@Data @Data
@ToString @ToString
public class NewPaysuccessNoticeMessage { public class NewPaysuccessNoticeMessage {
...@@ -86,4 +89,9 @@ public class NewPaysuccessNoticeMessage { ...@@ -86,4 +89,9 @@ public class NewPaysuccessNoticeMessage {
* 100 是成功 * 100 是成功
*/ */
private String resultCode; private String resultCode;
/**
* 储值卡流水明细
*/
private List<SvcPayItem> payItems;
} }
...@@ -12,9 +12,12 @@ ...@@ -12,9 +12,12 @@
*/ */
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.pay.SvcPayItem;
import lombok.Data; import lombok.Data;
import lombok.ToString; import lombok.ToString;
import java.util.List;
@Data @Data
@ToString @ToString
public class PaysuccessNoticeMessage { public class PaysuccessNoticeMessage {
...@@ -78,4 +81,9 @@ public class PaysuccessNoticeMessage { ...@@ -78,4 +81,9 @@ public class PaysuccessNoticeMessage {
* 消息来源 * 消息来源
*/ */
private Integer source; private Integer source;
/**
* 储值卡流水明细
*/
private List<SvcPayItem> svcPayItems;
} }
...@@ -64,7 +64,7 @@ public class SellCouponCreateOrderVo { ...@@ -64,7 +64,7 @@ public class SellCouponCreateOrderVo {
* <p> * <p>
* 1 表示不分账 ,其他情况 不传值 给基础服务 * 1 表示不分账 ,其他情况 不传值 给基础服务
*/ */
private Integer unDistribution; // private Integer unDistribution;
/** /**
......
...@@ -190,13 +190,13 @@ public class CheckOrder { ...@@ -190,13 +190,13 @@ public class CheckOrder {
} }
//校验会员svc卡信息 //校验会员svc卡信息
List<GetSvcInfoByMemberIdResponseVo> memberCardCode = checkCardCode(createOrderVo.getPartnerId(), userLoginInfoDto.getMemberId(), cardCodes); List<GetSvcInfoByMemberIdResponseVo> memberCardCode = checkCardCode(createOrderVo.getPartnerId(), userLoginInfoDto.getMemberId(), cardCodes);
if (CollectionUtils.isNotEmpty(memberCardCode)) { // if (CollectionUtils.isNotEmpty(memberCardCode)) {
// 【华莱士】【订单C端记录不分账的卡面编号】不让走分账,卡面编号--11840,11845,11846,11853,11854,11855,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11906 // // 【华莱士】【订单C端记录不分账的卡面编号】不让走分账,卡面编号--11840,11845,11846,11853,11854,11855,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11906
long count = memberCardCode.stream().filter(card -> cardCodes.contains(card.getCardCode()) && unDistributions.contains(card.getApplyId())).count(); // long count = memberCardCode.stream().filter(card -> cardCodes.contains(card.getCardCode()) && unDistributions.contains(card.getApplyId())).count();
if (count > 0) { // if (count > 0) {
createOrderVo.setUnDistribution(1); // createOrderVo.setUnDistribution(1);
} // }
} // }
createOrderVo.setUserId(userLoginInfoDto.getMemberId()); createOrderVo.setUserId(userLoginInfoDto.getMemberId());
return userLoginInfoDto; return userLoginInfoDto;
} }
...@@ -205,13 +205,13 @@ public class CheckOrder { ...@@ -205,13 +205,13 @@ public class CheckOrder {
if (StringUtils.isNotBlank(requestVo.getCardCode())) { if (StringUtils.isNotBlank(requestVo.getCardCode())) {
//校验会员svc卡信息 //校验会员svc卡信息
List<GetSvcInfoByMemberIdResponseVo> memberCardCode = checkCardCode(partnerId, memberId, Sets.newHashSet(requestVo.getCardCode())); List<GetSvcInfoByMemberIdResponseVo> memberCardCode = checkCardCode(partnerId, memberId, Sets.newHashSet(requestVo.getCardCode()));
if (CollectionUtils.isNotEmpty(memberCardCode)) { // if (CollectionUtils.isNotEmpty(memberCardCode)) {
// 【华莱士】【订单C端记录不分账的卡面编号】不让走分账,卡面编号--11840,11845,11846,11853,11854,11855,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11906 // // 【华莱士】【订单C端记录不分账的卡面编号】不让走分账,卡面编号--11840,11845,11846,11853,11854,11855,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866,11906
long count = memberCardCode.stream().filter(card -> Sets.newHashSet(requestVo.getCardCode()).contains(card.getCardCode()) && unDistributions.contains(card.getApplyId())).count(); // long count = memberCardCode.stream().filter(card -> Sets.newHashSet(requestVo.getCardCode()).contains(card.getCardCode()) && unDistributions.contains(card.getApplyId())).count();
if (count > 0) { // if (count > 0) {
requestVo.setUnDistribution(1); // requestVo.setUnDistribution(1);
} // }
} // }
} }
} }
...@@ -1252,20 +1252,12 @@ public class CheckOrder { ...@@ -1252,20 +1252,12 @@ public class CheckOrder {
|| responseDTO.getData().size() == 0) { || responseDTO.getData().size() == 0) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
//svc卡无效 List<GetSvcInfoByMemberIdResponseVo> memberDatas = responseDTO.getData().stream().filter(data -> data.getStatusFlag() == 0).collect(Collectors.toList());
boolean b = true; Set<String> memberCardCodes = memberDatas.stream().map(GetSvcInfoByMemberIdResponseVo :: getCardCode).collect(Collectors.toSet());
for (GetSvcInfoByMemberIdResponseVo getSvcInfoByMemberIdResponse : responseDTO.getData()) { if(!memberCardCodes.containsAll(cardCodes)){
for (String cardCode : cardCodes){
if (cardCode.equals(getSvcInfoByMemberIdResponse.getCardCode()) && getSvcInfoByMemberIdResponse.getStatusFlag() == 0) {
b = false;
break;
}
}
}
if (b) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
return responseDTO.getData(); return memberDatas;
} }
public void checkOrderByStore(StoreResponseDto storeResponseDto) { public void checkOrderByStore(StoreResponseDto storeResponseDto) {
......
...@@ -8,8 +8,13 @@ import cn.freemud.entities.bo.CreateOrderBONew; ...@@ -8,8 +8,13 @@ import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.db.OpenPlatformOrderConfig; import cn.freemud.entities.db.OpenPlatformOrderConfig;
import cn.freemud.entities.dto.ConfirmOrderDto; import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.order.CreateCashierOrderDto; import cn.freemud.entities.dto.order.CreateCashierOrderDto;
import cn.freemud.entities.dto.pay.SvcPayItem;
import cn.freemud.entities.dto.pay.svc.ConsumeHistoryCreateRequest;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.*; import cn.freemud.entities.vo.order.CashierCheckResponseVo;
import cn.freemud.entities.vo.order.GetOrderConfigRequestVo;
import cn.freemud.entities.vo.order.PaymentConfigVo;
import cn.freemud.entities.vo.order.PlugInParameter;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.service.handle.SaasOrderHandle; import cn.freemud.management.service.handle.SaasOrderHandle;
...@@ -17,23 +22,24 @@ import cn.freemud.management.thirdparty.OrderCallbackClient; ...@@ -17,23 +22,24 @@ import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.manager.OpenPlatformOrderConfigManager; import cn.freemud.manager.OpenPlatformOrderConfigManager;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.*; import cn.freemud.service.*;
import cn.freemud.service.thirdparty.SvcTransactionClient;
import cn.freemud.service.universal.factory.CreateOrderServiceFactory; import cn.freemud.service.universal.factory.CreateOrderServiceFactory;
import cn.freemud.utils.RedisUtil; import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; 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.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties; import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1; import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo; import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo;
import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus; import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.sdk.api.assortment.order.util.LockUtils; import com.freemud.sdk.api.assortment.order.util.LockUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -45,6 +51,7 @@ import java.util.Arrays; ...@@ -45,6 +51,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
...@@ -139,6 +146,8 @@ public class OrderAdapterServiceImpl { ...@@ -139,6 +146,8 @@ public class OrderAdapterServiceImpl {
private PayServiceImpl payService; private PayServiceImpl payService;
@Autowired @Autowired
private OpenPlatformOrderConfigManager openPlatformOrderConfigManager; private OpenPlatformOrderConfigManager openPlatformOrderConfigManager;
@Autowired
private SvcTransactionClient svcTransactionClient;
//获取下单实现对象 //获取下单实现对象
private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo,CreateOrderVo createOrderVo){ private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo,CreateOrderVo createOrderVo){
...@@ -354,6 +363,11 @@ public class OrderAdapterServiceImpl { ...@@ -354,6 +363,11 @@ public class OrderAdapterServiceImpl {
break; break;
} }
} }
//储值卡订单消费后通知储值交易服务
if(CollectionUtils.isNotEmpty(message.getSvcPayItems())){
sendSvcPayInfoToSvcTransaction(message.getSvcPayItems(),orderBean.getCompanyId(),orderBean.getOid(),orderBean.getUserId(),orderBean.getShopId());
}
return result; return result;
} catch (Exception e) { } catch (Exception e) {
throw e; throw e;
...@@ -433,4 +447,21 @@ public class OrderAdapterServiceImpl { ...@@ -433,4 +447,21 @@ public class OrderAdapterServiceImpl {
return configStr; return configStr;
} }
private void sendSvcPayInfoToSvcTransaction(List<SvcPayItem> svcPayItems,String partnerId,String orderCode,String memberId,String storeId){
ConsumeHistoryCreateRequest request = new ConsumeHistoryCreateRequest();
try {
request.setPartnerId(partnerId);
request.setOrderCode(orderCode);
request.setMemberId(memberId);
request.setStoreId(storeId);
List<String> svcTransIds = svcPayItems.stream().map(SvcPayItem::getSvcTransId).collect(Collectors.toList());
request.setCardRequestNo(svcTransIds);
svcTransactionClient.consumeHistoryCreate(request);
}catch (Exception e){
ErrorLog.printErrorLog("sendSvcPayInfoToSvcTransaction","paySuccessCallback",request,e);
}
}
} }
...@@ -630,6 +630,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -630,6 +630,7 @@ public class OrderServiceImpl implements Orderservice {
message.setRuleId(newMessage.getRuleId()); message.setRuleId(newMessage.getRuleId());
message.setSource(PaySuccessSource.OUTSIDE.getSource()); message.setSource(PaySuccessSource.OUTSIDE.getSource());
message.setThirdPartTradeNo(message.getThirdPartTradeNo()); message.setThirdPartTradeNo(message.getThirdPartTradeNo());
message.setSvcPayItems(newMessage.getPayItems());
String res = orderAdapterService.paySuccessCallback(message); String res = orderAdapterService.paySuccessCallback(message);
JSONObject jsonObject = JSONObject.parseObject(res); JSONObject jsonObject = JSONObject.parseObject(res);
if (jsonObject.containsKey("code")) { if (jsonObject.containsKey("code")) {
...@@ -2545,6 +2546,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2545,6 +2546,7 @@ public class OrderServiceImpl implements Orderservice {
private void preSetPayChannelType(BaseCreateOrderRequest request, CreateOrderVo createOrderVo) { private void preSetPayChannelType(BaseCreateOrderRequest request, CreateOrderVo createOrderVo) {
Long amount = request.getAmount(); Long amount = request.getAmount();
String cardCode = createOrderVo.getCardCode(); String cardCode = createOrderVo.getCardCode();
List<String> cardCodes = createOrderVo.getCardCodes();
CreateOrderUnionPayCardVo unionPayCard = createOrderVo.getUnionPayCard(); CreateOrderUnionPayCardVo unionPayCard = createOrderVo.getUnionPayCard();
if (amount > 0) { if (amount > 0) {
PayChannelType channelType = null; PayChannelType channelType = null;
...@@ -2552,7 +2554,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2552,7 +2554,7 @@ public class OrderServiceImpl implements Orderservice {
if (Objects.nonNull(unionPayCard)) { if (Objects.nonNull(unionPayCard)) {
channelType = PayChannelType.USVCP; channelType = PayChannelType.USVCP;
this.setPrePayChannel(request, channelType); this.setPrePayChannel(request, channelType);
} else if (StringUtils.isNotBlank(cardCode)) { } else if (StringUtils.isNotBlank(cardCode) || CollectionUtils.isNotEmpty(cardCodes)) {
// 储值卡支付 // 储值卡支付
channelType = PayChannelType.SVC; channelType = PayChannelType.SVC;
this.setPrePayChannel(request, channelType); this.setPrePayChannel(request, channelType);
...@@ -2631,7 +2633,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2631,7 +2633,7 @@ public class OrderServiceImpl implements Orderservice {
orderExtInfoDto.setPackageAmountCollectType(shoppingCartGoodsDto.getPackageAmountCollectType()); orderExtInfoDto.setPackageAmountCollectType(shoppingCartGoodsDto.getPackageAmountCollectType());
} }
orderExtInfoDto.setUnDistribution(createOrderVo.getUnDistribution()); // orderExtInfoDto.setUnDistribution(createOrderVo.getUnDistribution());
return orderExtInfoDto; return orderExtInfoDto;
} }
......
...@@ -464,7 +464,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService { ...@@ -464,7 +464,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
orderExtInfoDto.setSessionKey(userLoginInfoDto.getSessionKey()); orderExtInfoDto.setSessionKey(userLoginInfoDto.getSessionKey());
orderExtInfoDto.setFormId(requestVo.getFormId()); orderExtInfoDto.setFormId(requestVo.getFormId());
orderExtInfoDto.setFromAppId(userLoginInfoDto.getWxAppId()); orderExtInfoDto.setFromAppId(userLoginInfoDto.getWxAppId());
orderExtInfoDto.setUnDistribution(requestVo.getUnDistribution()); // orderExtInfoDto.setUnDistribution(requestVo.getUnDistribution());
createPrepayRequestDto.setOrderExtInfoDTO(orderExtInfoDto); createPrepayRequestDto.setOrderExtInfoDTO(orderExtInfoDto);
if (StringUtils.isNotBlank(requestVo.getCardCode()) || createPrepayRequestDto.getTotalAmount() == 0) { if (StringUtils.isNotBlank(requestVo.getCardCode()) || createPrepayRequestDto.getTotalAmount() == 0) {
return ResponseUtil.success(payService.createPrepayOrder(createPrepayRequestDto)); return ResponseUtil.success(payService.createPrepayOrder(createPrepayRequestDto));
......
...@@ -16,9 +16,11 @@ package cn.freemud.service.thirdparty; ...@@ -16,9 +16,11 @@ package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign; import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.constant.ResponseCodeKeyConstant; import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.pay.CombPayResponse; import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.pay.MultiPayResponse;
import cn.freemud.entities.dto.pay.MultiQueryRequest; import cn.freemud.entities.dto.pay.MultiQueryRequest;
import cn.freemud.entities.dto.pay.MultiQueryRespDto; import cn.freemud.entities.dto.pay.MultiQueryRespDto;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest; import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import com.freemud.sdk.api.assortment.order.request.payment.MultiPayRequest;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -44,4 +46,11 @@ public interface ComPayClient { ...@@ -44,4 +46,11 @@ public interface ComPayClient {
@PostMapping("/payment/application/query") @PostMapping("/payment/application/query")
MultiQueryRespDto paymentApplicationQuery(@RequestBody MultiQueryRequest multiQueryRequest, @RequestHeader("partnerId") Integer partnerId); MultiQueryRespDto paymentApplicationQuery(@RequestBody MultiQueryRequest multiQueryRequest, @RequestHeader("partnerId") Integer partnerId);
/**
* 多卡支付统一下单
*/
@LogIgnoreFeign(logMessage="multiPay",messageFieldName= ResponseCodeKeyConstant.MSG)
@PostMapping("/payment/application/multiPay")
MultiPayResponse multiPay(@RequestBody MultiPayRequest multiPayRequest, @RequestHeader("partnerId") String partnerId);
} }
package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.entities.EdenResponse;
import cn.freemud.entities.dto.pay.svc.ConsumeHistoryCreateRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @Auther: hujx
* @Description: 储值交易服务
* @CreateDate: Created in 10:31 2020/3/19
* @ModifyDate:
*/
@FeignClient(name = "transaction-svc-application", url = "${fm.svcTransaction.feign.url:}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface SvcTransactionClient {
/**
* 储值卡订单消费后通知储值交易服务
*/
@PostMapping(value = "/svc/rechargeHistory/reduce")
@LogIgnoreFeign(logMessage="consumeHistoryCreate")
EdenResponse consumeHistoryCreate(ConsumeHistoryCreateRequest request);
}
...@@ -214,7 +214,7 @@ public class OrderExtInfoDto { ...@@ -214,7 +214,7 @@ public class OrderExtInfoDto {
* *
* 1 表示不分账 ,其他情况 不传值 给基础服务 * 1 表示不分账 ,其他情况 不传值 给基础服务
*/ */
private Integer unDistribution; // private Integer unDistribution;
/** /**
......
...@@ -38,4 +38,7 @@ public class OrderPayItemResp { ...@@ -38,4 +38,7 @@ public class OrderPayItemResp {
* 支付交易号 * 支付交易号
*/ */
private String orderPayItemCode; private String orderPayItemCode;
//卡号 多卡支付multiPay接口返回
private String cardCode;
} }
\ No newline at end of file
...@@ -120,6 +120,12 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo { ...@@ -120,6 +120,12 @@ public class ShoppingCartInfoRequestVo extends BaseRequestVo {
* svc 卡支付使用 * svc 卡支付使用
*/ */
private String cardCode; private String cardCode;
/**
* svc 卡支付使用 多卡
*/
private List<String> cardCodes;
/** /**
* 收货地址ID、svc卡支付外卖订单必传 * 收货地址ID、svc卡支付外卖订单必传
*/ */
......
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