| @@ -62,16 +62,16 @@ public class SharingOrderRedoSchedule { | |||
| if (null != list) { | |||
| list.stream().forEach(sharingOrder->{ | |||
| try { | |||
| WxPayOrder wxPayOrder = new WxPayOrder(); | |||
| wxPayOrder.updateTenantInfo(sharingOrder); | |||
| wxPayOrder.setId(sharingOrder.getOrderId()); | |||
| wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder)); | |||
| if (null == wxPayOrder) { | |||
| logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||
| + " ID:" +sharingOrder.getId() | |||
| + " RES: wxPayOrder is null." ); | |||
| } | |||
| ResultData result = wxProfitSharingOrderService.redoSharingOrder(sharingOrder,wxPayOrder); | |||
| // WxPayOrder wxPayOrder = new WxPayOrder(); | |||
| // wxPayOrder.updateTenantInfo(sharingOrder); | |||
| // wxPayOrder.setId(sharingOrder.getOrderId()); | |||
| // wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder)); | |||
| // if (null == wxPayOrder) { | |||
| // logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||
| // + " ID:" +sharingOrder.getId() | |||
| // + " RES: wxPayOrder is null." ); | |||
| // } | |||
| ResultData result = wxProfitSharingOrderService.redoSharingOrder(sharingOrder); | |||
| if (result.code != ResultData.SUCCESS) { | |||
| logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||
| + " ID:" +sharingOrder.getId() | |||
| @@ -132,36 +132,36 @@ public class SharingOrderRedoSchedule { | |||
| } | |||
| @Async | |||
| // @Scheduled(cron = "0 0 2 * * ?") // 每天凌晨02:00分账重试 | |||
| @Scheduled(cron = "0 10 */1 * * ?") // 测试 | |||
| public void sharingOrderHanderSchedule() { | |||
| List<WxMall> malls = getMalls(); | |||
| for (WxMall mall: malls) { | |||
| WxProfitSharingOrder wxProfitSharingOrder = new WxProfitSharingOrder(); | |||
| wxProfitSharingOrder.setTenantId(mall.getTenantId()); | |||
| wxProfitSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_UNKNOWN.getCode()); | |||
| List<WxProfitSharingOrder> list = wxProfitSharingOrderMapper.findList(wxProfitSharingOrder); | |||
| if (null != list) { | |||
| list.stream().forEach(sharingOrder->{ | |||
| try { | |||
| ResultData result = wxProfitSharingOrderService.handerSharingOrder(sharingOrder); | |||
| if (result.code != ResultData.SUCCESS) { | |||
| logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||
| + " ID:" +sharingOrder.getId() | |||
| + " RES:" + result.message); | |||
| } | |||
| } catch (Exception e){ | |||
| logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||
| + " ID:" +sharingOrder.getId() | |||
| + " MSG:" + e.getMessage()); | |||
| } | |||
| }); | |||
| } | |||
| } | |||
| } | |||
| // @Async | |||
| //// @Scheduled(cron = "0 0 2 * * ?") // 每天凌晨02:00分账重试 | |||
| // @Scheduled(cron = "0 10 */1 * * ?") // 测试 | |||
| // public void sharingOrderHanderSchedule() { | |||
| // List<WxMall> malls = getMalls(); | |||
| // for (WxMall mall: malls) { | |||
| // WxProfitSharingOrder wxProfitSharingOrder = new WxProfitSharingOrder(); | |||
| // wxProfitSharingOrder.setTenantId(mall.getTenantId()); | |||
| // wxProfitSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_UNKNOWN.getCode()); | |||
| // List<WxProfitSharingOrder> list = wxProfitSharingOrderMapper.findList(wxProfitSharingOrder); | |||
| // if (null != list) { | |||
| // list.stream().forEach(sharingOrder->{ | |||
| // try { | |||
| // ResultData result = wxProfitSharingOrderService.handerSharingOrder(sharingOrder); | |||
| // if (result.code != ResultData.SUCCESS) { | |||
| // logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||
| // + " ID:" +sharingOrder.getId() | |||
| // + " RES:" + result.message); | |||
| // } | |||
| // | |||
| // } catch (Exception e){ | |||
| // logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage() | |||
| // + " ID:" +sharingOrder.getId() | |||
| // + " MSG:" + e.getMessage()); | |||
| // } | |||
| // }); | |||
| // } | |||
| // | |||
| // | |||
| // } | |||
| // | |||
| // } | |||
| } | |||
| @@ -54,5 +54,5 @@ public interface WxProfitSharingOrderService { | |||
| // void updatetttttttttttttt(String tenantId); | |||
| ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder); | |||
| // ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder); | |||
| } | |||
| @@ -1718,21 +1718,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||
| } catch (Exception e) { | |||
| logger.error("核销记账失败"+e.getMessage(),e); | |||
| } | |||
| }else{ | |||
| WxProfitSharingReceiver psReceiver = payServiceFactory.getPayShareAdapterService(wxPayOrder.getPayVendor(),couponOrder.getPayVersion()) | |||
| .getReceiver(wxPayOrder,merchantId,wxPayOrder.getTtPayWay(),wxPayOrder.getMchType()); | |||
| if (psReceiver == null) { | |||
| try { | |||
| // 查询不到分账帐号,往账户里面记帐 | |||
| if (couponOrder.getCouponPrice() > 0) { | |||
| recordAfterVerified(couponOrder, merchantId); | |||
| } | |||
| } catch (Exception e) { | |||
| logger.error("核销记账失败"+e.getMessage(),e); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| WxOrder order = wxOrderService.getById(couponOrder.getOrderId(), wxPayOrder.getTenantId()); | |||
| if (null == order) { | |||
| @@ -1166,30 +1166,29 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||
| } catch (Exception e) { | |||
| logger.error("收银台结算记录失败,{}", e.getMessage()); | |||
| } | |||
| } else { | |||
| // 延迟10秒后分账 | |||
| new Thread(() -> { | |||
| TenantEntity tenantEntity = record; | |||
| Long orderId = record.getOrderId(); | |||
| Long payOrderId = record.getId(); | |||
| logger.info("收银台订单分账休眠10s: composeOrderId: {}, payOrderId: {}, {}", orderId, payOrderId, tenantEntity); | |||
| try { | |||
| Thread.currentThread().sleep(10000); | |||
| } catch (Exception e) { | |||
| logger.error("sleep error: " + e.getMessage()); | |||
| } | |||
| // 支付分账 | |||
| logger.info("收银台订单分账开始: composeOrderId: {}, payOrderId: {}", orderId, payOrderId); | |||
| try { | |||
| wxOrderService.shareForMicroPay(tenantEntity, orderId, payOrderId); | |||
| } catch (MallinkException e) { | |||
| logger.error("收银台订单分账失败: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||
| logger.error("收银台订单分账失败: " + e.getMessage()); | |||
| } | |||
| logger.info("收银台订单分账结束: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||
| }).start(); | |||
| } | |||
| // 延迟10秒后分账 | |||
| new Thread(() -> { | |||
| TenantEntity tenantEntity = record; | |||
| Long orderId = record.getOrderId(); | |||
| Long payOrderId = record.getId(); | |||
| logger.info("收银台订单分账休眠10s: composeOrderId: {}, payOrderId: {}, {}", orderId, payOrderId, tenantEntity); | |||
| try { | |||
| Thread.currentThread().sleep(10000); | |||
| } catch (Exception e) { | |||
| logger.error("sleep error: " + e.getMessage()); | |||
| } | |||
| // 支付分账 | |||
| logger.info("收银台订单分账开始: composeOrderId: {}, payOrderId: {}", orderId, payOrderId); | |||
| try { | |||
| wxOrderService.shareForMicroPay(tenantEntity, orderId, payOrderId); | |||
| } catch (MallinkException e) { | |||
| logger.error("收银台订单分账失败: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||
| logger.error("收银台订单分账失败: " + e.getMessage()); | |||
| } | |||
| logger.info("收银台订单分账结束: orderId: {}, payOrderId: {}", orderId, payOrderId); | |||
| }).start(); | |||
| } | |||
| @Override | |||
| @@ -169,6 +169,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||
| int shareAmount = wxComposeChildOrderShare.getShareAmount() - cpsCommission;//分给商户的钱 | |||
| JSONArray receivers = new JSONArray();//分账参数json | |||
| //todo | |||
| if(systemAmount > 0){ | |||
| //todo 查询系统抽点到账帐号 jsonArray.add() | |||
| } | |||
| @@ -258,11 +259,12 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||
| return new ResultData(shareResult.getData()); | |||
| } | |||
| @Override | |||
| // @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) | |||
| public ResultData createSharingOrder(WxSharingOrderDto sharingOrderDto,WxPayOrder payOrder) { | |||
| PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); | |||
| // PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); | |||
| //创建分账订单 | |||
| WxComposeChildOrderShare childOrderShare = null; | |||
| if(sharingOrderDto.getSingleOrderId() != null){ | |||
| @@ -615,15 +617,15 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ | |||
| // }); | |||
| // } | |||
| @Override | |||
| public ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder) { | |||
| WxPayOrder payOrder = wxPayOrderMapper.selectById(sharingOrder.getOrderId(), sharingOrder.getTenantId()); | |||
| if(payOrder != null && EnumPayStatus.PAY_STATUS_SUCCESS.getCode().equals(payOrder.getPayOrderStatus())){ | |||
| PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); | |||
| return payShareAdapterService.handerSharingOrder(payOrder,sharingOrder); | |||
| }else{ | |||
| return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND); | |||
| } | |||
| } | |||
| // @Override | |||
| // public ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder) { | |||
| // WxPayOrder payOrder = wxPayOrderMapper.selectById(sharingOrder.getOrderId(), sharingOrder.getTenantId()); | |||
| // if(payOrder != null && EnumPayStatus.PAY_STATUS_SUCCESS.getCode().equals(payOrder.getPayOrderStatus())){ | |||
| // PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion()); | |||
| // return payShareAdapterService.handerSharingOrder(payOrder,sharingOrder); | |||
| // }else{ | |||
| // return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND); | |||
| // } | |||
| // } | |||
| } | |||
| @@ -155,10 +155,11 @@ public class WxMiniAppPayAdapterService extends BaseWxPayV2AdapterService implem | |||
| futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); | |||
| wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 | |||
| wxPayOrderSP.setSign_type("HMAC-SHA256"); | |||
| wxPayOrderSP.setProfit_sharing(null); | |||
| if (isShare == EnumPayShare.YES) { | |||
| wxPayOrderSP.setProfit_sharing("Y"); | |||
| } | |||
| wxPayOrderSP.setProfit_sharing("Y"); | |||
| // wxPayOrderSP.setProfit_sharing(null); | |||
| // if (isShare == EnumPayShare.YES) { | |||
| // wxPayOrderSP.setProfit_sharing("Y"); | |||
| // } | |||
| Map<String, String> payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); | |||
| wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); | |||
| return wxPayOrderSP; | |||
| @@ -130,10 +130,11 @@ public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService impleme | |||
| futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000); | |||
| wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 | |||
| wxPayOrderSP.setSign_type("HMAC-SHA256"); | |||
| wxPayOrderSP.setProfit_sharing(null); | |||
| if (isShare == EnumPayShare.YES) { | |||
| wxPayOrderSP.setProfit_sharing("Y"); | |||
| } | |||
| wxPayOrderSP.setProfit_sharing("Y"); | |||
| // wxPayOrderSP.setProfit_sharing(null); | |||
| // if (isShare == EnumPayShare.YES) { | |||
| // wxPayOrderSP.setProfit_sharing("Y"); | |||
| // } | |||
| Map<String, String> payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); | |||
| wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); | |||
| return wxPayOrderSP; | |||
| @@ -52,15 +52,6 @@ public interface PayShareAdapterService { | |||
| */ | |||
| WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType); | |||
| /** | |||
| * 创建分账记录 | |||
| * @param sharingOrderDto | |||
| * @param mchType | |||
| * @param share | |||
| * @return | |||
| */ | |||
| WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder); | |||
| /** | |||
| * 无分账接收方分账 ,钱直接分给小程序方 调用API分账 | |||
| * @param appInfo | |||
| @@ -141,8 +132,4 @@ public interface PayShareAdapterService { | |||
| */ | |||
| int getOfficialCommission(WxOrder o, WxPayAccount payAccount); | |||
| ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder); | |||
| } | |||
| @@ -301,115 +301,6 @@ public class TtPayShareService extends PayShareBaseAdapterService{ | |||
| return 0; | |||
| } | |||
| @Override | |||
| public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) { | |||
| // if(!EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode().equals(sharingOrder.getType()) | |||
| // && !EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getCode().equals(sharingOrder.getType())){ | |||
| // return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"抖音暂不支持多次分账"); | |||
| // } | |||
| WxCouponOrder couponOrder = new WxCouponOrder(); | |||
| couponOrder.updateTenantInfo(payOrder); | |||
| couponOrder.setComposeOrderId(payOrder.getId()); | |||
| List<WxCouponOrder> list = wxCouponOrderMapper.findList(couponOrder); | |||
| if(list.stream().filter(co->(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode().equals(co.getCouponOrderStatus()))).count() > 0){ | |||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"存在未核销的券"); | |||
| } | |||
| if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){ | |||
| WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder(); | |||
| updSharingOrder.setId(sharingOrder.getId()); | |||
| updSharingOrder.updateTenantInfo(payOrder); | |||
| updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode()); | |||
| updSharingOrder.setErrorMsg("待分账重试"); | |||
| updSharingOrder.setUpdateTime(new Date()); | |||
| wxProfitSharingOrderMapper.updateById(updSharingOrder); | |||
| return new ResultData(); | |||
| } | |||
| if(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode().equals(sharingOrder.getType())){ | |||
| WxOrder order = new WxOrder(); | |||
| order.updateTenantInfo(payOrder); | |||
| order.setComposeOrderId(payOrder.getId()); | |||
| List<WxOrder> list1 = wxOrderMapper.findList(order); | |||
| if(list1.size() != list.size()){ | |||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"订单与卷码不匹配"); | |||
| } | |||
| if(list1.stream().filter(o->(EnumOrderCpsStatus.ORDER_DEF_CPS.getCode().equals(o.getCpsStatus()))).count() > 0){ | |||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"存在未同步cps的订单"); | |||
| } | |||
| JSONArray receivers = new JSONArray(); | |||
| Map<Long,WxCouponOrder> map = list.stream().collect(Collectors.toMap(WxCouponOrder::getOrderId, co -> co)); | |||
| for (WxOrder o:list1) { | |||
| WxCouponOrder co = map.get(o.getId()); | |||
| WxProfitSharingReceiver receiver = getReceiver(payOrder, co.getBMerchantId(), payOrder.getTtPayWay(),payOrder.getMchType()); | |||
| if(receiver != null){ | |||
| WxComposeChildOrderShare childOrderShare = payOrder.getChildOrderShare(o.getId()); | |||
| int darenTakeAmount = 0; | |||
| if(EnumOrderCpsStatus.ORDER_IS_CPS.getCode().equals(o.getCpsStatus())){ | |||
| OrderCps orderCps = orderCpsMapper.selectById(o.getId(), payOrder.getTenantId()); | |||
| darenTakeAmount = orderCps.getCommissionAmount(); | |||
| } | |||
| JSONObject jo = new JSONObject(); | |||
| jo.put("type",this.getShareAccount(receiver.getReceiverType()).getMessage()); | |||
| jo.put("account",receiver.getReceiverAccount()); | |||
| jo.put("amount", childOrderShare.getShareAmount() - darenTakeAmount); | |||
| jo.put("rateAmount", childOrderShare.getRateAmount()); | |||
| jo.put("realRateAmount", childOrderShare.getRealRateAmount()); | |||
| jo.put("commissionAmount", childOrderShare.getCommissionAmount()); | |||
| jo.put("darenTakeAmount", darenTakeAmount); | |||
| //jo.put("description",receiver.getReceiverComments()); //改为存ID, | |||
| jo.put("description",receiver.getId().toString()); //为重试做准备 | |||
| receivers.add(jo); | |||
| } | |||
| } | |||
| WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder(); | |||
| updSharingOrder.setId(sharingOrder.getId()); | |||
| updSharingOrder.updateTenantInfo(payOrder); | |||
| updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode()); | |||
| updSharingOrder.setErrorMsg("待分账重试"); | |||
| if(!receivers.isEmpty()){ | |||
| updSharingOrder.setReceivers(receivers.toJSONString()); | |||
| } | |||
| updSharingOrder.setUpdateTime(new Date()); | |||
| wxProfitSharingOrderMapper.updateById(updSharingOrder); | |||
| return new ResultData(); | |||
| } | |||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"数据异常-----end"); | |||
| } | |||
| @Override | |||
| public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder) { | |||
| WxProfitSharingOrder record = new WxProfitSharingOrder(); | |||
| record.updateTenantInfo(sharingOrderDto); | |||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||
| record = wxProfitSharingOrderMapper.selectOne(new QueryWrapper(record)); | |||
| if (record == null) { | |||
| //创建分账订单 | |||
| Date currentDate = new Date(); | |||
| record = new WxProfitSharingOrder(); | |||
| final IdWorker idworker = IdWorker.get(); | |||
| record.setId(idworker.nextId()); | |||
| record.updateTenantInfo(sharingOrderDto); | |||
| record.setTransactionId(sharingOrderDto.getTransactionId()); | |||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||
| record.setSingleOrderAmount(sharingOrderDto.getSingleOrderAmount()); | |||
| record.setPayAmount(sharingOrderDto.getPayAmount()); | |||
| record.setMerchantId(sharingOrderDto.getMerchantId()); | |||
| record.setPayMerchantId(sharingOrderDto.getPayMerchantId()); | |||
| record.setPayMerchantMchId(sharingOrderDto.getPayMerchantMchId()); | |||
| record.setSharingStatus(this.getSharingOrderInitialStatus()); | |||
| record.setCreateTime(currentDate); | |||
| record.setUpdateTime(currentDate); | |||
| record.setPayTimeStart(sharingOrderDto.getPayTimeStart()); | |||
| record.setPayTimeEnd(sharingOrderDto.getPayTimeEnd()); | |||
| record.setType(sharingOrderDto.getType()); | |||
| wxProfitSharingOrderMapper.insert(record); | |||
| } | |||
| return record; | |||
| } | |||
| @Override | |||
| public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | |||
| if(merchantId == null || merchantId.equals(0L)){ | |||
| @@ -155,24 +155,6 @@ public class WxPayShareSFTService extends PayShareBaseAdapterService{ | |||
| return 0; | |||
| } | |||
| @Override | |||
| public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账无需处理"); | |||
| } | |||
| @Override | |||
| public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder) { | |||
| if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){ | |||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信直连模式待开发"); | |||
| } | |||
| if(EnumYesOrNo.NO.getCode().equals(payOrder.getShare())){ | |||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信不分账"); | |||
| } | |||
| return null; | |||
| } | |||
| @Override | |||
| public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | |||
| return null; | |||
| @@ -344,58 +344,6 @@ public class WxPayShareService extends PayShareBaseAdapterService{ | |||
| return 0; | |||
| } | |||
| @Override | |||
| public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账无需处理"); | |||
| } | |||
| @Override | |||
| public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto,WxPayOrder payOrder) { | |||
| if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){ | |||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信支付2.0直连模式待开发"); | |||
| } | |||
| if(EnumYesOrNo.NO.getCode().equals(payOrder.getShare())){ | |||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信未开启分账"); | |||
| } | |||
| //是否已创建分账订单 | |||
| WxProfitSharingOrder record = new WxProfitSharingOrder(); | |||
| record.updateTenantInfo(sharingOrderDto); | |||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||
| record = wxProfitSharingOrderMapper.selectOne(new QueryWrapper(record)); | |||
| if (record == null) { | |||
| //创建分账订单 | |||
| Date currentDate = new Date(); | |||
| record = new WxProfitSharingOrder(); | |||
| final IdWorker idworker = IdWorker.get(); | |||
| record.setId(idworker.nextId()); | |||
| record.updateTenantInfo(sharingOrderDto); | |||
| record.setTransactionId(sharingOrderDto.getTransactionId()); | |||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||
| record.setSingleOrderAmount(sharingOrderDto.getSingleOrderAmount()); | |||
| record.setPayAmount(sharingOrderDto.getPayAmount()); | |||
| record.setMerchantId(sharingOrderDto.getMerchantId()); | |||
| record.setSharingStatus(this.getSharingOrderInitialStatus()); | |||
| record.setCreateTime(currentDate); | |||
| record.setUpdateTime(currentDate); | |||
| record.setPayTimeStart(sharingOrderDto.getPayTimeStart()); | |||
| record.setPayTimeEnd(sharingOrderDto.getPayTimeEnd()); | |||
| record.setType(sharingOrderDto.getType()); | |||
| record.setPayMerchantId(sharingOrderDto.getPayMerchantId()); | |||
| record.setPayMerchantMchId(sharingOrderDto.getPayMerchantMchId()); | |||
| wxProfitSharingOrderMapper.insert(record); | |||
| } | |||
| WxProfitSharingReceiver psReceiver = getReceiver(sharingOrderDto, sharingOrderDto.getMerchantId(), null,payOrder.getMchType()); | |||
| if (null != psReceiver) { | |||
| List<WxProfitSharingReceiver> psReceiverList = new ArrayList<WxProfitSharingReceiver>(); | |||
| psReceiverList.add(psReceiver); | |||
| record.setReceivers(calReceiversAmount(sharingOrderDto, psReceiverList)); | |||
| wxProfitSharingOrderMapper.updateById(record); | |||
| } | |||
| return record; | |||
| } | |||
| @Override | |||
| public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | |||
| @@ -75,66 +75,7 @@ public class WxPayShareV3Service extends PayShareBaseAdapterService{ | |||
| Integer realRateAmount = OrderHelper.getRealRateAmount(payAmount, payAccount); | |||
| return new PayShareCalculateAmount(payAmount,mallCharge,realRateAmount,0,systemAmount); | |||
| } | |||
| @Override | |||
| public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder) { | |||
| if(EnumYesOrNo.NO.getCode().equals(payOrder.getShare())){ | |||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账未开启"); | |||
| } | |||
| //是否已创建分账订单 | |||
| WxProfitSharingOrder record = new WxProfitSharingOrder(); | |||
| record.updateTenantInfo(sharingOrderDto); | |||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||
| record = wxProfitSharingOrderMapper.selectOne(new QueryWrapper(record)); | |||
| if (record == null) { | |||
| //创建分账订单 | |||
| Date currentDate = new Date(); | |||
| record = new WxProfitSharingOrder(); | |||
| final IdWorker idworker = IdWorker.get(); | |||
| record.setId(idworker.nextId()); | |||
| record.updateTenantInfo(sharingOrderDto); | |||
| record.setTransactionId(sharingOrderDto.getTransactionId()); | |||
| record.setOrderId(sharingOrderDto.getOrderId()); | |||
| record.setSingleOrderId(sharingOrderDto.getSingleOrderId()); | |||
| record.setSingleOrderAmount(sharingOrderDto.getSingleOrderAmount()); | |||
| record.setPayAmount(sharingOrderDto.getPayAmount()); | |||
| record.setMerchantId(sharingOrderDto.getMerchantId()); | |||
| //直连模式, | |||
| if (payOrder.getMchType() == EnumPayMchType.DIRECT.getCode()) { | |||
| if (null == sharingOrderDto.getPayMerchantId()) { | |||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"直连模式当前订单的收款商户查询为空"); | |||
| } | |||
| if (StringUtils.isBlank(sharingOrderDto.getPayMerchantMchId())) { | |||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"直连模式当前订单的收款商户特约商户号进件信息查询为空"); | |||
| } | |||
| record.setPayMerchantId(sharingOrderDto.getPayMerchantId()); | |||
| record.setPayMerchantMchId(sharingOrderDto.getPayMerchantMchId()); | |||
| } | |||
| record.setSharingStatus(this.getSharingOrderInitialStatus()); | |||
| record.setCreateTime(currentDate); | |||
| record.setUpdateTime(currentDate); | |||
| record.setPayTimeStart(sharingOrderDto.getPayTimeStart()); | |||
| record.setPayTimeEnd(sharingOrderDto.getPayTimeEnd()); | |||
| record.setType(sharingOrderDto.getType()); | |||
| wxProfitSharingOrderMapper.insert(record); | |||
| } | |||
| //总分模式 | |||
| if (payOrder.getMchType() == EnumPayMchType.TOTAL.getCode()) { | |||
| WxProfitSharingReceiver psReceiver = getReceiver(sharingOrderDto, sharingOrderDto.getMerchantId(), null,payOrder.getMchType()); | |||
| if (null != psReceiver) { | |||
| List<WxProfitSharingReceiver> psReceiverList = new ArrayList<WxProfitSharingReceiver>(); | |||
| psReceiverList.add(psReceiver); | |||
| record.setReceivers(calV3ReceiversAmount(sharingOrderDto, psReceiverList)); | |||
| wxProfitSharingOrderMapper.updateById(record); | |||
| } | |||
| //直连的方式 | |||
| }else if (payOrder.getMchType() == EnumPayMchType.DIRECT.getCode()) { | |||
| } | |||
| return record; | |||
| } | |||
| @Override | |||
| public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) { | |||
| @@ -370,10 +311,6 @@ public class WxPayShareV3Service extends PayShareBaseAdapterService{ | |||
| public int getOfficialCommission(WxOrder o, WxPayAccount payAccount) { | |||
| return 0; | |||
| } | |||
| @Override | |||
| public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账无需处理"); | |||
| } | |||
| } | |||