public function postPay(Request $request) { /* * 防止表单重复提交 * * Session 存入表单令牌 */ if (Session::get('order_submit') == $request->input('form_code')) { $mb = $request->input('mb'); if (empty($mb) || $mb == 'false') { return redirect('/order/pay?order=' . Session::get('order_code')); } else { } } else { Session::put('order_submit', $request->input('form_code')); } $user = Auth::user(); $carHand = $request->input('car_hand'); $required = null; if ($carHand == 'one') { $required = array ( 'good' => 'required', 'num' => 'required|min:1', 'car' => 'required', 'receiver' => 'required' ); } elseif ($carHand == 'second') { $required = array ( 'good' => 'required', 'num' => 'required|min:1', 'receiver' => 'required' ); } $validate = Validator::make($request->input(), $required); if ($validate->fails()) { $failed = $validate->failed(); return redirect()->back(); } //获取输入参数 $params = $request->input(); //获取商品价格 $gprice = GoodAttribsInfo::where('gid', '=', $params['good']) ->where('acode', '=', 'price') ->first(); //订单 $newOrder = [ 'code' => $this->generateOrderCode($user->id), 'uid' => $user->id, 'rid' => $params['receiver'], 'cid' => $params['car'], 'gid' => $params['good'], 'num' => $params['num'], 'sum' => $gprice->value * $params['num'], 'comment' => empty($params['comment']) ? null : $params['comment'], 'status' => 0, 'active' => 1 ]; //新建订单: $order = Order::create($newOrder); //记录用户选择的车型 $car = Car::where('uid', '=', $user->id) ->where('last_used', '=', 1) ->where('active', '=', 1) ->first(); if (!empty($car->id) && ($car->id != $params['car'])) { $car->last_used = 0; $car->save(); } Car::where('id', '=', $params['car']) ->where('active', '=', 1) ->update(['last_used' => 1]); //记录用户选择的收货地址 $receiver = ReceiverInfo::where('uid', '=', $user->id) ->where('last_used', '=', 1) ->where('active', '=', 1) ->first(); if (!empty($receiver->id) && ($receiver->id != $params['receiver'])) { $receiver->last_used = 0; $receiver->save(); } ReceiverInfo::where('id', '=', $params['receiver']) ->where('active', '=', 1) ->update(['last_used' => 1]); Session::put('order_code', $order->code); //检测优惠券是否可用 $note = $this->measureDiscount($params); $reduction = $note['reduction']; //订单最终价格 $extraFee = 0; $orderPrices = [ 'oid' => $order->id, 'orig_price' => $order->sum, 'cut_fee' => $reduction, 'extra_fee' => $extraFee, 'final_price' => ($order->sum - $reduction + $extraFee), 'active' => 1 ]; $op = OrderPrice::create($orderPrices); //记录优惠券使用信息 foreach ($note['availableBouns'] as $boun) { $bobj = Boun::where('code', '=', $boun) ->where('active', '=', 1) ->first(); if (!empty($bobj)) { OrderBoun::create([ 'oid' => $order->id, 'uid' => $user->id, 'bcode' => $boun, 'btype' => $bobj->type, 'rewarded' => 0, 'success' => 0, 'owner_id' => $bobj->uid ]); } } $good = Good::where('id', '=', $order->gid)->first(); $receiver = ReceiverInfo::where('id', '=', $order->rid)->first(); $pay_token = md5($order->id . time()); $banks = Bank::all(); $data = [ 'reduction' => $reduction, 'order' => $order, 'orderPrice' => $op, 'note' => $note, 'good' => $good, 'receiver' => $receiver, 'pay_token' => $pay_token, 'banks' => $banks, 'is_pay' => true, 'wTitle' => '订单支付' ]; $mb = $request->input('mb'); if ($mb === 'true') { $car = Car::where('id', '=', $order->cid)->first(); $data['car'] = $car; $data['step'] = 3; $data['header'] = '订单支付'; return view('mobile/minipay', $data); } else { return view('orders/pay', $data); } }