| @@ -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<WxProfitSharingReceiver> merList = wxProfitSharingReceiverMapper.findList(receiver); | |||
| if (merList.size() > 0) { | |||
| isShare = true; | |||
| } else { | |||
| isShare = false; | |||
| } | |||
| } | |||
| // 2. check 是否有支付订单 | |||
| Date currentDate = new Date(); | |||
| List<WxPayOrder> 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<String, String> payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); | |||
| if(payAccount.isShare()) { | |||
| if(isShare) { | |||
| payOrderMap.put("profit_sharing", "Y"); | |||
| } | |||
| wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); | |||