| | |
| | | private IFinancialService financialService; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 顺风车支付 |
| | | * @param orderId |
| | |
| | | @ApiImplicitParam(name = "orderId", value = "订单id", dataType = "int"), |
| | | @ApiImplicitParam(name = "couponId", value = "优惠券id", dataType = "int"), |
| | | }) |
| | | public Object payBalanceRide(Integer orderId,Integer couponId){ |
| | | public Object payBalanceRide(Integer orderId, Integer couponId) { |
| | | try { |
| | | OrderRide orderRide=orderRideService.selectById(orderId); |
| | | if(orderRide.getState() == 6){ |
| | | OrderRide orderRide = orderRideService.selectById(orderId); |
| | | if (orderRide.getState() == 6) { |
| | | return ApiJson.returnNG("超出支付时间,订单已自动取消"); |
| | | } |
| | | if(orderRide.getState() == 2){ |
| | | if (orderRide.getState() == 2) { |
| | | return ApiJson.returnNG("该订单已支付"); |
| | | } |
| | | orderRide.setPayTime(new Date()); |
| | | orderRide.setPayType(1);//1余额 |
| | | orderRide.setState(2);//已支付 |
| | | Double couponMoney=0d; |
| | | Integer cid=0;//优惠券id |
| | | String couponName=""; |
| | | Double couponMoney = 0d; |
| | | Integer cid = 0;//优惠券id |
| | | String couponName = ""; |
| | | /*todo 如果使用了优惠券*/ |
| | | if(couponId!= null && couponId>0){ |
| | | if (couponId != null && couponId > 0) { |
| | | // orderRide.setCouponId(couponId); |
| | | // CouponUser couponUser=couponUserService.selectById(couponId); |
| | | // if(couponUser!=null){ |
| | |
| | | // } |
| | | } |
| | | /*支付金额=订单金额-优惠券*/ |
| | | Double money=orderRide.getMoney()-couponMoney<0?0:orderRide.getMoney()-couponMoney; |
| | | Double money = orderRide.getMoney() - couponMoney < 0 ? 0 : orderRide.getMoney() - couponMoney; |
| | | //减去用户余额 |
| | | UserInfo userInfo = userInfoService.selectById(orderRide.getUserId()); |
| | | if((userInfo.getBalance() == null ?0 : userInfo.getBalance()) < money){ |
| | | if ((userInfo.getBalance() == null ? 0 : userInfo.getBalance()) < money) { |
| | | return ApiJson.returnNG("用户余额不足"); |
| | | } |
| | | if(cid>0){ |
| | | if (cid > 0) { |
| | | //todo 优惠券总额 |
| | | // Coupon coupon=couponService.selectById(cid); |
| | | // //优惠券类型(1注册、2分享、3活动、4验票) |
| | |
| | | } |
| | | orderRideService.updateById(orderRide); |
| | | //系统消息 |
| | | systemNoticeService.addSystemNotice(1, "您成功支付从"+orderRide.getStartName()+"到"+orderRide.getEndName()+"的顺风车订单", |
| | | orderRide.getUserId(),1); |
| | | systemNoticeService.addSystemNotice(1, "您成功支付从" + orderRide.getStartName() + "到" + orderRide.getEndName() + "的顺风车订单", |
| | | orderRide.getUserId(), 1); |
| | | /*修改用户余额*/ |
| | | userInfo.setBalance(userInfo.getBalance() - money); |
| | | userInfoService.updateById(userInfo); |
| | | }catch (Exception e){ |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return ApiJson.returnOK("支付成功"); |
| | |
| | | @ApiImplicitParam(name = "path", value = "前端支付很后的跳转页面", dataType = "string"), |
| | | @ApiImplicitParam(name = "ip", value = "前端支付IP地址", dataType = "string"), |
| | | }) |
| | | public Object payOnline(Integer orderId,Integer type,String code,Integer payType,Integer isBalance, |
| | | String path, String ip, HttpServletRequest request,Integer couponId){ |
| | | public Object payOnline(Integer orderId, Integer type, String code, Integer payType, Integer isBalance, |
| | | String path, String ip, HttpServletRequest request, Integer couponId) { |
| | | try { |
| | | if(orderId == null || orderId == 0){ |
| | | if (orderId == null || orderId == 0) { |
| | | return ApiJson.returnNG("订单ID不能为空"); |
| | | } |
| | | if(type == null || type == 0){ |
| | | if (type == null || type == 0) { |
| | | return ApiJson.returnNG("type不能为空"); |
| | | } |
| | | if(payType == null || payType == 0){ |
| | | if (payType == null || payType == 0) { |
| | | return ApiJson.returnNG("payType不能为空"); |
| | | } |
| | | Object info=new Object(); |
| | | String openId=null; |
| | | if(ToolUtil.isNotEmpty(code)){ |
| | | Object info = new Object(); |
| | | String openId = null; |
| | | if (ToolUtil.isNotEmpty(code)) { |
| | | /*根据微信端的code获取openId*/ |
| | | // openId=new JsapiTicketUtilX().getOpenId(code); |
| | | } |
| | | |
| | | OrderRide orderRide=orderRideService.selectById(orderId); |
| | | if(orderRide.getState()==6){ |
| | | |
| | | OrderRide orderRide = orderRideService.selectById(orderId); |
| | | if (orderRide.getState() == 6) { |
| | | return ApiJson.returnNG("该订单已取消"); |
| | | } |
| | | if(orderRide.getState()==2){//已支付 |
| | | if (orderRide.getState() == 2) {//已支付 |
| | | return ApiJson.returnNG("该订单不需要支付"); |
| | | } |
| | | Double orderMoney = orderRide.getMoney(); |
| | | if(2 == payType){ |
| | | // UserInfo userInfo = userInfoService.selectById(orderRide.getUserId()); |
| | | // if(null == orderRide.getIsCreated() || 0 == orderRide.getIsCreated()){ |
| | | // //调用中台创建订单及拉起支付接口 |
| | | // TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData(); |
| | | // tradeOrderCreateData.setTreatShopId("0"); |
| | | // tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isCompensate\":\"0\",\"isPromote\":\"0\"}"); |
| | | // tradeOrderCreateData.setCharge(new BigDecimal(orderMoney).setScale(2, RoundingMode.HALF_EVEN)); |
| | | // tradeOrderCreateData.setOrderNo("SF" + orderRide.getId()); |
| | | // tradeOrderCreateData.setCustomerId(userInfo.getOnconUUID()); |
| | | // tradeOrderCreateData.setPartnerPayId(orderRide.getZttravelId()); |
| | | // tradeOrderCreateData.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + ""); |
| | | // tradeOrderCreateData.setOrderDesc("完成订单"); |
| | | // tradeOrderCreateData.setRetUrl(path); |
| | | // tradeOrderCreateData.setClientIp(ip); |
| | | // tradeOrderCreateData.setServiceType(4); |
| | | // |
| | | // List<GoodsInfoRequest> goodsInfo = new ArrayList<>(); |
| | | // GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest(); |
| | | // goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId()); |
| | | // goodsInfoRequest.setProfitSharing("1"); |
| | | // goodsInfo.add(goodsInfoRequest); |
| | | // tradeOrderCreateData.setGoodsInfo(goodsInfo); |
| | | // TradeOrderCreate tradeOrderCreate = OrderUtil.tradeOrderCreate1(tradeOrderCreateData, 0); |
| | | // PayInfo payInfo = tradeOrderCreate.getPayInfo(); |
| | | // if(!"000000".equals(payInfo.getRetCode())){ |
| | | // return ResultUtil.error(payInfo.getRetMsg()); |
| | | // } |
| | | // orderRide.setIsCreated(1); |
| | | // orderRide.setZttravelId(tradeOrderCreate.getOrderInfo().getOrderId()); |
| | | // info = payInfo.getData().getRedirectUrl(); |
| | | // }else{ |
| | | // //拉起支付 |
| | | // TradePayOff1Data tradePayOff1Data = new TradePayOff1Data(); |
| | | // tradePayOff1Data.setPartnerPayId(orderRide.getZttravelId()); |
| | | // tradePayOff1Data.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + ""); |
| | | // tradePayOff1Data.setRetUrl(path); |
| | | // tradePayOff1Data.setClientIp(ip); |
| | | // tradePayOff1Data.setOrderDesc("完成订单"); |
| | | // List<GoodsInfoRequest> goodsInfo = new ArrayList<>(); |
| | | // GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest(); |
| | | // goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId()); |
| | | // goodsInfoRequest.setProfitSharing("1"); |
| | | // goodsInfo.add(goodsInfoRequest); |
| | | // tradePayOff1Data.setGoodsInfo(goodsInfo); |
| | | // PayInfo payInfo = OrderUtil.tradePayOff1(tradePayOff1Data, 0); |
| | | // if(!"000000".equals(payInfo.getRetCode())){ |
| | | // return ResultUtil.error(payInfo.getRetMsg()); |
| | | // } |
| | | // info = payInfo.getData().getRedirectUrl(); |
| | | // } |
| | | orderRideService.updateById(orderRide); |
| | | |
| | | //创建定时任务查询订单支付状态 |
| | | ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); |
| | | threadPoolExecutor.execute(()->{ |
| | | try { |
| | | int num = 1; |
| | | int wait = 0; |
| | | while (num <= 13) { |
| | | int min = 5000; |
| | | wait += (min * num); |
| | | OrderRide orderRide1 = orderRideService.selectById(orderRide.getId()); |
| | | if (orderRide1.getState() != 1) { |
| | | break; |
| | | } |
| | | // GetTravelItineraryListRequest request1 = new GetTravelItineraryListRequest(); |
| | | // request1.setCustomerId(userInfo.getOnconUUID()); |
| | | // request1.setOrderNo("SF" + orderRide1.getId()); |
| | | // ListPage<List<TravelItinerary>> travelItineraryList = OrderUtil.getTravelItineraryList(request1); |
| | | // TravelItinerary travelItinerary = travelItineraryList.getList().get(0); |
| | | // if(travelItinerary.getStatus() != 7 || Arrays.asList(3, 11).contains(travelItinerary.getOrderStatus())){ |
| | | // GetPaymentInfoDataRequest getPaymentInfoDataRequest1 = new GetPaymentInfoDataRequest(); |
| | | // getPaymentInfoDataRequest1.setPartnerPayId(orderRide1.getZttravelId()); |
| | | // GetPaymentInfo getPaymentInfo1 = OrderUtil.paymentInfo(getPaymentInfoDataRequest1); |
| | | // |
| | | // String trade_no = getPaymentInfo1.getPayId(); |
| | | // Financial financial = new Financial(); |
| | | // financial.setType(1);//类型 1=收入 2=支出 |
| | | // financial.setPayType("2");//支付类型 1=余额 2=微信 3=支付宝 |
| | | // financial.setMoney(orderMoney);//支付金额 |
| | | // financial.setOrderNum(orderRide1.getOrderNum());//我们本地的订单号 |
| | | // financial.setLsType(trade_no);//流水号 |
| | | // financial.setAddTime(new Date()); |
| | | // financial.setTradeStatus("success"); |
| | | // //顺风车支付 |
| | | // //修改订单表中的订单流水和支付方式 |
| | | // orderRide1.setOutNum(financial.getLsType());//流水 |
| | | // orderRide1.setPayTime(new Date()); |
| | | // orderRide1.setPayType(2); |
| | | // orderRide1.setState(2); |
| | | // financial.setPwType(8);//顺风车 |
| | | // financial.setUserId(orderRide1.getUserId()); |
| | | // financial.setLx(1);//1=用户 2=司机 |
| | | // financial.setOrderType(4);//顺风车 |
| | | // financialService.insert(financial); |
| | | // orderRideService.updateById(orderRide1); |
| | | // /*添加系统消息*/ |
| | | // try { |
| | | // systemNoticeService.addSystemNotice(1, "您成功支付从" + orderRide1.getStartName() + "到" + orderRide1.getEndName() + "的顺风车订单", orderRide1.getUserId(), 1); |
| | | // } catch (Exception e) { |
| | | // throw new RuntimeException(e); |
| | | // } |
| | | // |
| | | // break; |
| | | // } |
| | | Thread.sleep(wait); |
| | | num++; |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | }finally { |
| | | threadPoolExecutor.shutdown(); |
| | | } |
| | | |
| | | }); |
| | | }else{ |
| | | // info = new PayUtil().getPayInfo(payType,orderRide.getOrderNum(),openId,request); |
| | | } |
| | | info = new PayUtil().getPayInfo(payType, orderRide.getOrderNum(), openId, request); |
| | | return ApiJson.returnOK(info); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return ApiJson.returnNG("购票失败"); |
| | | } |
| | | |
| | | /** |
| | | * 支付宝回调 |
| | | * @return |
| | |
| | | @ResponseBody |
| | | @RequestMapping("/alipay/notify") |
| | | public void notifyUrl(HttpServletRequest request, HttpServletResponse response) { |
| | | new PayUtil().notifyUrl(request,response); |
| | | new PayUtil().notifyUrl(request, response); |
| | | } |
| | | |
| | | /** |
| | |
| | | @ResponseBody |
| | | @RequestMapping("/wxpay/notify") |
| | | public void wxnotify(HttpServletRequest request, HttpServletResponse response) { |
| | | new PayUtil().wxnotify(request,response); |
| | | new PayUtil().wxnotify(request, response); |
| | | } |
| | | } |