| | |
| | | import com.taoke.autopay.exception.WxOrderCountException; |
| | | import com.taoke.autopay.factory.OrderFactory; |
| | | import com.taoke.autopay.manager.OrderPayFailProcessor; |
| | | import com.taoke.autopay.manager.PayCountVerifyManager; |
| | | import com.taoke.autopay.service.*; |
| | | import com.taoke.autopay.utils.*; |
| | | import com.taoke.autopay.utils.order.DYOrderApi; |
| | |
| | | |
| | | @Resource |
| | | private UserSettingService userSettingService; |
| | | |
| | | @Resource |
| | | private PayCountVerifyManager payCountVerifyManager; |
| | | |
| | | |
| | | @ResponseBody |
| | |
| | | @ResponseBody |
| | | @RequestMapping("setOrderNoV2") |
| | | public String setOrderNoV2(AcceptData acceptData, String id, String orderNoDesc, String orderStatus, String money) { |
| | | loggerPay.info("setOrderNo: {}-{}-{}-{}", id, orderNoDesc, orderStatus, money); |
| | | loggerPay.info("setOrderNo[{}]: {}-{}-{}-{}", acceptData.getUid(), id, orderNoDesc, orderStatus, money); |
| | | if (StringUtil.isNullOrEmpty(id)) { |
| | | return JsonUtil.loadFalseResult("请上传id"); |
| | | } |
| | |
| | | |
| | | OrderChannelEnum orderChannel = null; |
| | | if (dyOrderDto != null) { |
| | | orderChannel =OrderChannelUtil.getChannelByKey(dyOrderDto.getOrderChannel()); |
| | | }else{ |
| | | orderChannel = OrderChannelUtil.getChannelByKey(dyOrderDto.getOrderChannel()); |
| | | } else { |
| | | orderChannel = OrderChannelEnum.unknown; |
| | | } |
| | | |
| | | // 验证渠道支付次数是否达到上限 |
| | | // 验证渠道支付次数是否达到上限 |
| | | if (order.getUid() != null) { |
| | | long todayCount = wxUserOrderCountService.sum(order.getUid(), null,orderChannel, TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT)); |
| | | long totalCount = wxUserOrderCountService.sum(order.getUid(), null,orderChannel,null); |
| | | int maxPayCount = userSettingService.getLimitCountByTotalCount(totalCount, orderChannel); |
| | | if(todayCount>=maxPayCount){ |
| | | throw new Exception( String.format("老铁今日已达支付次数(%s)上限:%s" ,orderChannel.getName(), maxPayCount)); |
| | | } |
| | | payCountVerifyManager.verifyPayCount(order.getUid(), orderType, orderChannel); |
| | | } |
| | | |
| | | // 设置进入 |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @author hxh |
| | | * @description 设置商家是否可支付 |
| | | * @date 1:26 2025/2/8 |
| | | * @param: acceptData |
| | | * @param: id |
| | | * @param: merchant |
| | | * @return java.lang.String |
| | | **/ |
| | | |
| | | @ResponseBody |
| | | @RequestMapping("isMerchantCanPay") |
| | | public String isMerchantCanPay(AcceptData acceptData, String id, String merchant) { |
| | | loggerPay.info("isMerchantCanPay: {}-{}", id, merchant); |
| | | loggerPay.info("isMerchantCanPay[{}]: {}-{}", acceptData.getUid(), id, merchant); |
| | | // 判断是否为卡金额 |
| | | KeyOrder keyOrder = keyOrderService.selectById(id); |
| | | if (keyOrder == null) { |
| | |
| | | } |
| | | OrderChannelEnum orderChannel = OrderChannelUtil.getChannelByKey(keyOrder.getOrderChannel()); |
| | | if (orderChannel != OrderChannelEnum.unknown) { |
| | | // 不是卡金额的订单可直接支付 |
| | | // 确定渠道的订单可直接支付 |
| | | return JsonUtil.loadTrueResult(""); |
| | | } |
| | | |
| | | // 获取卡金额的设置信息 |
| | | PayMoneySetting payMoneySetting = payMoneySettingService.getSettingByMoney(keyOrder.getOrderMoney()); |
| | | if(payMoneySetting == null){ |
| | | return JsonUtil.loadFalseResult("该金额不属于卡金额范围"); |
| | | PayMoneySetting payMoneySetting = payMoneySettingService.getSettingByMoney(keyOrder.getOrderMoney()); |
| | | if (payMoneySetting == null) { |
| | | keyOrderService.rejectPay(keyOrder.getId(),"付款金额不属于卡金额范围"); |
| | | return JsonUtil.loadFalseResult("付款金额不属于卡金额范围"); |
| | | } |
| | | if(payMoneySetting.getVerifyMerchantChannel()==null||payMoneySetting.getVerifyMerchantChannel()==OrderChannelEnum.unknown){ |
| | | if (payMoneySetting.getVerifyMerchantChannel() == null || payMoneySetting.getVerifyMerchantChannel() == OrderChannelEnum.unknown) { |
| | | // 没有设置校验渠道 |
| | | return JsonUtil.loadTrueResult(""); |
| | | } |
| | | |
| | | try { |
| | | // 目前只判断超享佣 |
| | | boolean isCanPay = OrderChannelApiUtil.isMerchantCanPay(payMoneySetting.getVerifyMerchantChannel(), merchant); |
| | | if(isCanPay){ |
| | | boolean isCanPay = OrderChannelApiUtil.isMerchantCanPay(payMoneySetting.getVerifyMerchantChannel(), merchant, keyOrder.getOrderMoney()); |
| | | if (isCanPay) { |
| | | // 通过商家校验 |
| | | try { |
| | | payCountVerifyManager.verifyPayCount(keyOrder.getUid(), keyOrder.getOrderType(), payMoneySetting.getVerifyMerchantChannel()); |
| | | }catch (KeyOrderException ee){ |
| | | // 拒绝支付 |
| | | keyOrderService.rejectPay(keyOrder.getId(), ee.getMessage()); |
| | | return JsonUtil.loadFalseResult(ee.getMessage()); |
| | | }finally { |
| | | // 更新渠道 |
| | | KeyOrder update = new KeyOrder(); |
| | | update.setId(keyOrder.getId()); |
| | | update.setOrderChannel(payMoneySetting.getVerifyMerchantChannel().getKey()); |
| | | keyOrderService.update(update); |
| | | } |
| | | return JsonUtil.loadTrueResult(""); |
| | | }else{ |
| | | } else { |
| | | // 未通过商家校验 |
| | | keyOrderService.rejectPay(keyOrder.getId(),"商家校验未通过"); |
| | | return JsonUtil.loadFalseResult("商家校验未通过"); |
| | | } |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | return JsonUtil.loadFalseResult(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @return java.lang.String |
| | | * @author hxh |
| | | * @description 是否可以执行支付 |
| | | * @date 0:22 2024/12/28 |
| | | * @param: acceptData |
| | | * @param: id |
| | | **/ |
| | | @ResponseBody |
| | | @RequestMapping("canExcutePay") |
| | | public String canExcutePay(AcceptData acceptData, String id) { |
| | | try { |
| | | KeyOrder keyOrder = keyOrderService.selectByIdForUpdate(id); |
| | | if (keyOrder == null) { |
| | | throw new Exception("订单不存在"); |
| | | } |
| | | if (keyOrder.getState() == KeyOrder.STATE_PAY) { |
| | | throw new Exception("订单已支付"); |
| | | } |
| | | loggerPay.info("canExcutePay[{}]: {}-{}", acceptData.getUid(), id, "可以支付"); |
| | | return JsonUtil.loadTrueResult(""); |
| | | } catch (Exception e) { |
| | | loggerPay.error("canExcutePay[{}]: {}-{}", acceptData.getUid(), id, "不可以支付:" + e.getMessage()); |
| | | return JsonUtil.loadFalseResult(e.getMessage()); |
| | | } |
| | | } |
| | |
| | | |
| | | @ResponseBody |
| | | @RequestMapping("setPayResult") |
| | | public String setPayResult(AcceptData acceptData, String id, boolean paySuccess, String msg,String payMerchant) { |
| | | loggerPay.info("setPayResult: {}-{}-{}-{}", id, paySuccess, msg, payMerchant); |
| | | public String setPayResult(AcceptData acceptData, String id, boolean paySuccess, String msg, String payMerchant) { |
| | | loggerPay.info("setPayResult[{}]: {}-{}-{}-{}", acceptData.getUid(), id, paySuccess, msg, payMerchant); |
| | | if (StringUtil.isNullOrEmpty(id)) { |
| | | return JsonUtil.loadFalseResult("请上传id"); |
| | | } |
| | |
| | | KeyOrder orderUpdate = new KeyOrder(); |
| | | orderUpdate.setId(id); |
| | | orderUpdate.setState(KeyOrder.STATE_NOT_PAY); |
| | | orderUpdate.setStateDesc("支付失败:"+msg); |
| | | orderUpdate.setStateDesc("支付失败:" + msg); |
| | | orderUpdate.setPayMerchant(payMerchant); |
| | | keyOrderService.update(orderUpdate); |
| | | } |
| | |
| | | |
| | | @ResponseBody |
| | | @RequestMapping("rejectPay") |
| | | public String rejectPay(AcceptData acceptData, Long uid, String id) { |
| | | loggerPay.info("rejectPay: {}-{}", uid, id); |
| | | public String rejectPay(AcceptData acceptData, String id) { |
| | | loggerPay.info("rejectPay: {}-{}", acceptData.getUid(), id); |
| | | if (StringUtil.isNullOrEmpty(id)) { |
| | | return JsonUtil.loadFalseResult("请上传id"); |
| | | } |