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