Commit a2b3a434 by xiaoer.li@freemud.com

混合支付Beta

parent dd700c49
......@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.24-SNAPSHOT</version>
<version>2.1.2-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -20,7 +20,7 @@
<dependency>
<artifactId>assortment-data-manager</artifactId>
<groupId>com.freemud.sdk.api.assortment</groupId>
<version>3.5.RELEASE</version>
<version>5.2.7.RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
......@@ -38,7 +38,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId>
<version>1.5.2-SNAPSHOT</version>
<version>1.6.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
......@@ -228,6 +228,4 @@ public class BaseCreateOrderRequest extends BaseConfig {
private Integer validityDateDays;
}
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
}
......@@ -418,11 +418,6 @@ public class QueryOrdersResponse {
/**
* 发票明细
*/
private OrderInvoice orderInvoice;
/**
* 混合支付list
*/
private List<OrderPayItem> orderPayItem;
......@@ -565,8 +560,21 @@ public class QueryOrdersResponse {
* 订单商品明细ID,由订单服务生成
*/
private Long id;
/**
* 加购人ID
*/
private String userId;
/**
* 加购人昵称
*/
private String nickName;
/**
* 加购人头像
*/
private String photoUrl;
/**
* 套餐子商品
*/
public List<ProductBean> comboProduct;
......
......@@ -25,7 +25,7 @@
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-orderdistributor-sdk</artifactId>
<version>2.2.2-SNAPSHOT</version>
<version>2.4.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......@@ -40,7 +40,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.24-SNAPSHOT</version>
<version>2.1.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......@@ -60,7 +60,7 @@
<dependency>
<artifactId>promotioncenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId>
<version>2.3.RELEASE</version>
<version>2.6.5.SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
......@@ -119,7 +119,7 @@
<dependency>
<artifactId>assortment-data-manager</artifactId>
<groupId>com.freemud.sdk.api.assortment</groupId>
<version>5.1.1-SNAPSHOT</version>
<version>5.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>cn.freemud.commons</groupId>
......
......@@ -53,6 +53,7 @@ import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPar
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
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.create.OrderPayItemCreateReq;
......@@ -82,6 +83,7 @@ import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.FastDateFormat;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.awt.geom.Point2D;
......@@ -3554,53 +3556,53 @@ public class OrderAdapter {
return StringUtils.isNotBlank(payChannel) && OrderAdapter.PAY_CODE_10102.equalsIgnoreCase(payChannel);
}
/**
* 支付信息转换
*/
public UnifiedOrderApplicationRequest convent2CombPayOrderRequest(List<OrderPayItemCreateReq> orderPayItemCreateReqList, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, Long amount, Integer cardAmount, String partnerPayOvertime) {
UnifiedOrderApplicationRequest orderPayDto = new UnifiedOrderApplicationRequest();
orderPayDto.setEbCode(paymentRequest.getPayCode());
orderPayDto.setPartnerId(orderBean.getCompanyId());
orderPayDto.setBody(paymentRequest.getPrincipalName());
orderPayDto.setNotifyUrl(paymentRequest.getReverseNotifyiDcUrl());
orderPayDto.setStoreId(orderBean.getShopId());
orderPayDto.setOpenId(paymentRequest.getOpenId());
String businessDate = com.freemud.application.sdk.api.util.DateUtil.convert2String(new Date(), "yyyyMMdd");
orderPayDto.setBusinessDate(businessDate);
orderPayDto.setAmount(amount);
orderPayDto.setUndisAmount(1L);
orderPayDto.setVipAmount(Long.valueOf(cardAmount));
orderPayDto.setAppId(paymentRequest.getWxAppId());
orderPayDto.setPayTimeOutTime(StringUtils.defaultIfBlank(partnerPayOvertime, "30"));
List<ProductVO> productVOS = new ArrayList<ProductVO>();
if (CollectionUtils.isNotEmpty(orderBean.getProductList())) {
orderBean.getProductList().forEach(orderProductBean -> {
ProductVO productBean = new ProductVO();
productBean.setId(orderProductBean.getProductId());
productBean.setQuantity(BigDecimal.valueOf(orderProductBean.getNumber()));
productBean.setSeq(orderProductBean.getSequence());
productBean.setSalesType("NORMAL");
productBean.setPrice(orderProductBean.getPrice());
productBean.setName(orderProductBean.getProductName());
productVOS.add(productBean);
});
}
orderPayDto.setProducts(productVOS);
orderPayDto.setPayCode(paymentRequest.getPayCode());
orderPayDto.setFoodOrderType(getFoodOrderType(orderBean.getOrderType()));
List<PayPlatformVO> platforms = new ArrayList<>();
if (null != orderPayItemCreateReqList && orderPayItemCreateReqList.size() > 0) {
orderPayItemCreateReqList.forEach(OrderPayItem -> {
PayPlatformVO payPlatformVO = new PayPlatformVO();
payPlatformVO.setAmount(OrderPayItem.getPayAmount().longValue());
payPlatformVO.setEbcode(getEbCode4PayOrderCenter(OrderPayItem.getPayChannelType()));
platforms.add(payPlatformVO);
});
}
orderPayDto.setPlatforms(platforms);
orderPayDto.setOutOrderNo(orderBean.getOid());
return orderPayDto;
}
///**
// * 支付信息转换
// */
//public UnifiedOrderApplicationRequest convent2CombPayOrderRequest(List<OrderPayItemCreateReq> orderPayItemCreateReqList, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, Long amount, Integer cardAmount, String partnerPayOvertime) {
// UnifiedOrderApplicationRequest orderPayDto = new UnifiedOrderApplicationRequest();
// orderPayDto.setEbCode(paymentRequest.getPayCode());
// orderPayDto.setPartnerId(orderBean.getCompanyId());
// orderPayDto.setBody(paymentRequest.getPrincipalName());
// orderPayDto.setNotifyUrl(paymentRequest.getReverseNotifyiDcUrl());
// orderPayDto.setStoreId(orderBean.getShopId());
// orderPayDto.setOpenId(paymentRequest.getOpenId());
// String businessDate = com.freemud.application.sdk.api.util.DateUtil.convert2String(new Date(), "yyyyMMdd");
// orderPayDto.setBusinessDate(businessDate);
// orderPayDto.setAmount(amount);
// orderPayDto.setUndisAmount(1L);
// orderPayDto.setVipAmount(Long.valueOf(cardAmount));
// orderPayDto.setAppId(paymentRequest.getWxAppId());
// orderPayDto.setPayTimeOutTime(StringUtils.defaultIfBlank(partnerPayOvertime, "30"));
// List<ProductVO> productVOS = new ArrayList<ProductVO>();
// if (CollectionUtils.isNotEmpty(orderBean.getProductList())) {
// orderBean.getProductList().forEach(orderProductBean -> {
// ProductVO productBean = new ProductVO();
// productBean.setId(orderProductBean.getProductId());
// productBean.setQuantity(BigDecimal.valueOf(orderProductBean.getNumber()));
// productBean.setSeq(orderProductBean.getSequence());
// productBean.setSalesType("NORMAL");
// productBean.setPrice(orderProductBean.getPrice());
// productBean.setName(orderProductBean.getProductName());
// productVOS.add(productBean);
// });
// }
// orderPayDto.setProducts(productVOS);
// orderPayDto.setPayCode(paymentRequest.getPayCode());
// orderPayDto.setFoodOrderType(getFoodOrderType(orderBean.getOrderType()));
// List<PayPlatformVO> platforms = new ArrayList<>();
// if (null != orderPayItemCreateReqList && orderPayItemCreateReqList.size() > 0) {
// orderPayItemCreateReqList.forEach(OrderPayItem -> {
// PayPlatformVO payPlatformVO = new PayPlatformVO();
// payPlatformVO.setAmount(OrderPayItem.getPayAmount().longValue());
// payPlatformVO.setEbcode(getEbCode4PayOrderCenter(OrderPayItem.getPayChannelType()));
// platforms.add(payPlatformVO);
// });
// }
// orderPayDto.setPlatforms(platforms);
// orderPayDto.setOutOrderNo(orderBean.getOid());
// return orderPayDto;
//}
public OrderPayResponse convent2OrderCombPayResponse(UnifiedOrderApiResponse unifiedOrderResponse) {
OrderPayResponse responseDto = new OrderPayResponse();
......
......@@ -34,8 +34,6 @@ import java.util.List;
@Data
public class CreateOrderVo {
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
......
......@@ -322,8 +322,6 @@ public class OrderServiceImpl implements Orderservice {
ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrder.getShoppingCartGoodsDto(createOrderVo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
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);
//1.9.2套餐需求同步优化创建订单代码
......@@ -385,14 +383,14 @@ public class OrderServiceImpl implements Orderservice {
log.info("paymentQueueService.paymentCallback" + dto + " error" + e);
}
}
/**
* 获取预支付成功,将信息放入死心队列,当支付成功没有回掉的时候处理
*
* @param partnerId
* @param storeId
* @param fmId
* @param orderId
*/
///**
// * 获取预支付成功,将信息放入死心队列,当支付成功没有回掉的时候处理
// *
// * @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 {
......@@ -3125,80 +3123,80 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(responses.getData());
}
/**
* 创建预支付订单
*/
public BaseResponse createCombpayOrder(CreatePrepayRequestDto createPrepayRequestDto) {
CreateOrderResponseVo createOrderResponse;
OrderPayResponse orderPayResponse = null;
PaymentRequest paymentRequest = orderBodyConvertToPaymentBody(createPrepayRequestDto.getOpenId(), createPrepayRequestDto.getPartnerId(), createPrepayRequestDto.getWxAppId(), createPrepayRequestDto.getPayCode());
long totalAmount = createPrepayRequestDto.getTotalAmount();
String cardCode = createPrepayRequestDto.getCardCode();
if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
}else{
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = comPayOrder(createPrepayRequestDto.getOrderPayItemCreateReqList(),createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(),createPrepayRequestDto.getCardAmount(),partnerPayOvertime);
}
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);
}
// 推荐优惠插件用户下单数据上报
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);
}
}
public OrderPayResponse comPayOrder(List<OrderPayItemCreateReq> orderPayItemCreateReqList, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String partnerPayOvertime) {
OrderPayResponse orderPayResponse;
try {
//微信或者支付宝支付
UnifiedOrderApplicationRequest request = orderAdapter.convent2CombPayOrderRequest(orderPayItemCreateReqList,orderBean, paymentRequest, orderBean.getAmount(), cardAmount, partnerPayOvertime);
UnifiedOrderApiResponse responseBase = paymentApplicationClient.unifiedOrder(request,orderBean.getCompanyId());
if (!ResponseCodeConstant.RESPONSE_SUCCESS.equals(responseBase.getCode())) {
log.error("混合支付返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase));
orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg(responseBase.getMessage());
} else {
putDelMq(request.getPartnerId(), request.getStoreId(), responseBase.getFmTradeNo(), orderBean.getOid());
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(responseBase);
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
}
} catch (Exception e) {
LogUtil.error("comPay_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(paymentRequest));
//TODO 邮件告警
orderPayResponse = new OrderPayResponse();
orderPayResponse.setMsg("comPay_error");
}
return orderPayResponse;
}
///**
// * 创建预支付订单
// */
//public BaseResponse createCombpayOrder(CreatePrepayRequestDto createPrepayRequestDto) {
// CreateOrderResponseVo createOrderResponse;
// OrderPayResponse orderPayResponse = null;
// PaymentRequest paymentRequest = orderBodyConvertToPaymentBody(createPrepayRequestDto.getOpenId(), createPrepayRequestDto.getPartnerId(), createPrepayRequestDto.getWxAppId(), createPrepayRequestDto.getPayCode());
// long totalAmount = createPrepayRequestDto.getTotalAmount();
// String cardCode = createPrepayRequestDto.getCardCode();
// if (totalAmount < 0) {
// throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
// }else{
// String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
// orderPayResponse = comPayOrder(createPrepayRequestDto.getOrderPayItemCreateReqList(),createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(),createPrepayRequestDto.getCardAmount(),partnerPayOvertime);
// }
// 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);
// }
// // 推荐优惠插件用户下单数据上报
// 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);
// }
//}
//
//public OrderPayResponse comPayOrder(List<OrderPayItemCreateReq> orderPayItemCreateReqList, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String partnerPayOvertime) {
//
// OrderPayResponse orderPayResponse;
// try {
// //微信或者支付宝支付
// UnifiedOrderApplicationRequest request = orderAdapter.convent2CombPayOrderRequest(orderPayItemCreateReqList,orderBean, paymentRequest, orderBean.getAmount(), cardAmount, partnerPayOvertime);
// UnifiedOrderApiResponse responseBase = paymentApplicationClient.unifiedOrder(request,orderBean.getCompanyId());
// if (!ResponseCodeConstant.RESPONSE_SUCCESS.equals(responseBase.getCode())) {
// log.error("混合支付返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase));
// orderPayResponse = new OrderPayResponse();
// orderPayResponse.setMsg(responseBase.getMessage());
// } else {
// putDelMq(request.getPartnerId(), request.getStoreId(), responseBase.getFmTradeNo(), orderBean.getOid());
// orderPayResponse = orderAdapter.convent2OrderCombPayResponse(responseBase);
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// orderPayResponse.setOrderId(orderBean.getOid());
// }
// } catch (Exception e) {
// LogUtil.error("comPay_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(paymentRequest));
// //TODO 邮件告警
// orderPayResponse = new OrderPayResponse();
// orderPayResponse.setMsg("comPay_error");
// }
// return orderPayResponse;
//}
public String getMealCodeRule(String appId){
String mealCodeRule = "";
......
......@@ -8,7 +8,7 @@
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>1.5.2-SNAPSHOT</version>
<version>1.6.2-SNAPSHOT</version>
<artifactId>ordercenter-sdk</artifactId>
<dependencies>
......
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