Commit 0867ba74 by xiaoer.li@freemud.com

Merge branch 'feature/fix-混合支付优化券核销' into develop

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
parents afd8fe1a b50bc507
......@@ -68,4 +68,9 @@ public class PaysuccessNoticeMessage {
* 会员规则ID
*/
private String ruleId;
/**
* 消息来源
*/
private Integer source;
}
package cn.freemud.enums;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: cn.freemud.service.thirdparty SvcClient
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/12/01
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public enum PaySuccessSource {
INSIDE(1,"内部直接调用"),
OUTSIDE(2,"外部回调");
private Integer source;
private String desc;
PaySuccessSource(Integer source,String desc) {
this.source = source;
this.desc = desc;
}
public Integer getSource() {
return source;
}
public String getDesc() {
return desc;
}
}
......@@ -170,7 +170,7 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private AssortmentCloudPrinterManager cloudPrinterManager;
// @Autowired
// @Autowired
// private OrderCommonService orderCommonService;
@Autowired
private FMAssistantCloudPrintClient fmAssistantCloudPrintClient;
......@@ -196,7 +196,7 @@ public class OrderServiceImpl implements Orderservice {
private ActivityAdapter activityAdapter;
@Autowired
private CouponAdapter couponAdapter;
// @Autowired
// @Autowired
// private ActivitySdkAdapter activitySdkAdapter;
@Autowired
private MealCacheManager mealCacheManager;
......@@ -235,7 +235,7 @@ public class OrderServiceImpl implements Orderservice {
private AssortmentOpenPlatformWxappAuthorizerManager wxappAuthorizerManager;
@Autowired
private PaymentNewClient paymentNewClient;
// @Autowired
// @Autowired
// private MallOrderServiceImpl mallOrderService;
@Autowired
private CacheOpenPlatformPartnerWxappConfigManager cacheOpenPlatformPartnerWxappConfigManager;
......@@ -266,7 +266,8 @@ public class OrderServiceImpl implements Orderservice {
@Value("${coco.partnerId}")
private String partnerId;
@Autowired
private SvcComPayClient svcComPayClient;
@Override
public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
String trackingNo = LogTreadLocal.getTrackingNo();
......@@ -529,9 +530,11 @@ public class OrderServiceImpl implements Orderservice {
}
//支付回掉成功标记
redisCache.save(RedisKeyConstant.KGD_PAYMENT_CALLBACK_FMID + message.getOut_trade_no(), message.getOut_trade_no(), 10L, TimeUnit.MINUTES);
log.info("调用券码核销==" + message.getTrans_id());
verificationCoupon(message.getTrans_id());
log.info("调用券码结束==" + message.getTrans_id());
if (message.getSource().equals(PaySuccessSource.OUTSIDE.getSource())) {
log.info("调用券码核销==" + message.getTrans_id());
verificationCoupon(message.getTrans_id());
log.info("调用券码结束=="+ message.getTrans_id());
}
return sendPaySuccessNoticeMessage();
}
......@@ -557,7 +560,6 @@ public class OrderServiceImpl implements Orderservice {
/**
* 开通会员卡
*
* @param partnerId 商户号
* @param ruleId 会员规则ID
* @param oid 订单号
......@@ -604,6 +606,7 @@ public class OrderServiceImpl implements Orderservice {
message.setPlatformMchId(newMessage.getPlatformMchId());
message.setTerminalId(newMessage.getAppId());
message.setRuleId(newMessage.getRuleId());
message.setSource(PaySuccessSource.OUTSIDE.getSource());
String res = orderAdapterService.paySuccessCallback(message);
JSONObject jsonObject = JSONObject.parseObject(res);
if (jsonObject.containsKey("code")) {
......@@ -2376,6 +2379,10 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(createOrderResponse);
} else {
//如果是商品券支付0元,调用回调接口
/**
* - 老的svc卡或是0元订单下单成功直接核销 这里不处理
* - 混合支付纯svc支付 需要直接内部核销 其他支付方式需依靠外部回调
*/
PaysuccessNoticeMessage message = new PaysuccessNoticeMessage();
message.setResult_code(100);
message.setOut_trade_no(createOrderResponse.getFmId());
......@@ -2384,6 +2391,10 @@ public class OrderServiceImpl implements Orderservice {
message.setOpenid(createPrepayRequestDto.getOpenId());
message.setPlatform_coupon(0);
message.setMerchant_coupon(0);
message.setSource(PaySuccessSource.INSIDE.getSource());
if (StringUtils.isNotBlank(orderPayResponse.getPayMode()) && PayChannelType.SVC.getEbcode().equals(orderPayResponse.getPayMode())) {
message.setSource(PaySuccessSource.OUTSIDE.getSource());
}
orderAdapterService.paySuccessCallback(message);
return ResponseUtil.success(createOrderResponse);
}
......@@ -2398,11 +2409,10 @@ public class OrderServiceImpl implements Orderservice {
, String storeId
, String trackingNo) {
boolean tigger = false;
OrderPayResponse orderPayResponse = new OrderPayResponse();
tigger = true;
boolean check = this.checkSvcComPay(orderBean.getCompanyId(), orderBean.getShopId());
//混合支付
if (tigger && StringUtils.isNotBlank(channel)) {
if (check && StringUtils.isNotBlank(channel)) {
log.info("混合支付:");
String partnerPayOvertime = this.getPartnerPayOvertime(orderBean.getCompanyId());
orderPayResponse = comPayOrder(cardCode, orderBean, paymentRequest, partnerPayOvertime, totalAmount.intValue(), channel, storeId, LogThreadLocal.getTrackingNo());
......@@ -3285,7 +3295,7 @@ public class OrderServiceImpl implements Orderservice {
OrderPayResponse orderPayResponse = new OrderPayResponse();
;
if (StringUtils.isBlank(ebCode)) {
orderPayResponse.setMsg("渠道码没有配置");
orderPayResponse.setMsg("请先联系相关人员配置商户对应的支付渠道");
return orderPayResponse;
}
......@@ -3464,5 +3474,29 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(queryCollageOrderResponseVo);
}
/**
* 获取混合支付是否开启
* @param partnerId
* @return
*/
private boolean checkSvcComPay(String partnerId,String storeId) {
SvcComPayRequestDto requestDto = new SvcComPayRequestDto();
requestDto.setPartnerId(partnerId);
requestDto.setStoreId(storeId);
SvcComPayResponseDto query = null;
for (int i=0;i<3;i++) {
query = svcComPayClient.query(requestDto);
if (query!=null) break;
}
log.info("order checkSvcComPay:{}",JSON.toJSONString(query));
if (query==null || !ResponseResult.SUCCESS.getCode().equals(query.getCode())) {
return false;
}
if (query.getResult()!=null && query.getResult().getValue()) {
return true;
}
else {
return false;
}
}
}
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