diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index 1c7b47fcd..c18ef4518 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -63,6 +63,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Autowired WxMerchantMapper wxMerchantMapper; + @Autowired + WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper; JSONObject errorMap = JSON.parseObject("{" + "\"NOAUTH\":{\"detail\":\"商户无此接口权限\",\"reason\":\"商户未开通此接口权限\",\"resolution\":\"请商户前往申请此接口权限\"}," + @@ -97,6 +99,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { public ResultData createPayOrder(boolean isReal, WxAppinfo appInfo, WxCUser user, WxPayOrder record, EnumPayWay payWay) { final IdWorker idworker = IdWorker.get(); + boolean isShare = false; + try { // 1. check 订单 WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId()); @@ -111,6 +115,21 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) { return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); } + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); + if (payAccount.isShare()) { + isShare = true; + } + // 1.5 check 分账 receive + if (isShare) { + WxProfitSharingReceiver receiver = new WxProfitSharingReceiver(); + receiver.setMerchantId(order.getMerchantId()); + List merList = wxProfitSharingReceiverMapper.findList(receiver); + if (merList.size() > 0) { + isShare = true; + } else { + isShare = false; + } + } // 2. check 是否有支付订单 Date currentDate = new Date(); List list = wxPayOrderMapper.findList(record); @@ -131,6 +150,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setPayAmount(order.getPayment()); record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode()); record.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode()); + record.setShare(isShare); int sqlRow = wxPayOrderMapper.insertSelective(record); if (sqlRow != 1) { @@ -139,10 +159,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } else { record = list.get(0); + record.setShare(isShare); payOrderNo = String.valueOf(record.getId()); } - WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); + if (isReal) { // 微信实际支付 if (payAccount.getType() == EnumPayMode.MCH.getCode()) { @@ -224,7 +245,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 wxPayOrderSP.setSign_type("HMAC-SHA256"); Map payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); - if(payAccount.isShare()) { + if(isShare) { payOrderMap.put("profit_sharing", "Y"); } wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey()));